1 | /** |
2 | * Simple DDS data parser for compressed 2D textures. |
3 | * |
4 | * Copyright (c) 2013-2023 Sasha 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 |
202 | { |
203 | uint32_t ; |
204 | uint32_t ; |
205 | uint32_t ; |
206 | uint32_t ; |
207 | uint32_t ; |
208 | uint32_t ; |
209 | uint32_t ; |
210 | uint32_t [11]; |
211 | |
212 | DDSPixelFormat ; |
213 | |
214 | uint32_t ; |
215 | uint32_t ; |
216 | uint32_t ; |
217 | uint32_t ; |
218 | uint32_t ; |
219 | }; |
220 | |
221 | struct |
222 | { |
223 | DXGIFormat ; |
224 | D3D10ResourceDimension ; |
225 | |
226 | uint32_t ; |
227 | uint32_t ; |
228 | uint32_t ; |
229 | }; |
230 | |
231 | } // dxinfo |
232 | } // dds |
233 | |
234 | #endif // DDS_INFO_H |
235 | |