1 module aurora.directx.d3d.d3dcommon;
2 
3 public import aurora.directx.com;
4 
5 public:
6 
7 ///
8 /// Constants
9 ///
10 
11 enum int D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION = 2048;
12 enum int D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION = 4096;
13 enum int D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION = 2048;
14 enum int D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION = 4096;
15 enum int D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION = 512;
16 enum int D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION = 4096;
17 enum int D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 256;
18 enum int D3D_FL9_1_DEFAULT_MAX_ANISOTROPY = 2;
19 enum int D3D_FL9_1_IA_MAX_COUNT = 65535;
20 enum int D3D_FL9_2_IA_MAX_COUNT = 1048575;
21 enum int D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT = 1;
22 enum int D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT = 4;
23 enum int D3D_FL9_1_MAX_TEXTURE_REPEAT = 128;
24 enum int D3D_FL9_2_MAX_TEXTURE_REPEAT = 2048;
25 enum int D3D_FL9_3_MAX_TEXTURE_REPEAT = 8192;
26 
27 ///
28 /// Functions
29 ///
30 
31 ///
32 /// Enumerations
33 ///
34 
35 enum D3D_DRIVER_TYPE
36 {
37     UNKNOWN	= 0,
38     HARDWARE = ( UNKNOWN + 1 ) ,
39     REFERENCE = ( HARDWARE + 1 ) ,
40     NULL = ( REFERENCE + 1 ) ,
41     SOFTWARE = ( NULL + 1 ) ,
42     WARP = ( SOFTWARE + 1 ) 
43 }
44 
45 enum D3D_FEATURE_LEVEL
46 {
47     LEVEL_9_1	= 0x9100,
48     LEVEL_9_2	= 0x9200,
49     LEVEL_9_3	= 0x9300,
50     LEVEL_10_0	= 0xa000,
51     LEVEL_10_1	= 0xa100,
52     LEVEL_11_0	= 0xb000,
53     LEVEL_11_1	= 0xb100,
54     LEVEL_12_0	= 0xc000,
55     LEVEL_12_1	= 0xc100
56 }
57 
58 enum D3D_PRIMITIVE_TOPOLOGY
59 {
60     D3D_UNDEFINED	= 0,
61     D3D_POINTLIST	= 1,
62     D3D_LINELIST	= 2,
63     D3D_LINESTRIP	= 3,
64     D3D_TRIANGLELIST	= 4,
65     D3D_TRIANGLESTRIP	= 5,
66     D3D_LINELIST_ADJ	= 10,
67     D3D_LINESTRIP_ADJ	= 11,
68     D3D_TRIANGLELIST_ADJ	= 12,
69     D3D_TRIANGLESTRIP_ADJ	= 13,
70     D3D_1_CONTROL_POINT_PATCHLIST	= 33,
71     D3D_2_CONTROL_POINT_PATCHLIST	= 34,
72     D3D_3_CONTROL_POINT_PATCHLIST	= 35,
73     D3D_4_CONTROL_POINT_PATCHLIST	= 36,
74     D3D_5_CONTROL_POINT_PATCHLIST	= 37,
75     D3D_6_CONTROL_POINT_PATCHLIST	= 38,
76     D3D_7_CONTROL_POINT_PATCHLIST	= 39,
77     D3D_8_CONTROL_POINT_PATCHLIST	= 40,
78     D3D_9_CONTROL_POINT_PATCHLIST	= 41,
79     D3D_10_CONTROL_POINT_PATCHLIST	= 42,
80     D3D_11_CONTROL_POINT_PATCHLIST	= 43,
81     D3D_12_CONTROL_POINT_PATCHLIST	= 44,
82     D3D_13_CONTROL_POINT_PATCHLIST	= 45,
83     D3D_14_CONTROL_POINT_PATCHLIST	= 46,
84     D3D_15_CONTROL_POINT_PATCHLIST	= 47,
85     D3D_16_CONTROL_POINT_PATCHLIST	= 48,
86     D3D_17_CONTROL_POINT_PATCHLIST	= 49,
87     D3D_18_CONTROL_POINT_PATCHLIST	= 50,
88     D3D_19_CONTROL_POINT_PATCHLIST	= 51,
89     D3D_20_CONTROL_POINT_PATCHLIST	= 52,
90     D3D_21_CONTROL_POINT_PATCHLIST	= 53,
91     D3D_22_CONTROL_POINT_PATCHLIST	= 54,
92     D3D_23_CONTROL_POINT_PATCHLIST	= 55,
93     D3D_24_CONTROL_POINT_PATCHLIST	= 56,
94     D3D_25_CONTROL_POINT_PATCHLIST	= 57,
95     D3D_26_CONTROL_POINT_PATCHLIST	= 58,
96     D3D_27_CONTROL_POINT_PATCHLIST	= 59,
97     D3D_28_CONTROL_POINT_PATCHLIST	= 60,
98     D3D_29_CONTROL_POINT_PATCHLIST	= 61,
99     D3D_30_CONTROL_POINT_PATCHLIST	= 62,
100     D3D_31_CONTROL_POINT_PATCHLIST	= 63,
101     D3D_32_CONTROL_POINT_PATCHLIST	= 64,
102     D3D10_UNDEFINED	= D3D_UNDEFINED,
103     D3D10_POINTLIST	= D3D_POINTLIST,
104     D3D10_LINELIST	= D3D_LINELIST,
105     D3D10_LINESTRIP	= D3D_LINESTRIP,
106     D3D10_TRIANGLELIST	= D3D_TRIANGLELIST,
107     D3D10_TRIANGLESTRIP	= D3D_TRIANGLESTRIP,
108     D3D10_LINELIST_ADJ	= D3D_LINELIST_ADJ,
109     D3D10_LINESTRIP_ADJ	= D3D_LINESTRIP_ADJ,
110     D3D10_TRIANGLELIST_ADJ	= D3D_TRIANGLELIST_ADJ,
111     D3D10_TRIANGLESTRIP_ADJ	= D3D_TRIANGLESTRIP_ADJ,
112     D3D11_UNDEFINED	= D3D_UNDEFINED,
113     D3D11_POINTLIST	= D3D_POINTLIST,
114     D3D11_LINELIST	= D3D_LINELIST,
115     D3D11_LINESTRIP	= D3D_LINESTRIP,
116     D3D11_TRIANGLELIST	= D3D_TRIANGLELIST,
117     D3D11_TRIANGLESTRIP	= D3D_TRIANGLESTRIP,
118     D3D11_LINELIST_ADJ	= D3D_LINELIST_ADJ,
119     D3D11_LINESTRIP_ADJ	= D3D_LINESTRIP_ADJ,
120     D3D11_TRIANGLELIST_ADJ	= D3D_TRIANGLELIST_ADJ,
121     D3D11_TRIANGLESTRIP_ADJ	= D3D_TRIANGLESTRIP_ADJ,
122     D3D11_1_CONTROL_POINT_PATCHLIST	= D3D_1_CONTROL_POINT_PATCHLIST,
123     D3D11_2_CONTROL_POINT_PATCHLIST	= D3D_2_CONTROL_POINT_PATCHLIST,
124     D3D11_3_CONTROL_POINT_PATCHLIST	= D3D_3_CONTROL_POINT_PATCHLIST,
125     D3D11_4_CONTROL_POINT_PATCHLIST	= D3D_4_CONTROL_POINT_PATCHLIST,
126     D3D11_5_CONTROL_POINT_PATCHLIST	= D3D_5_CONTROL_POINT_PATCHLIST,
127     D3D11_6_CONTROL_POINT_PATCHLIST	= D3D_6_CONTROL_POINT_PATCHLIST,
128     D3D11_7_CONTROL_POINT_PATCHLIST	= D3D_7_CONTROL_POINT_PATCHLIST,
129     D3D11_8_CONTROL_POINT_PATCHLIST	= D3D_8_CONTROL_POINT_PATCHLIST,
130     D3D11_9_CONTROL_POINT_PATCHLIST	= D3D_9_CONTROL_POINT_PATCHLIST,
131     D3D11_10_CONTROL_POINT_PATCHLIST	= D3D_10_CONTROL_POINT_PATCHLIST,
132     D3D11_11_CONTROL_POINT_PATCHLIST	= D3D_11_CONTROL_POINT_PATCHLIST,
133     D3D11_12_CONTROL_POINT_PATCHLIST	= D3D_12_CONTROL_POINT_PATCHLIST,
134     D3D11_13_CONTROL_POINT_PATCHLIST	= D3D_13_CONTROL_POINT_PATCHLIST,
135     D3D11_14_CONTROL_POINT_PATCHLIST	= D3D_14_CONTROL_POINT_PATCHLIST,
136     D3D11_15_CONTROL_POINT_PATCHLIST	= D3D_15_CONTROL_POINT_PATCHLIST,
137     D3D11_16_CONTROL_POINT_PATCHLIST	= D3D_16_CONTROL_POINT_PATCHLIST,
138     D3D11_17_CONTROL_POINT_PATCHLIST	= D3D_17_CONTROL_POINT_PATCHLIST,
139     D3D11_18_CONTROL_POINT_PATCHLIST	= D3D_18_CONTROL_POINT_PATCHLIST,
140     D3D11_19_CONTROL_POINT_PATCHLIST	= D3D_19_CONTROL_POINT_PATCHLIST,
141     D3D11_20_CONTROL_POINT_PATCHLIST	= D3D_20_CONTROL_POINT_PATCHLIST,
142     D3D11_21_CONTROL_POINT_PATCHLIST	= D3D_21_CONTROL_POINT_PATCHLIST,
143     D3D11_22_CONTROL_POINT_PATCHLIST	= D3D_22_CONTROL_POINT_PATCHLIST,
144     D3D11_23_CONTROL_POINT_PATCHLIST	= D3D_23_CONTROL_POINT_PATCHLIST,
145     D3D11_24_CONTROL_POINT_PATCHLIST	= D3D_24_CONTROL_POINT_PATCHLIST,
146     D3D11_25_CONTROL_POINT_PATCHLIST	= D3D_25_CONTROL_POINT_PATCHLIST,
147     D3D11_26_CONTROL_POINT_PATCHLIST	= D3D_26_CONTROL_POINT_PATCHLIST,
148     D3D11_27_CONTROL_POINT_PATCHLIST	= D3D_27_CONTROL_POINT_PATCHLIST,
149     D3D11_28_CONTROL_POINT_PATCHLIST	= D3D_28_CONTROL_POINT_PATCHLIST,
150     D3D11_29_CONTROL_POINT_PATCHLIST	= D3D_29_CONTROL_POINT_PATCHLIST,
151     D3D11_30_CONTROL_POINT_PATCHLIST	= D3D_30_CONTROL_POINT_PATCHLIST,
152     D3D11_31_CONTROL_POINT_PATCHLIST	= D3D_31_CONTROL_POINT_PATCHLIST,
153     D3D11_32_CONTROL_POINT_PATCHLIST	= D3D_32_CONTROL_POINT_PATCHLIST
154 }
155 
156 enum D3D_PRIMITIVE
157 {
158     D3D_UNDEFINED	= 0,
159     D3D_POINT	= 1,
160     D3D_LINE	= 2,
161     D3D_TRIANGLE	= 3,
162     D3D_LINE_ADJ	= 6,
163     D3D_TRIANGLE_ADJ	= 7,
164     D3D_1_CONTROL_POINT_PATCH	= 8,
165     D3D_2_CONTROL_POINT_PATCH	= 9,
166     D3D_3_CONTROL_POINT_PATCH	= 10,
167     D3D_4_CONTROL_POINT_PATCH	= 11,
168     D3D_5_CONTROL_POINT_PATCH	= 12,
169     D3D_6_CONTROL_POINT_PATCH	= 13,
170     D3D_7_CONTROL_POINT_PATCH	= 14,
171     D3D_8_CONTROL_POINT_PATCH	= 15,
172     D3D_9_CONTROL_POINT_PATCH	= 16,
173     D3D_10_CONTROL_POINT_PATCH	= 17,
174     D3D_11_CONTROL_POINT_PATCH	= 18,
175     D3D_12_CONTROL_POINT_PATCH	= 19,
176     D3D_13_CONTROL_POINT_PATCH	= 20,
177     D3D_14_CONTROL_POINT_PATCH	= 21,
178     D3D_15_CONTROL_POINT_PATCH	= 22,
179     D3D_16_CONTROL_POINT_PATCH	= 23,
180     D3D_17_CONTROL_POINT_PATCH	= 24,
181     D3D_18_CONTROL_POINT_PATCH	= 25,
182     D3D_19_CONTROL_POINT_PATCH	= 26,
183     D3D_20_CONTROL_POINT_PATCH	= 27,
184     D3D_21_CONTROL_POINT_PATCH	= 28,
185     D3D_22_CONTROL_POINT_PATCH	= 29,
186     D3D_23_CONTROL_POINT_PATCH	= 30,
187     D3D_24_CONTROL_POINT_PATCH	= 31,
188     D3D_25_CONTROL_POINT_PATCH	= 32,
189     D3D_26_CONTROL_POINT_PATCH	= 33,
190     D3D_27_CONTROL_POINT_PATCH	= 34,
191     D3D_28_CONTROL_POINT_PATCH	= 35,
192     D3D_29_CONTROL_POINT_PATCH	= 36,
193     D3D_30_CONTROL_POINT_PATCH	= 37,
194     D3D_31_CONTROL_POINT_PATCH	= 38,
195     D3D_32_CONTROL_POINT_PATCH	= 39,
196     D3D10_UNDEFINED	= D3D_UNDEFINED,
197     D3D10_POINT	= D3D_POINT,
198     D3D10_LINE	= D3D_LINE,
199     D3D10_TRIANGLE	= D3D_TRIANGLE,
200     D3D10_LINE_ADJ	= D3D_LINE_ADJ,
201     D3D10_TRIANGLE_ADJ	= D3D_TRIANGLE_ADJ,
202     D3D11_UNDEFINED	= D3D_UNDEFINED,
203     D3D11_POINT	= D3D_POINT,
204     D3D11_LINE	= D3D_LINE,
205     D3D11_TRIANGLE	= D3D_TRIANGLE,
206     D3D11_LINE_ADJ	= D3D_LINE_ADJ,
207     D3D11_TRIANGLE_ADJ	= D3D_TRIANGLE_ADJ,
208     D3D11_1_CONTROL_POINT_PATCH	= D3D_1_CONTROL_POINT_PATCH,
209     D3D11_2_CONTROL_POINT_PATCH	= D3D_2_CONTROL_POINT_PATCH,
210     D3D11_3_CONTROL_POINT_PATCH	= D3D_3_CONTROL_POINT_PATCH,
211     D3D11_4_CONTROL_POINT_PATCH	= D3D_4_CONTROL_POINT_PATCH,
212     D3D11_5_CONTROL_POINT_PATCH	= D3D_5_CONTROL_POINT_PATCH,
213     D3D11_6_CONTROL_POINT_PATCH	= D3D_6_CONTROL_POINT_PATCH,
214     D3D11_7_CONTROL_POINT_PATCH	= D3D_7_CONTROL_POINT_PATCH,
215     D3D11_8_CONTROL_POINT_PATCH	= D3D_8_CONTROL_POINT_PATCH,
216     D3D11_9_CONTROL_POINT_PATCH	= D3D_9_CONTROL_POINT_PATCH,
217     D3D11_10_CONTROL_POINT_PATCH	= D3D_10_CONTROL_POINT_PATCH,
218     D3D11_11_CONTROL_POINT_PATCH	= D3D_11_CONTROL_POINT_PATCH,
219     D3D11_12_CONTROL_POINT_PATCH	= D3D_12_CONTROL_POINT_PATCH,
220     D3D11_13_CONTROL_POINT_PATCH	= D3D_13_CONTROL_POINT_PATCH,
221     D3D11_14_CONTROL_POINT_PATCH	= D3D_14_CONTROL_POINT_PATCH,
222     D3D11_15_CONTROL_POINT_PATCH	= D3D_15_CONTROL_POINT_PATCH,
223     D3D11_16_CONTROL_POINT_PATCH	= D3D_16_CONTROL_POINT_PATCH,
224     D3D11_17_CONTROL_POINT_PATCH	= D3D_17_CONTROL_POINT_PATCH,
225     D3D11_18_CONTROL_POINT_PATCH	= D3D_18_CONTROL_POINT_PATCH,
226     D3D11_19_CONTROL_POINT_PATCH	= D3D_19_CONTROL_POINT_PATCH,
227     D3D11_20_CONTROL_POINT_PATCH	= D3D_20_CONTROL_POINT_PATCH,
228     D3D11_21_CONTROL_POINT_PATCH	= D3D_21_CONTROL_POINT_PATCH,
229     D3D11_22_CONTROL_POINT_PATCH	= D3D_22_CONTROL_POINT_PATCH,
230     D3D11_23_CONTROL_POINT_PATCH	= D3D_23_CONTROL_POINT_PATCH,
231     D3D11_24_CONTROL_POINT_PATCH	= D3D_24_CONTROL_POINT_PATCH,
232     D3D11_25_CONTROL_POINT_PATCH	= D3D_25_CONTROL_POINT_PATCH,
233     D3D11_26_CONTROL_POINT_PATCH	= D3D_26_CONTROL_POINT_PATCH,
234     D3D11_27_CONTROL_POINT_PATCH	= D3D_27_CONTROL_POINT_PATCH,
235     D3D11_28_CONTROL_POINT_PATCH	= D3D_28_CONTROL_POINT_PATCH,
236     D3D11_29_CONTROL_POINT_PATCH	= D3D_29_CONTROL_POINT_PATCH,
237     D3D11_30_CONTROL_POINT_PATCH	= D3D_30_CONTROL_POINT_PATCH,
238     D3D11_31_CONTROL_POINT_PATCH	= D3D_31_CONTROL_POINT_PATCH,
239     D3D11_32_CONTROL_POINT_PATCH	= D3D_32_CONTROL_POINT_PATCH
240 }
241 
242 enum D3D_SRV_DIMENSION
243 {
244     D3D_UNKNOWN	= 0,
245     D3D_BUFFER	= 1,
246     D3D_TEXTURE1D	= 2,
247     D3D_TEXTURE1DARRAY	= 3,
248     D3D_TEXTURE2D	= 4,
249     D3D_TEXTURE2DARRAY	= 5,
250     D3D_TEXTURE2DMS	= 6,
251     D3D_TEXTURE2DMSARRAY	= 7,
252     D3D_TEXTURE3D	= 8,
253     D3D_TEXTURECUBE	= 9,
254     D3D_TEXTURECUBEARRAY	= 10,
255     D3D_BUFFEREX	= 11,
256     D3D10_UNKNOWN	= D3D_UNKNOWN,
257     D3D10_BUFFER	= D3D_BUFFER,
258     D3D10_TEXTURE1D	= D3D_TEXTURE1D,
259     D3D10_TEXTURE1DARRAY	= D3D_TEXTURE1DARRAY,
260     D3D10_TEXTURE2D	= D3D_TEXTURE2D,
261     D3D10_TEXTURE2DARRAY	= D3D_TEXTURE2DARRAY,
262     D3D10_TEXTURE2DMS	= D3D_TEXTURE2DMS,
263     D3D10_TEXTURE2DMSARRAY	= D3D_TEXTURE2DMSARRAY,
264     D3D10_TEXTURE3D	= D3D_TEXTURE3D,
265     D3D10_TEXTURECUBE	= D3D_TEXTURECUBE,
266     D3D10_1_UNKNOWN	= D3D_UNKNOWN,
267     D3D10_1_BUFFER	= D3D_BUFFER,
268     D3D10_1_TEXTURE1D	= D3D_TEXTURE1D,
269     D3D10_1_TEXTURE1DARRAY	= D3D_TEXTURE1DARRAY,
270     D3D10_1_TEXTURE2D	= D3D_TEXTURE2D,
271     D3D10_1_TEXTURE2DARRAY	= D3D_TEXTURE2DARRAY,
272     D3D10_1_TEXTURE2DMS	= D3D_TEXTURE2DMS,
273     D3D10_1_TEXTURE2DMSARRAY	= D3D_TEXTURE2DMSARRAY,
274     D3D10_1_TEXTURE3D	= D3D_TEXTURE3D,
275     D3D10_1_TEXTURECUBE	= D3D_TEXTURECUBE,
276     D3D10_1_TEXTURECUBEARRAY	= D3D_TEXTURECUBEARRAY,
277     D3D11_UNKNOWN	= D3D_UNKNOWN,
278     D3D11_BUFFER	= D3D_BUFFER,
279     D3D11_TEXTURE1D	= D3D_TEXTURE1D,
280     D3D11_TEXTURE1DARRAY	= D3D_TEXTURE1DARRAY,
281     D3D11_TEXTURE2D	= D3D_TEXTURE2D,
282     D3D11_TEXTURE2DARRAY	= D3D_TEXTURE2DARRAY,
283     D3D11_TEXTURE2DMS	= D3D_TEXTURE2DMS,
284     D3D11_TEXTURE2DMSARRAY	= D3D_TEXTURE2DMSARRAY,
285     D3D11_TEXTURE3D	= D3D_TEXTURE3D,
286     D3D11_TEXTURECUBE	= D3D_TEXTURECUBE,
287     D3D11_TEXTURECUBEARRAY	= D3D_TEXTURECUBEARRAY,
288     D3D11_BUFFEREX	= D3D_BUFFEREX
289 }
290 
291 enum D3D_INCLUDE_TYPE
292 {
293     D3D_LOCAL	= 0,
294     D3D_SYSTEM	= ( D3D_LOCAL + 1 ) ,
295     D3D10_LOCAL	= D3D_LOCAL,
296     D3D10_SYSTEM	= D3D_SYSTEM,
297     D3D_FORCE_DWORD	= 0x7fffffff
298 }
299 
300 enum D3D_SHADER_VARIABLE_CLASS
301 {
302     D3D_SCALAR	= 0,
303     D3D_VECTOR	= ( D3D_SCALAR + 1 ) ,
304     D3D_MATRIX_ROWS	= ( D3D_VECTOR + 1 ) ,
305     D3D_MATRIX_COLUMNS	= ( D3D_MATRIX_ROWS + 1 ) ,
306     D3D_OBJECT	= ( D3D_MATRIX_COLUMNS + 1 ) ,
307     D3D_STRUCT	= ( D3D_OBJECT + 1 ) ,
308     D3D_INTERFACE_CLASS	= ( D3D_STRUCT + 1 ) ,
309     D3D_INTERFACE_POINTER	= ( D3D_INTERFACE_CLASS + 1 ) ,
310     D3D10_SCALAR	= D3D_SCALAR,
311     D3D10_VECTOR	= D3D_VECTOR,
312     D3D10_MATRIX_ROWS	= D3D_MATRIX_ROWS,
313     D3D10_MATRIX_COLUMNS	= D3D_MATRIX_COLUMNS,
314     D3D10_OBJECT	= D3D_OBJECT,
315     D3D10_STRUCT	= D3D_STRUCT,
316     D3D11_INTERFACE_CLASS	= D3D_INTERFACE_CLASS,
317     D3D11_INTERFACE_POINTER	= D3D_INTERFACE_POINTER,
318     D3D_FORCE_DWORD	= 0x7fffffff
319 }
320 
321 enum D3D_SHADER_VARIABLE_FLAGS
322 {
323     D3D_USERPACKED	= 1,
324     D3D_USED	= 2,
325     D3D_INTERFACE_POINTER	= 4,
326     D3D_INTERFACE_PARAMETER	= 8,
327     D3D10_USERPACKED	= D3D_USERPACKED,
328     D3D10_USED	= D3D_USED,
329     D3D11_INTERFACE_POINTER	= D3D_INTERFACE_POINTER,
330     D3D11_INTERFACE_PARAMETER	= D3D_INTERFACE_PARAMETER,
331     D3D_FORCE_DWORD	= 0x7fffffff
332 }
333 
334 enum D3D_SHADER_VARIABLE_TYPE
335 {
336     D3D_VOID	= 0,
337     D3D_BOOL	= 1,
338     D3D_INT	= 2,
339     D3D_FLOAT	= 3,
340     D3D_STRING	= 4,
341     D3D_TEXTURE	= 5,
342     D3D_TEXTURE1D	= 6,
343     D3D_TEXTURE2D	= 7,
344     D3D_TEXTURE3D	= 8,
345     D3D_TEXTURECUBE	= 9,
346     D3D_SAMPLER	= 10,
347     D3D_SAMPLER1D	= 11,
348     D3D_SAMPLER2D	= 12,
349     D3D_SAMPLER3D	= 13,
350     D3D_SAMPLERCUBE	= 14,
351     D3D_PIXELSHADER	= 15,
352     D3D_VERTEXSHADER	= 16,
353     D3D_PIXELFRAGMENT	= 17,
354     D3D_VERTEXFRAGMENT	= 18,
355     D3D_UINT	= 19,
356     D3D_UINT8	= 20,
357     D3D_GEOMETRYSHADER	= 21,
358     D3D_RASTERIZER	= 22,
359     D3D_DEPTHSTENCIL	= 23,
360     D3D_BLEND	= 24,
361     D3D_BUFFER	= 25,
362     D3D_CBUFFER	= 26,
363     D3D_TBUFFER	= 27,
364     D3D_TEXTURE1DARRAY	= 28,
365     D3D_TEXTURE2DARRAY	= 29,
366     D3D_RENDERTARGETVIEW	= 30,
367     D3D_DEPTHSTENCILVIEW	= 31,
368     D3D_TEXTURE2DMS	= 32,
369     D3D_TEXTURE2DMSARRAY	= 33,
370     D3D_TEXTURECUBEARRAY	= 34,
371     D3D_HULLSHADER	= 35,
372     D3D_DOMAINSHADER	= 36,
373     D3D_INTERFACE_POINTER	= 37,
374     D3D_COMPUTESHADER	= 38,
375     D3D_DOUBLE	= 39,
376     D3D_RWTEXTURE1D	= 40,
377     D3D_RWTEXTURE1DARRAY	= 41,
378     D3D_RWTEXTURE2D	= 42,
379     D3D_RWTEXTURE2DARRAY	= 43,
380     D3D_RWTEXTURE3D	= 44,
381     D3D_RWBUFFER	= 45,
382     D3D_BYTEADDRESS_BUFFER	= 46,
383     D3D_RWBYTEADDRESS_BUFFER	= 47,
384     D3D_STRUCTURED_BUFFER	= 48,
385     D3D_RWSTRUCTURED_BUFFER	= 49,
386     D3D_APPEND_STRUCTURED_BUFFER	= 50,
387     D3D_CONSUME_STRUCTURED_BUFFER	= 51,
388     D3D_MIN8FLOAT	= 52,
389     D3D_MIN10FLOAT	= 53,
390     D3D_MIN16FLOAT	= 54,
391     D3D_MIN12INT	= 55,
392     D3D_MIN16INT	= 56,
393     D3D_MIN16UINT	= 57,
394     D3D10_VOID	= D3D_VOID,
395     D3D10_BOOL	= D3D_BOOL,
396     D3D10_INT	= D3D_INT,
397     D3D10_FLOAT	= D3D_FLOAT,
398     D3D10_STRING	= D3D_STRING,
399     D3D10_TEXTURE	= D3D_TEXTURE,
400     D3D10_TEXTURE1D	= D3D_TEXTURE1D,
401     D3D10_TEXTURE2D	= D3D_TEXTURE2D,
402     D3D10_TEXTURE3D	= D3D_TEXTURE3D,
403     D3D10_TEXTURECUBE	= D3D_TEXTURECUBE,
404     D3D10_SAMPLER	= D3D_SAMPLER,
405     D3D10_SAMPLER1D	= D3D_SAMPLER1D,
406     D3D10_SAMPLER2D	= D3D_SAMPLER2D,
407     D3D10_SAMPLER3D	= D3D_SAMPLER3D,
408     D3D10_SAMPLERCUBE	= D3D_SAMPLERCUBE,
409     D3D10_PIXELSHADER	= D3D_PIXELSHADER,
410     D3D10_VERTEXSHADER	= D3D_VERTEXSHADER,
411     D3D10_PIXELFRAGMENT	= D3D_PIXELFRAGMENT,
412     D3D10_VERTEXFRAGMENT	= D3D_VERTEXFRAGMENT,
413     D3D10_UINT	= D3D_UINT,
414     D3D10_UINT8	= D3D_UINT8,
415     D3D10_GEOMETRYSHADER	= D3D_GEOMETRYSHADER,
416     D3D10_RASTERIZER	= D3D_RASTERIZER,
417     D3D10_DEPTHSTENCIL	= D3D_DEPTHSTENCIL,
418     D3D10_BLEND	= D3D_BLEND,
419     D3D10_BUFFER	= D3D_BUFFER,
420     D3D10_CBUFFER	= D3D_CBUFFER,
421     D3D10_TBUFFER	= D3D_TBUFFER,
422     D3D10_TEXTURE1DARRAY	= D3D_TEXTURE1DARRAY,
423     D3D10_TEXTURE2DARRAY	= D3D_TEXTURE2DARRAY,
424     D3D10_RENDERTARGETVIEW	= D3D_RENDERTARGETVIEW,
425     D3D10_DEPTHSTENCILVIEW	= D3D_DEPTHSTENCILVIEW,
426     D3D10_TEXTURE2DMS	= D3D_TEXTURE2DMS,
427     D3D10_TEXTURE2DMSARRAY	= D3D_TEXTURE2DMSARRAY,
428     D3D10_TEXTURECUBEARRAY	= D3D_TEXTURECUBEARRAY,
429     D3D11_HULLSHADER	= D3D_HULLSHADER,
430     D3D11_DOMAINSHADER	= D3D_DOMAINSHADER,
431     D3D11_INTERFACE_POINTER	= D3D_INTERFACE_POINTER,
432     D3D11_COMPUTESHADER	= D3D_COMPUTESHADER,
433     D3D11_DOUBLE	= D3D_DOUBLE,
434     D3D11_RWTEXTURE1D	= D3D_RWTEXTURE1D,
435     D3D11_RWTEXTURE1DARRAY	= D3D_RWTEXTURE1DARRAY,
436     D3D11_RWTEXTURE2D	= D3D_RWTEXTURE2D,
437     D3D11_RWTEXTURE2DARRAY	= D3D_RWTEXTURE2DARRAY,
438     D3D11_RWTEXTURE3D	= D3D_RWTEXTURE3D,
439     D3D11_RWBUFFER	= D3D_RWBUFFER,
440     D3D11_BYTEADDRESS_BUFFER	= D3D_BYTEADDRESS_BUFFER,
441     D3D11_RWBYTEADDRESS_BUFFER	= D3D_RWBYTEADDRESS_BUFFER,
442     D3D11_STRUCTURED_BUFFER	= D3D_STRUCTURED_BUFFER,
443     D3D11_RWSTRUCTURED_BUFFER	= D3D_RWSTRUCTURED_BUFFER,
444     D3D11_APPEND_STRUCTURED_BUFFER	= D3D_APPEND_STRUCTURED_BUFFER,
445     D3D11_CONSUME_STRUCTURED_BUFFER	= D3D_CONSUME_STRUCTURED_BUFFER,
446     D3D_FORCE_DWORD	= 0x7fffffff
447 }
448 
449 enum D3D_SHADER_INPUT_FLAGS
450 {
451     D3D_USERPACKED	= 0x1,
452     D3D_COMPARISON_SAMPLER	= 0x2,
453     D3D_TEXTURE_COMPONENT_0	= 0x4,
454     D3D_TEXTURE_COMPONENT_1	= 0x8,
455     D3D_TEXTURE_COMPONENTS	= 0xc,
456     D3D_UNUSED	= 0x10,
457     D3D10_USERPACKED	= D3D_USERPACKED,
458     D3D10_COMPARISON_SAMPLER	= D3D_COMPARISON_SAMPLER,
459     D3D10_TEXTURE_COMPONENT_0	= D3D_TEXTURE_COMPONENT_0,
460     D3D10_TEXTURE_COMPONENT_1	= D3D_TEXTURE_COMPONENT_1,
461     D3D10_TEXTURE_COMPONENTS	= D3D_TEXTURE_COMPONENTS,
462     D3D_FORCE_DWORD	= 0x7fffffff
463 }
464 
465 enum D3D_SHADER_INPUT_TYPE
466 {
467     D3D_CBUFFER	= 0,
468     D3D_TBUFFER	= ( D3D_CBUFFER + 1 ) ,
469     D3D_TEXTURE	= ( D3D_TBUFFER + 1 ) ,
470     D3D_SAMPLER	= ( D3D_TEXTURE + 1 ) ,
471     D3D_UAV_RWTYPED	= ( D3D_SAMPLER + 1 ) ,
472     D3D_STRUCTURED	= ( D3D_UAV_RWTYPED + 1 ) ,
473     D3D_UAV_RWSTRUCTURED	= ( D3D_STRUCTURED + 1 ) ,
474     D3D_BYTEADDRESS	= ( D3D_UAV_RWSTRUCTURED + 1 ) ,
475     D3D_UAV_RWBYTEADDRESS	= ( D3D_BYTEADDRESS + 1 ) ,
476     D3D_UAV_APPEND_STRUCTURED	= ( D3D_UAV_RWBYTEADDRESS + 1 ) ,
477     D3D_UAV_CONSUME_STRUCTURED	= ( D3D_UAV_APPEND_STRUCTURED + 1 ) ,
478     D3D_UAV_RWSTRUCTURED_WITH_COUNTER	= ( D3D_UAV_CONSUME_STRUCTURED + 1 ) ,
479     D3D10_CBUFFER	= D3D_CBUFFER,
480     D3D10_TBUFFER	= D3D_TBUFFER,
481     D3D10_TEXTURE	= D3D_TEXTURE,
482     D3D10_SAMPLER	= D3D_SAMPLER,
483     D3D11_UAV_RWTYPED	= D3D_UAV_RWTYPED,
484     D3D11_STRUCTURED	= D3D_STRUCTURED,
485     D3D11_UAV_RWSTRUCTURED	= D3D_UAV_RWSTRUCTURED,
486     D3D11_BYTEADDRESS	= D3D_BYTEADDRESS,
487     D3D11_UAV_RWBYTEADDRESS	= D3D_UAV_RWBYTEADDRESS,
488     D3D11_UAV_APPEND_STRUCTURED	= D3D_UAV_APPEND_STRUCTURED,
489     D3D11_UAV_CONSUME_STRUCTURED	= D3D_UAV_CONSUME_STRUCTURED,
490     D3D11_UAV_RWSTRUCTURED_WITH_COUNTER	= D3D_UAV_RWSTRUCTURED_WITH_COUNTER
491 }
492 
493 enum D3D_SHADER_CBUFFER_FLAGS
494 {
495     D3D_USERPACKED	= 1,
496     D3D10_USERPACKED	= D3D_USERPACKED,
497     D3D_FORCE_DWORD	= 0x7fffffff
498 }
499 
500 enum D3D_CBUFFER_TYPE
501 {
502     D3D_CBUFFER	= 0,
503     D3D_TBUFFER	= ( D3D_CBUFFER + 1 ) ,
504     D3D_INTERFACE_POINTERS	= ( D3D_TBUFFER + 1 ) ,
505     D3D_RESOURCE_BIND_INFO	= ( D3D_INTERFACE_POINTERS + 1 ) ,
506     D3D10_CBUFFER	= D3D_CBUFFER,
507     D3D10_TBUFFER	= D3D_TBUFFER,
508     D3D11_CBUFFER	= D3D_CBUFFER,
509     D3D11_TBUFFER	= D3D_TBUFFER,
510     D3D11_INTERFACE_POINTERS	= D3D_INTERFACE_POINTERS,
511     D3D11_RESOURCE_BIND_INFO	= D3D_RESOURCE_BIND_INFO
512 }
513 
514 enum D3D_NAME
515 {
516     D3D_UNDEFINED	= 0,
517     D3D_POSITION	= 1,
518     D3D_CLIP_DISTANCE	= 2,
519     D3D_CULL_DISTANCE	= 3,
520     D3D_RENDER_TARGET_ARRAY_INDEX	= 4,
521     D3D_VIEWPORT_ARRAY_INDEX	= 5,
522     D3D_VERTEX_ID	= 6,
523     D3D_ID	= 7,
524     D3D_INSTANCE_ID	= 8,
525     D3D_IS_FRONT_FACE	= 9,
526     D3D_SAMPLE_INDEX	= 10,
527     D3D_FINAL_QUAD_EDGE_TESSFACTOR	= 11,
528     D3D_FINAL_QUAD_INSIDE_TESSFACTOR	= 12,
529     D3D_FINAL_TRI_EDGE_TESSFACTOR	= 13,
530     D3D_FINAL_TRI_INSIDE_TESSFACTOR	= 14,
531     D3D_FINAL_LINE_DETAIL_TESSFACTOR	= 15,
532     D3D_FINAL_LINE_DENSITY_TESSFACTOR	= 16,
533     D3D_BARYCENTRICS	= 23,
534     D3D_TARGET	= 64,
535     D3D_DEPTH	= 65,
536     D3D_COVERAGE	= 66,
537     D3D_DEPTH_GREATER_EQUAL	= 67,
538     D3D_DEPTH_LESS_EQUAL	= 68,
539     D3D_STENCIL_REF	= 69,
540     D3D_INNER_COVERAGE	= 70,
541     D3D10_UNDEFINED	= D3D_UNDEFINED,
542     D3D10_POSITION	= D3D_POSITION,
543     D3D10_CLIP_DISTANCE	= D3D_CLIP_DISTANCE,
544     D3D10_CULL_DISTANCE	= D3D_CULL_DISTANCE,
545     D3D10_RENDER_TARGET_ARRAY_INDEX	= D3D_RENDER_TARGET_ARRAY_INDEX,
546     D3D10_VIEWPORT_ARRAY_INDEX	= D3D_VIEWPORT_ARRAY_INDEX,
547     D3D10_VERTEX_ID	= D3D_VERTEX_ID,
548     D3D10_ID	= D3D_ID,
549     D3D10_INSTANCE_ID	= D3D_INSTANCE_ID,
550     D3D10_IS_FRONT_FACE	= D3D_IS_FRONT_FACE,
551     D3D10_SAMPLE_INDEX	= D3D_SAMPLE_INDEX,
552     D3D10_TARGET	= D3D_TARGET,
553     D3D10_DEPTH	= D3D_DEPTH,
554     D3D10_COVERAGE	= D3D_COVERAGE,
555     D3D11_FINAL_QUAD_EDGE_TESSFACTOR	= D3D_FINAL_QUAD_EDGE_TESSFACTOR,
556     D3D11_FINAL_QUAD_INSIDE_TESSFACTOR	= D3D_FINAL_QUAD_INSIDE_TESSFACTOR,
557     D3D11_FINAL_TRI_EDGE_TESSFACTOR	= D3D_FINAL_TRI_EDGE_TESSFACTOR,
558     D3D11_FINAL_TRI_INSIDE_TESSFACTOR	= D3D_FINAL_TRI_INSIDE_TESSFACTOR,
559     D3D11_FINAL_LINE_DETAIL_TESSFACTOR	= D3D_FINAL_LINE_DETAIL_TESSFACTOR,
560     D3D11_FINAL_LINE_DENSITY_TESSFACTOR	= D3D_FINAL_LINE_DENSITY_TESSFACTOR,
561     D3D11_DEPTH_GREATER_EQUAL	= D3D_DEPTH_GREATER_EQUAL,
562     D3D11_DEPTH_LESS_EQUAL	= D3D_DEPTH_LESS_EQUAL,
563     D3D11_STENCIL_REF	= D3D_STENCIL_REF,
564     D3D11_INNER_COVERAGE	= D3D_INNER_COVERAGE,
565     D3D12_BARYCENTRICS	= D3D_BARYCENTRICS
566 }
567 
568 enum D3D_RESOURCE_RETURN_TYPE
569 {
570     D3D_UNORM	= 1,
571     D3D_SNORM	= 2,
572     D3D_SINT	= 3,
573     D3D_UINT	= 4,
574     D3D_FLOAT	= 5,
575     D3D_MIXED	= 6,
576     D3D_DOUBLE	= 7,
577     D3D_CONTINUED	= 8,
578     D3D10_UNORM	= D3D_UNORM,
579     D3D10_SNORM	= D3D_SNORM,
580     D3D10_SINT	= D3D_SINT,
581     D3D10_UINT	= D3D_UINT,
582     D3D10_FLOAT	= D3D_FLOAT,
583     D3D10_MIXED	= D3D_MIXED,
584     D3D11_UNORM	= D3D_UNORM,
585     D3D11_SNORM	= D3D_SNORM,
586     D3D11_SINT	= D3D_SINT,
587     D3D11_UINT	= D3D_UINT,
588     D3D11_FLOAT	= D3D_FLOAT,
589     D3D11_MIXED	= D3D_MIXED,
590     D3D11_DOUBLE	= D3D_DOUBLE,
591     D3D11_CONTINUED	= D3D_CONTINUED
592 }
593 
594 enum D3D_REGISTER_COMPONENT_TYPE
595 {
596     D3D_UNKNOWN	= 0,
597     D3D_UINT32	= 1,
598     D3D_SINT32	= 2,
599     D3D_FLOAT32	= 3,
600     D3D10_UNKNOWN	= D3D_UNKNOWN,
601     D3D10_UINT32	= D3D_UINT32,
602     D3D10_SINT32	= D3D_SINT32,
603     D3D10_FLOAT32	= D3D_FLOAT32
604 }
605 
606 enum D3D_TESSELLATOR_DOMAIN
607 {
608     D3D_UNDEFINED	= 0,
609     D3D_ISOLINE	= 1,
610     D3D_TRI	= 2,
611     D3D_QUAD	= 3,
612     D3D11_UNDEFINED	= D3D_UNDEFINED,
613     D3D11_ISOLINE	= D3D_ISOLINE,
614     D3D11_TRI	= D3D_TRI,
615     D3D11_QUAD	= D3D_QUAD
616 }
617 
618 enum D3D_TESSELLATOR_PARTITIONING
619 {
620     D3D_UNDEFINED	= 0,
621     D3D_INTEGER	= 1,
622     D3D_POW2	= 2,
623     D3D_FRACTIONAL_ODD	= 3,
624     D3D_FRACTIONAL_EVEN	= 4,
625     D3D11_UNDEFINED	= D3D_UNDEFINED,
626     D3D11_INTEGER	= D3D_INTEGER,
627     D3D11_POW2	= D3D_POW2,
628     D3D11_FRACTIONAL_ODD	= D3D_FRACTIONAL_ODD,
629     D3D11_FRACTIONAL_EVEN	= D3D_FRACTIONAL_EVEN
630 }
631 
632 enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
633 {
634     D3D_UNDEFINED	= 0,
635     D3D_POINT	= 1,
636     D3D_LINE	= 2,
637     D3D_TRIANGLE_CW	= 3,
638     D3D_TRIANGLE_CCW	= 4,
639     D3D11_UNDEFINED	= D3D_UNDEFINED,
640     D3D11_POINT	= D3D_POINT,
641     D3D11_LINE	= D3D_LINE,
642     D3D11_TRIANGLE_CW	= D3D_TRIANGLE_CW,
643     D3D11_TRIANGLE_CCW	= D3D_TRIANGLE_CCW
644 }
645 
646 enum D3D_MIN_PRECISION
647 {
648     DEFAULT	= 0,
649     FLOAT_16	= 1,
650     FLOAT_2_8	= 2,
651     RESERVED	= 3,
652     SINT_16	= 4,
653     UINT_16	= 5,
654     ANY_16	= 0xf0,
655     ANY_10	= 0xf1
656 }
657 
658 enum D3D_INTERPOLATION_MODE
659 {
660     UNDEFINED = 0,
661     CONSTANT = 1,
662     LINEAR = 2,
663     LINEAR_CENTROID	= 3,
664     LINEAR_NOPERSPECTIVE = 4,
665     LINEAR_NOPERSPECTIVE_CENTROID = 5,
666     LINEAR_SAMPLE = 6,
667     LINEAR_NOPERSPECTIVE_SAMPLE	= 7
668 }
669 
670 enum D3D_PARAMETER_FLAGS
671 {
672     NONE = 0,
673     IN = 0x1,
674     OUT	= 0x2,
675     FORCE_DWORD	= 0x7fffffff
676 }
677 
678 ///
679 /// Structures
680 ///
681 
682 struct D3D_SHADER_MACRO
683 {
684     const char *Name;
685     const char *Definition;
686 }
687 
688 ///
689 /// Interfaces
690 ///
691 
692 mixin(uuid!(ID3DDestructionNotifier, "a06eb39a-50da-425b-8c31-4eecd6c270f3"));
693 public interface ID3DDestructionNotifier : IUnknown
694 {
695 extern(Windows):
696     HRESULT RegisterDestructionCallback(void* delegate(void *pData) callbackFn, void *pData, uint *pCallbackID);
697     HRESULT UnregisterDestructionCallback(uint callbackID);
698 }
699 
700 mixin(uuid!(ID3D10Blob, "8BA5FB08-5195-40e2-AC58-0D989C3A0102"));
701 public interface ID3D10Blob : IUnknown
702 {
703 extern(Windows):
704     void *GetBufferPointer();
705     size_t GetBufferSize();
706 }
707 alias ID3D10Blob ID3DBlob;
708 
709 public interface ID3DInclude : IUnknown
710 {
711 extern(Windows):
712     HRESULT Open(D3D_INCLUDE_TYPE IncludeType, const void *pFileName, const void *pParentData, const void **ppData, uint *pBytes);
713     HRESULT Close(const void *pData);
714 }
715