1 /** 2 * Simple DDS data parser for compressed 2D textures. 3 * 4 * Copyright (c) 2013-2019 Alex Szpakowski 5 * 6 * This software is provided 'as-is', without any express or implied 7 * warranty. In no event will the authors be held liable for any damages 8 * arising from the use of this software. 9 * 10 * Permission is granted to anyone to use this software for any purpose, 11 * including commercial applications, and to alter it and redistribute it 12 * freely, subject to the following restrictions: 13 * 14 * 1. The origin of this software must not be misrepresented; you must not 15 * claim that you wrote the original software. If you use this software 16 * in a product, an acknowledgment in the product documentation would be 17 * appreciated but is not required. 18 * 2. Altered source versions must be plainly marked as such, and must not be 19 * misrepresented as being the original software. 20 * 3. This notice may not be removed or altered from any source distribution. 21 * 22 * 23 * Enums and structs copied from Microsoft. 24 * http://msdn.microsoft.com/en-us/library/bb943991.aspx 25 **/ 26 27 #ifndef DDS_INFO_H 28 #define DDS_INFO_H 29 30 #include <stdint.h> 31 32 namespace dds 33 { 34 namespace dxinfo 35 { 36 37 enum DDPF 38 { 39 DDPF_ALPHAPIXELS = 0x000001, 40 DDPF_ALPHA = 0x000002, 41 DDPF_FOURCC = 0x000004, 42 DDPF_RGB = 0x000040, 43 DDPF_YUV = 0x000200, 44 DDPF_LUMINANCE = 0x020000, 45 DDPF_BUMPDUDV = 0x080000, 46 }; 47 48 enum D3D10ResourceDimension 49 { 50 D3D10_RESOURCE_DIMENSION_UNKNOWN = 0, 51 D3D10_RESOURCE_DIMENSION_BUFFER = 1, 52 D3D10_RESOURCE_DIMENSION_TEXTURE1D = 2, 53 D3D10_RESOURCE_DIMENSION_TEXTURE2D = 3, 54 D3D10_RESOURCE_DIMENSION_TEXTURE3D = 4 55 }; 56 57 enum DXGIFormat 58 { 59 DXGI_FORMAT_UNKNOWN = 0, 60 61 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1, 62 DXGI_FORMAT_R32G32B32A32_FLOAT = 2, 63 DXGI_FORMAT_R32G32B32A32_UINT = 3, 64 DXGI_FORMAT_R32G32B32A32_SINT = 4, 65 66 DXGI_FORMAT_R32G32B32_TYPELESS = 5, 67 DXGI_FORMAT_R32G32B32_FLOAT = 6, 68 DXGI_FORMAT_R32G32B32_UINT = 7, 69 DXGI_FORMAT_R32G32B32_SINT = 8, 70 71 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9, 72 DXGI_FORMAT_R16G16B16A16_FLOAT = 10, 73 DXGI_FORMAT_R16G16B16A16_UNORM = 11, 74 DXGI_FORMAT_R16G16B16A16_UINT = 12, 75 DXGI_FORMAT_R16G16B16A16_SNORM = 13, 76 DXGI_FORMAT_R16G16B16A16_SINT = 14, 77 78 DXGI_FORMAT_R32G32_TYPELESS = 15, 79 DXGI_FORMAT_R32G32_FLOAT = 16, 80 DXGI_FORMAT_R32G32_UINT = 17, 81 DXGI_FORMAT_R32G32_SINT = 18, 82 83 DXGI_FORMAT_R32G8X24_TYPELESS = 19, 84 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20, 85 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21, 86 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22, 87 88 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23, 89 DXGI_FORMAT_R10G10B10A2_UNORM = 24, 90 DXGI_FORMAT_R10G10B10A2_UINT = 25, 91 92 DXGI_FORMAT_R11G11B10_FLOAT = 26, 93 94 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27, 95 DXGI_FORMAT_R8G8B8A8_UNORM = 28, 96 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29, 97 DXGI_FORMAT_R8G8B8A8_UINT = 30, 98 DXGI_FORMAT_R8G8B8A8_SNORM = 31, 99 DXGI_FORMAT_R8G8B8A8_SINT = 32, 100 101 DXGI_FORMAT_R16G16_TYPELESS = 33, 102 DXGI_FORMAT_R16G16_FLOAT = 34, 103 DXGI_FORMAT_R16G16_UNORM = 35, 104 DXGI_FORMAT_R16G16_UINT = 36, 105 DXGI_FORMAT_R16G16_SNORM = 37, 106 DXGI_FORMAT_R16G16_SINT = 38, 107 108 DXGI_FORMAT_R32_TYPELESS = 39, 109 DXGI_FORMAT_D32_FLOAT = 40, 110 DXGI_FORMAT_R32_FLOAT = 41, 111 DXGI_FORMAT_R32_UINT = 42, 112 DXGI_FORMAT_R32_SINT = 43, 113 114 DXGI_FORMAT_R24G8_TYPELESS = 44, 115 DXGI_FORMAT_D24_UNORM_S8_UINT = 45, 116 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46, 117 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47, 118 119 DXGI_FORMAT_R8G8_TYPELESS = 48, 120 DXGI_FORMAT_R8G8_UNORM = 49, 121 DXGI_FORMAT_R8G8_UINT = 50, 122 DXGI_FORMAT_R8G8_SNORM = 51, 123 DXGI_FORMAT_R8G8_SINT = 52, 124 125 DXGI_FORMAT_R16_TYPELESS = 53, 126 DXGI_FORMAT_R16_FLOAT = 54, 127 DXGI_FORMAT_D16_UNORM = 55, 128 DXGI_FORMAT_R16_UNORM = 56, 129 DXGI_FORMAT_R16_UINT = 57, 130 DXGI_FORMAT_R16_SNORM = 58, 131 DXGI_FORMAT_R16_SINT = 59, 132 133 DXGI_FORMAT_R8_TYPELESS = 60, 134 DXGI_FORMAT_R8_UNORM = 61, 135 DXGI_FORMAT_R8_UINT = 62, 136 DXGI_FORMAT_R8_SNORM = 63, 137 DXGI_FORMAT_R8_SINT = 64, 138 DXGI_FORMAT_A8_UNORM = 65, 139 140 DXGI_FORMAT_R1_UNORM = 66, 141 142 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67, 143 144 DXGI_FORMAT_R8G8_B8G8_UNORM = 68, 145 DXGI_FORMAT_G8R8_G8B8_UNORM = 69, 146 147 DXGI_FORMAT_BC1_TYPELESS = 70, 148 DXGI_FORMAT_BC1_UNORM = 71, 149 DXGI_FORMAT_BC1_UNORM_SRGB = 72, 150 151 DXGI_FORMAT_BC2_TYPELESS = 73, 152 DXGI_FORMAT_BC2_UNORM = 74, 153 DXGI_FORMAT_BC2_UNORM_SRGB = 75, 154 155 DXGI_FORMAT_BC3_TYPELESS = 76, 156 DXGI_FORMAT_BC3_UNORM = 77, 157 DXGI_FORMAT_BC3_UNORM_SRGB = 78, 158 159 DXGI_FORMAT_BC4_TYPELESS = 79, 160 DXGI_FORMAT_BC4_UNORM = 80, 161 DXGI_FORMAT_BC4_SNORM = 81, 162 163 DXGI_FORMAT_BC5_TYPELESS = 82, 164 DXGI_FORMAT_BC5_UNORM = 83, 165 DXGI_FORMAT_BC5_SNORM = 84, 166 167 DXGI_FORMAT_B5G6R5_UNORM = 85, 168 DXGI_FORMAT_B5G5R5A1_UNORM = 86, 169 DXGI_FORMAT_B8G8R8A8_UNORM = 87, 170 DXGI_FORMAT_B8G8R8X8_UNORM = 88, 171 172 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89, 173 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90, 174 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91, 175 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92, 176 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93, 177 178 DXGI_FORMAT_BC6H_TYPELESS = 94, 179 DXGI_FORMAT_BC6H_UF16 = 95, 180 DXGI_FORMAT_BC6H_SF16 = 96, 181 182 DXGI_FORMAT_BC7_TYPELESS = 97, 183 DXGI_FORMAT_BC7_UNORM = 98, 184 DXGI_FORMAT_BC7_UNORM_SRGB = 99, 185 186 DXGI_FORMAT_FORCE_UINT = 0xffffffffUL 187 }; 188 189 struct DDSPixelFormat 190 { 191 uint32_t size; 192 uint32_t flags; 193 uint32_t fourCC; 194 uint32_t rgbBitCount; 195 uint32_t rBitMask; 196 uint32_t gBitMask; 197 uint32_t bBitMask; 198 uint32_t aBitMask; 199 }; 200 201 struct DDSHeader 202 { 203 uint32_t size; 204 uint32_t flags; 205 uint32_t height; 206 uint32_t width; 207 uint32_t pitchOrLinearSize; 208 uint32_t depth; 209 uint32_t mipMapCount; 210 uint32_t reserved[11]; 211 212 DDSPixelFormat format; 213 214 uint32_t caps1; 215 uint32_t caps2; 216 uint32_t caps3; 217 uint32_t caps4; 218 uint32_t reserved2; 219 }; 220 221 struct DDSHeader10 222 { 223 DXGIFormat dxgiFormat; 224 D3D10ResourceDimension resourceDimension; 225 226 uint32_t miscFlag; 227 uint32_t arraySize; 228 uint32_t reserved; 229 }; 230 231 } // dxinfo 232 } // dds 233 234 #endif // DDS_INFO_H 235