1 module directx.d3dcommon;
2 
3 public import directx.com;
4 
5 alias D3DCOLOR = DWORD;
6 
7 struct D3DVECTOR {
8     float x;
9     float y;
10     float z;
11 }
12 alias LPD3DVECTOR = D3DVECTOR*;
13 
14 struct D3DCOLORVALUE {
15     float r;
16     float g;
17     float b;
18     float a;
19 }
20 alias LPD3DCOLORVALUE = D3DCOLORVALUE*;
21 
22 struct D3DRECT {
23     LONG x1;
24     LONG y1;
25     LONG x2;
26     LONG y2;
27 }
28 alias LPD3DRECT = D3DRECT*;
29 
30 union D3DMATRIX {
31     struct {
32         float        _11, _12, _13, _14;
33         float        _21, _22, _23, _24;
34         float        _31, _32, _33, _34;
35         float        _41, _42, _43, _44;
36     }
37     float[4][4] m;
38 }
39 alias LPD3DMATRIX = D3DMATRIX*;
40 
41 alias D3DTRANSFORMSTATETYPE = DWORD;
42 enum : D3DTRANSFORMSTATETYPE {
43     D3DTS_VIEW          = 2,
44     D3DTS_PROJECTION    = 3,
45     D3DTS_TEXTURE0      = 16,
46     D3DTS_TEXTURE1      = 17,
47     D3DTS_TEXTURE2      = 18,
48     D3DTS_TEXTURE3      = 19,
49     D3DTS_TEXTURE4      = 20,
50     D3DTS_TEXTURE5      = 21,
51     D3DTS_TEXTURE6      = 22,
52     D3DTS_TEXTURE7      = 23
53 }
54 
55 alias D3DTEXTURESTAGESTATETYPE = DWORD;
56 enum : D3DTEXTURESTAGESTATETYPE {
57     D3DTSS_COLOROP        =  1, /* D3DTEXTUREOP - per-stage blending controls for color channels */
58     D3DTSS_COLORARG1      =  2, /* D3DTA_* (texture arg) */
59     D3DTSS_COLORARG2      =  3, /* D3DTA_* (texture arg) */
60     D3DTSS_ALPHAOP        =  4, /* D3DTEXTUREOP - per-stage blending controls for alpha channel */
61     D3DTSS_ALPHAARG1      =  5, /* D3DTA_* (texture arg) */
62     D3DTSS_ALPHAARG2      =  6, /* D3DTA_* (texture arg) */
63     D3DTSS_BUMPENVMAT00   =  7, /* float (bump mapping matrix) */
64     D3DTSS_BUMPENVMAT01   =  8, /* float (bump mapping matrix) */
65     D3DTSS_BUMPENVMAT10   =  9, /* float (bump mapping matrix) */
66     D3DTSS_BUMPENVMAT11   = 10, /* float (bump mapping matrix) */
67     D3DTSS_TEXCOORDINDEX  = 11, /* identifies which set of texture coordinates index this texture */
68     D3DTSS_BUMPENVLSCALE  = 22, /* float scale for bump map luminance */
69     D3DTSS_BUMPENVLOFFSET = 23, /* float offset for bump map luminance */
70     D3DTSS_TEXTURETRANSFORMFLAGS = 24, /* D3DTEXTURETRANSFORMFLAGS controls texture transform */
71     D3DTSS_COLORARG0      = 26, /* D3DTA_* third arg for triadic ops */
72     D3DTSS_ALPHAARG0      = 27, /* D3DTA_* third arg for triadic ops */
73     D3DTSS_RESULTARG      = 28, /* D3DTA_* arg for result (CURRENT or TEMP) */
74     D3DTSS_CONSTANT       = 32, /* Per-stage constant D3DTA_CONSTANT */
75 }
76 
77 alias D3DSTATEBLOCKTYPE = DWORD;
78 enum : D3DSTATEBLOCKTYPE {
79     D3DSBT_ALL           = 1, // capture all state
80     D3DSBT_PIXELSTATE    = 2, // capture pixel state
81     D3DSBT_VERTEXSTATE   = 3, // capture vertex state
82 }
83 
84 alias D3DRENDERSTATETYPE = DWORD;
85 enum : D3DRENDERSTATETYPE {
86     D3DRS_ZENABLE                   = 7,    /* D3DZBUFFERTYPE (or TRUE/FALSE for legacy) */
87     D3DRS_FILLMODE                  = 8,    /* D3DFILLMODE */
88     D3DRS_SHADEMODE                 = 9,    /* D3DSHADEMODE */
89     D3DRS_ZWRITEENABLE              = 14,   /* TRUE to enable z writes */
90     D3DRS_ALPHATESTENABLE           = 15,   /* TRUE to enable alpha tests */
91     D3DRS_LASTPIXEL                 = 16,   /* TRUE for last-pixel on lines */
92     D3DRS_SRCBLEND                  = 19,   /* D3DBLEND */
93     D3DRS_DESTBLEND                 = 20,   /* D3DBLEND */
94     D3DRS_CULLMODE                  = 22,   /* D3DCULL */
95     D3DRS_ZFUNC                     = 23,   /* D3DCMPFUNC */
96     D3DRS_ALPHAREF                  = 24,   /* D3DFIXED */
97     D3DRS_ALPHAFUNC                 = 25,   /* D3DCMPFUNC */
98     D3DRS_DITHERENABLE              = 26,   /* TRUE to enable dithering */
99     D3DRS_ALPHABLENDENABLE          = 27,   /* TRUE to enable alpha blending */
100     D3DRS_FOGENABLE                 = 28,   /* TRUE to enable fog blending */
101     D3DRS_SPECULARENABLE            = 29,   /* TRUE to enable specular */
102     D3DRS_FOGCOLOR                  = 34,   /* D3DCOLOR */
103     D3DRS_FOGTABLEMODE              = 35,   /* D3DFOGMODE */
104     D3DRS_FOGSTART                  = 36,   /* Fog start (for both vertex and pixel fog) */
105     D3DRS_FOGEND                    = 37,   /* Fog end      */
106     D3DRS_FOGDENSITY                = 38,   /* Fog density  */
107     D3DRS_RANGEFOGENABLE            = 48,   /* Enables range-based fog */
108     D3DRS_STENCILENABLE             = 52,   /* BOOL enable/disable stenciling */
109     D3DRS_STENCILFAIL               = 53,   /* D3DSTENCILOP to do if stencil test fails */
110     D3DRS_STENCILZFAIL              = 54,   /* D3DSTENCILOP to do if stencil test passes and Z test fails */
111     D3DRS_STENCILPASS               = 55,   /* D3DSTENCILOP to do if both stencil and Z tests pass */
112     D3DRS_STENCILFUNC               = 56,   /* D3DCMPFUNC fn.  Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true */
113     D3DRS_STENCILREF                = 57,   /* Reference value used in stencil test */
114     D3DRS_STENCILMASK               = 58,   /* Mask value used in stencil test */
115     D3DRS_STENCILWRITEMASK          = 59,   /* Write mask applied to values written to stencil buffer */
116     D3DRS_TEXTUREFACTOR             = 60,   /* D3DCOLOR used for multi-texture blend */
117     D3DRS_WRAP0                     = 128,  /* wrap for 1st texture coord. set */
118     D3DRS_WRAP1                     = 129,  /* wrap for 2nd texture coord. set */
119     D3DRS_WRAP2                     = 130,  /* wrap for 3rd texture coord. set */
120     D3DRS_WRAP3                     = 131,  /* wrap for 4th texture coord. set */
121     D3DRS_WRAP4                     = 132,  /* wrap for 5th texture coord. set */
122     D3DRS_WRAP5                     = 133,  /* wrap for 6th texture coord. set */
123     D3DRS_WRAP6                     = 134,  /* wrap for 7th texture coord. set */
124     D3DRS_WRAP7                     = 135,  /* wrap for 8th texture coord. set */
125     D3DRS_CLIPPING                  = 136,
126     D3DRS_LIGHTING                  = 137,
127     D3DRS_AMBIENT                   = 139,
128     D3DRS_FOGVERTEXMODE             = 140,
129     D3DRS_COLORVERTEX               = 141,
130     D3DRS_LOCALVIEWER               = 142,
131     D3DRS_NORMALIZENORMALS          = 143,
132     D3DRS_DIFFUSEMATERIALSOURCE     = 145,
133     D3DRS_SPECULARMATERIALSOURCE    = 146,
134     D3DRS_AMBIENTMATERIALSOURCE     = 147,
135     D3DRS_EMISSIVEMATERIALSOURCE    = 148,
136     D3DRS_VERTEXBLEND               = 151,
137     D3DRS_CLIPPLANEENABLE           = 152,
138     D3DRS_POINTSIZE                 = 154,   /* float point size */
139     D3DRS_POINTSIZE_MIN             = 155,   /* float point size min threshold */
140     D3DRS_POINTSPRITEENABLE         = 156,   /* BOOL point texture coord control */
141     D3DRS_POINTSCALEENABLE          = 157,   /* BOOL point size scale enable */
142     D3DRS_POINTSCALE_A              = 158,   /* float point attenuation A value */
143     D3DRS_POINTSCALE_B              = 159,   /* float point attenuation B value */
144     D3DRS_POINTSCALE_C              = 160,   /* float point attenuation C value */
145     D3DRS_MULTISAMPLEANTIALIAS      = 161,  // BOOL - set to do FSAA with multisample buffer
146     D3DRS_MULTISAMPLEMASK           = 162,  // DWORD - per-sample enable/disable
147     D3DRS_PATCHEDGESTYLE            = 163,  // Sets whether patch edges will use float style tessellation
148     D3DRS_DEBUGMONITORTOKEN         = 165,  // DEBUG ONLY - token to debug monitor
149     D3DRS_POINTSIZE_MAX             = 166,   /* float point size max threshold */
150     D3DRS_INDEXEDVERTEXBLENDENABLE  = 167,
151     D3DRS_COLORWRITEENABLE          = 168,  // per-channel write enable
152     D3DRS_TWEENFACTOR               = 170,   // float tween factor
153     D3DRS_BLENDOP                   = 171,   // D3DBLENDOP setting
154     D3DRS_POSITIONDEGREE            = 172,   // NPatch position interpolation degree. D3DDEGREE_LINEAR or D3DDEGREE_CUBIC (default)
155     D3DRS_NORMALDEGREE              = 173,   // NPatch normal interpolation degree. D3DDEGREE_LINEAR (default) or D3DDEGREE_QUADRATIC
156     D3DRS_SCISSORTESTENABLE         = 174,
157     D3DRS_SLOPESCALEDEPTHBIAS       = 175,
158     D3DRS_ANTIALIASEDLINEENABLE     = 176,
159     D3DRS_MINTESSELLATIONLEVEL      = 178,
160     D3DRS_MAXTESSELLATIONLEVEL      = 179,
161     D3DRS_ADAPTIVETESS_X            = 180,
162     D3DRS_ADAPTIVETESS_Y            = 181,
163     D3DRS_ADAPTIVETESS_Z            = 182,
164     D3DRS_ADAPTIVETESS_W            = 183,
165     D3DRS_ENABLEADAPTIVETESSELLATION = 184,
166     D3DRS_TWOSIDEDSTENCILMODE       = 185,   /* BOOL enable/disable 2 sided stenciling */
167     D3DRS_CCW_STENCILFAIL           = 186,   /* D3DSTENCILOP to do if ccw stencil test fails */
168     D3DRS_CCW_STENCILZFAIL          = 187,   /* D3DSTENCILOP to do if ccw stencil test passes and Z test fails */
169     D3DRS_CCW_STENCILPASS           = 188,   /* D3DSTENCILOP to do if both ccw stencil and Z tests pass */
170     D3DRS_CCW_STENCILFUNC           = 189,   /* D3DCMPFUNC fn.  ccw Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true */
171     D3DRS_COLORWRITEENABLE1         = 190,   /* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS */
172     D3DRS_COLORWRITEENABLE2         = 191,   /* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS */
173     D3DRS_COLORWRITEENABLE3         = 192,   /* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS */
174     D3DRS_BLENDFACTOR               = 193,   /* D3DCOLOR used for a constant blend factor during alpha blending for devices that support D3DPBLENDCAPS_BLENDFACTOR */
175     D3DRS_SRGBWRITEENABLE           = 194,   /* Enable rendertarget writes to be DE-linearized to SRGB (for formats that expose D3DUSAGE_QUERY_SRGBWRITE) */
176     D3DRS_DEPTHBIAS                 = 195,
177     D3DRS_WRAP8                     = 198,   /* Additional wrap states for vs_3_0+ attributes with D3DDECLUSAGE_TEXCOORD */
178     D3DRS_WRAP9                     = 199,
179     D3DRS_WRAP10                    = 200,
180     D3DRS_WRAP11                    = 201,
181     D3DRS_WRAP12                    = 202,
182     D3DRS_WRAP13                    = 203,
183     D3DRS_WRAP14                    = 204,
184     D3DRS_WRAP15                    = 205,
185     D3DRS_SEPARATEALPHABLENDENABLE  = 206,  /* TRUE to enable a separate blending function for the alpha channel */
186     D3DRS_SRCBLENDALPHA             = 207,  /* SRC blend factor for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE */
187     D3DRS_DESTBLENDALPHA            = 208,  /* DST blend factor for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE */
188     D3DRS_BLENDOPALPHA              = 209,  /* Blending operation for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE */
189 }
190 
191 alias D3DPRIMITIVETYPE = DWORD;
192 enum : D3DPRIMITIVETYPE {
193     D3DPT_POINTLIST             = 1,
194     D3DPT_LINELIST              = 2,
195     D3DPT_LINESTRIP             = 3,
196     D3DPT_TRIANGLELIST          = 4,
197     D3DPT_TRIANGLESTRIP         = 5,
198     D3DPT_TRIANGLEFAN           = 6
199 }
200 
201 alias D3DLIGHTTYPE = DWORD;
202 enum : D3DLIGHTTYPE {
203     D3DLIGHT_POINT          = 1,
204     D3DLIGHT_SPOT           = 2,
205     D3DLIGHT_DIRECTIONAL    = 3
206 }
207 
208 enum D3DADAPTER_DEFAULT = 0;
209 
210 enum {
211     D3DCLEAR_TARGET           = 0x00000001,  /* Clear target surface */
212     D3DCLEAR_ZBUFFER          = 0x00000002,  /* Clear target z buffer */
213     D3DCLEAR_STENCIL          = 0x00000004   /* Clear stencil planes */
214 }
215 
216 alias D3DDEVTYPE = DWORD;
217 enum : D3DDEVTYPE {
218     D3DDEVTYPE_HAL     = 1,
219     D3DDEVTYPE_NULLREF = 4,
220     D3DDEVTYPE_REF     = 2,
221     D3DDEVTYPE_SW      = 3
222 }
223 
224 alias D3DFORMAT = DWORD;
225 enum : D3DFORMAT {
226     D3DFMT_UNKNOWN              =  0,
227 
228     D3DFMT_R8G8B8               = 20,
229     D3DFMT_A8R8G8B8             = 21,
230     D3DFMT_X8R8G8B8             = 22,
231     D3DFMT_R5G6B5               = 23,
232     D3DFMT_X1R5G5B5             = 24,
233     D3DFMT_A1R5G5B5             = 25,
234     D3DFMT_A4R4G4B4             = 26,
235     D3DFMT_R3G3B2               = 27,
236     D3DFMT_A8                   = 28,
237     D3DFMT_A8R3G3B2             = 29,
238     D3DFMT_X4R4G4B4             = 30,
239     D3DFMT_A2B10G10R10          = 31,
240     D3DFMT_A8B8G8R8             = 32,
241     D3DFMT_X8B8G8R8             = 33,
242     D3DFMT_G16R16               = 34,
243     D3DFMT_A2R10G10B10          = 35,
244     D3DFMT_A16B16G16R16         = 36,
245 
246     D3DFMT_A8P8                 = 40,
247     D3DFMT_P8                   = 41,
248 
249     D3DFMT_L8                   = 50,
250     D3DFMT_A8L8                 = 51,
251     D3DFMT_A4L4                 = 52,
252 
253     D3DFMT_V8U8                 = 60,
254     D3DFMT_L6V5U5               = 61,
255     D3DFMT_X8L8V8U8             = 62,
256     D3DFMT_Q8W8V8U8             = 63,
257     D3DFMT_V16U16               = 64,
258     D3DFMT_A2W10V10U10          = 67,
259 
260     /*D3DFMT_UYVY                 = MAKEFOURCC('U', 'Y', 'V', 'Y'),
261     D3DFMT_R8G8_B8G8            = MAKEFOURCC('R', 'G', 'B', 'G'),
262     D3DFMT_YUY2                 = MAKEFOURCC('Y', 'U', 'Y', '2'),
263     D3DFMT_G8R8_G8B8            = MAKEFOURCC('G', 'R', 'G', 'B'),
264     D3DFMT_DXT1                 = MAKEFOURCC('D', 'X', 'T', '1'),
265     D3DFMT_DXT2                 = MAKEFOURCC('D', 'X', 'T', '2'),
266     D3DFMT_DXT3                 = MAKEFOURCC('D', 'X', 'T', '3'),
267     D3DFMT_DXT4                 = MAKEFOURCC('D', 'X', 'T', '4'),
268     D3DFMT_DXT5                 = MAKEFOURCC('D', 'X', 'T', '5'),*/
269 
270     D3DFMT_D16_LOCKABLE         = 70,
271     D3DFMT_D32                  = 71,
272     D3DFMT_D15S1                = 73,
273     D3DFMT_D24S8                = 75,
274     D3DFMT_D24X8                = 77,
275     D3DFMT_D24X4S4              = 79,
276     D3DFMT_D16                  = 80,
277 
278     D3DFMT_D32F_LOCKABLE        = 82,
279     D3DFMT_D24FS8               = 83,
280 
281     /* D3D9Ex only -- */
282     D3DFMT_D32_LOCKABLE         = 84,
283     D3DFMT_S8_LOCKABLE          = 85,
284     /* -- D3D9Ex only */
285 
286     D3DFMT_L16                  = 81,
287 
288     D3DFMT_VERTEXDATA           =100,
289     D3DFMT_INDEX16              =101,
290     D3DFMT_INDEX32              =102,
291 
292     D3DFMT_Q16W16V16U16         =110,
293 
294     //D3DFMT_MULTI2_ARGB8         = MAKEFOURCC('M','E','T','1'),
295 
296     D3DFMT_R16F                 = 111,
297     D3DFMT_G16R16F              = 112,
298     D3DFMT_A16B16G16R16F        = 113,
299 
300     D3DFMT_R32F                 = 114,
301     D3DFMT_G32R32F              = 115,
302     D3DFMT_A32B32G32R32F        = 116,
303 
304     D3DFMT_CxV8U8               = 117,
305 
306     /* D3D9Ex only -- */
307     D3DFMT_A1                   = 118,
308     D3DFMT_A2B10G10R10_XR_BIAS  = 119,
309     D3DFMT_BINARYBUFFER         = 199
310     /* -- D3D9Ex only */
311 }
312 
313 alias D3DMULTISAMPLE_TYPE = DWORD;
314 enum : D3DMULTISAMPLE_TYPE {
315     TODO_D3DMULTISAMPLE_TYPE
316 }
317 
318 alias D3DRESOURCETYPE = DWORD;
319 enum : D3DRESOURCETYPE {
320     TODO_D3DRESOURCETYPE
321 }
322 
323 alias D3DBACKBUFFER_TYPE = DWORD;
324 enum : D3DBACKBUFFER_TYPE {
325     D3DBACKBUFFER_TYPE_MONO         = 0,
326     D3DBACKBUFFER_TYPE_LEFT         = 1,
327     D3DBACKBUFFER_TYPE_RIGHT        = 2
328 }
329 
330 alias D3DSWAPEFFECT = DWORD;
331 enum : D3DSWAPEFFECT {
332     D3DSWAPEFFECT_DISCARD = 1,
333     D3DSWAPEFFECT_FLIP    = 2,
334     D3DSWAPEFFECT_COPY    = 3,
335 
336     /* D3D9Ex only -- */
337     D3DSWAPEFFECT_OVERLAY = 4,
338     D3DSWAPEFFECT_FLIPEX  = 5
339     /* -- D3D9Ex only */
340 }
341 
342 alias D3DPOOL = DWORD;
343 enum : D3DPOOL {
344     D3DPOOL_DEFAULT                 = 0,
345     D3DPOOL_MANAGED                 = 1,
346     D3DPOOL_SYSTEMMEM               = 2,
347     D3DPOOL_SCRATCH                 = 3
348 }
349 
350 alias D3DBASISTYPE = DWORD;
351 enum : D3DBASISTYPE {
352     D3DBASIS_BEZIER      = 0,
353     D3DBASIS_BSPLINE     = 1,
354     D3DBASIS_CATMULL_ROM = 2, /* In D3D8 this used to be D3DBASIS_INTERPOLATE */
355 }
356 
357 alias D3DDEGREETYPE = DWORD;
358 enum : D3DDEGREETYPE {
359     D3DDEGREE_LINEAR      = 1,
360     D3DDEGREE_QUADRATIC   = 2,
361     D3DDEGREE_CUBIC       = 3,
362     D3DDEGREE_QUINTIC     = 5
363 }
364 
365 struct D3DRECTPATCH_INFO {
366     UINT                StartVertexOffsetWidth;
367     UINT                StartVertexOffsetHeight;
368     UINT                Width;
369     UINT                Height;
370     UINT                Stride;
371     D3DBASISTYPE        Basis;
372     D3DDEGREETYPE       Degree;
373 }
374 
375 struct D3DTRIPATCH_INFO {
376     UINT                StartVertexOffset;
377     UINT                NumVertices;
378     D3DBASISTYPE        Basis;
379     D3DDEGREETYPE       Degree;
380 }
381 
382 alias D3DCUBEMAP_FACES = DWORD;
383 enum : D3DCUBEMAP_FACES {
384     D3DCUBEMAP_FACE_POSITIVE_X     = 0,
385     D3DCUBEMAP_FACE_NEGATIVE_X     = 1,
386     D3DCUBEMAP_FACE_POSITIVE_Y     = 2,
387     D3DCUBEMAP_FACE_NEGATIVE_Y     = 3,
388     D3DCUBEMAP_FACE_POSITIVE_Z     = 4,
389     D3DCUBEMAP_FACE_NEGATIVE_Z     = 5
390 }
391 
392 struct D3DSURFACE_DESC {
393     D3DFORMAT           Format;
394     D3DRESOURCETYPE     Type;
395     DWORD               Usage;
396     D3DPOOL             Pool;
397     UINT                Size;
398 
399     D3DMULTISAMPLE_TYPE MultiSampleType;
400     UINT                Width;
401     UINT                Height;
402 }
403 
404 struct D3DVOLUME_DESC {
405     D3DFORMAT           Format;
406     D3DRESOURCETYPE     Type;
407     DWORD               Usage;
408     D3DPOOL             Pool;
409     UINT                Size;
410 
411     UINT                Width;
412     UINT                Height;
413     UINT                Depth;
414 }
415 
416 struct D3DLOCKED_RECT {
417     INT                 Pitch;
418     void*               pBits;
419 }
420 
421 struct D3DBOX {
422     UINT                Left;
423     UINT                Top;
424     UINT                Right;
425     UINT                Bottom;
426     UINT                Front;
427     UINT                Back;
428 }
429 
430 struct D3DLOCKED_BOX {
431     INT                 RowPitch;
432     INT                 SlicePitch;
433     void*               pBits;
434 }
435 
436 struct D3DGAMMARAMP {
437     WORD[256]                red  ;
438     WORD[256]                green;
439     WORD[256]                blue ;
440 }
441 
442 struct D3DDEVICE_CREATION_PARAMETERS {
443     UINT            AdapterOrdinal;
444     D3DDEVTYPE      DeviceType;
445     HWND            hFocusWindow;
446     DWORD           BehaviorFlags;
447 }
448 
449 struct D3DDISPLAYMODE {
450     UINT      Width;
451     UINT      Height;
452     UINT      RefreshRate;
453     D3DFORMAT Format;
454 }
455 
456 struct D3DPRESENT_PARAMETERS {
457     UINT                  BackBufferWidth;
458     UINT                  BackBufferHeight;
459     D3DFORMAT             BackBufferFormat;
460     UINT                  BackBufferCount;
461 
462     D3DMULTISAMPLE_TYPE   MultiSampleType;
463     version (_D3D9) DWORD MultiSampleQuality;
464 
465     D3DSWAPEFFECT         SwapEffect;
466     HWND                  hDeviceWindow;
467     BOOL                  Windowed;
468     BOOL                  EnableAutoDepthStencil;
469     D3DFORMAT             AutoDepthStencilFormat;
470     DWORD                 Flags;
471 
472     /* FullScreen_RefreshRateInHz must be zero for Windowed mode */
473     UINT                  FullScreen_RefreshRateInHz;
474     UINT                  FullScreen_PresentationInterval;
475 }
476 
477 enum MAX_DEVICE_IDENTIFIER_STRING = 512;
478 struct D3DADAPTER_IDENTIFIER8 {
479     char[MAX_DEVICE_IDENTIFIER_STRING]            Driver;
480     char[MAX_DEVICE_IDENTIFIER_STRING]            Description;
481 
482     //#ifdef _WIN32
483     LARGE_INTEGER   DriverVersion;            /* Defined for 32 bit components */
484     //#else
485     //        DWORD           DriverVersionLowPart;     /* Defined for 16 bit driver components */
486     //        DWORD           DriverVersionHighPart;
487     //#endif
488 
489     DWORD           VendorId;
490     DWORD           DeviceId;
491     DWORD           SubSysId;
492     DWORD           Revision;
493 
494     GUID            DeviceIdentifier;
495 
496     DWORD           WHQLLevel;
497 }
498 
499 struct D3DADAPTER_IDENTIFIER9 {
500     D3DADAPTER_IDENTIFIER8 identifier8; alias identifier8 this;
501 }
502 
503 struct D3DRASTER_STATUS {
504     BOOL            InVBlank;
505     UINT            ScanLine;
506 }
507 
508 struct D3DCAPS8 {
509     /* Device Info */
510     D3DDEVTYPE  DeviceType;
511     UINT    AdapterOrdinal;
512 
513     /* Caps from DX7 Draw */
514     DWORD   Caps;
515     DWORD   Caps2;
516     DWORD   Caps3;
517     DWORD   PresentationIntervals;
518 
519     /* Cursor Caps */
520     DWORD   CursorCaps;
521 
522     /* 3D Device Caps */
523     DWORD   DevCaps;
524 
525     DWORD   PrimitiveMiscCaps;
526     DWORD   RasterCaps;
527     DWORD   ZCmpCaps;
528     DWORD   SrcBlendCaps;
529     DWORD   DestBlendCaps;
530     DWORD   AlphaCmpCaps;
531     DWORD   ShadeCaps;
532     DWORD   TextureCaps;
533     DWORD   TextureFilterCaps;          // D3DPTFILTERCAPS for IDirect3DTexture8's
534     DWORD   CubeTextureFilterCaps;      // D3DPTFILTERCAPS for IDirect3DCubeTexture8's
535     DWORD   VolumeTextureFilterCaps;    // D3DPTFILTERCAPS for IDirect3DVolumeTexture8's
536     DWORD   TextureAddressCaps;         // D3DPTADDRESSCAPS for IDirect3DTexture8's
537     DWORD   VolumeTextureAddressCaps;   // D3DPTADDRESSCAPS for IDirect3DVolumeTexture8's
538 
539     DWORD   LineCaps;                   // D3DLINECAPS
540 
541     DWORD   MaxTextureWidth, MaxTextureHeight;
542     DWORD   MaxVolumeExtent;
543 
544     DWORD   MaxTextureRepeat;
545     DWORD   MaxTextureAspectRatio;
546     DWORD   MaxAnisotropy;
547     float   MaxVertexW;
548 
549     float   GuardBandLeft;
550     float   GuardBandTop;
551     float   GuardBandRight;
552     float   GuardBandBottom;
553 
554     float   ExtentsAdjust;
555     DWORD   StencilCaps;
556 
557     DWORD   FVFCaps;
558     DWORD   TextureOpCaps;
559     DWORD   MaxTextureBlendStages;
560     DWORD   MaxSimultaneousTextures;
561 
562     DWORD   VertexProcessingCaps;
563     DWORD   MaxActiveLights;
564     DWORD   MaxUserClipPlanes;
565     DWORD   MaxVertexBlendMatrices;
566     DWORD   MaxVertexBlendMatrixIndex;
567 
568     float   MaxPointSize;
569 
570     DWORD   MaxPrimitiveCount;          // max number of primitives per DrawPrimitive call
571     DWORD   MaxVertexIndex;
572     DWORD   MaxStreams;
573     DWORD   MaxStreamStride;            // max stride for SetStreamSource
574 
575     DWORD   VertexShaderVersion;
576     DWORD   MaxVertexShaderConst;       // number of vertex shader constant registers
577 
578     DWORD   PixelShaderVersion;
579     float   MaxPixelShaderValue;        // max value of pixel shader arithmetic component
580 }
581 
582 struct D3DVSHADERCAPS2_0 {
583     DWORD Caps;
584     INT   DynamicFlowControlDepth;
585     INT   NumTemps;
586     INT   StaticFlowControlDepth;
587 }
588 
589 struct D3DPSHADERCAPS2_0 {
590     DWORD Caps;
591     INT   DynamicFlowControlDepth;
592     INT   NumTemps;
593     INT   StaticFlowControlDepth;
594     INT   NumInstructionSlots;
595 }
596 
597 struct D3DCAPS9 {
598     D3DCAPS8 d3dcaps8; alias d3dcaps8 this;
599 
600     // Here are the DX9 specific ones
601     DWORD   DevCaps2;
602 
603     float   MaxNpatchTessellationLevel;
604     DWORD   Reserved5;
605 
606     UINT    MasterAdapterOrdinal;       // ordinal of master adaptor for adapter group
607     UINT    AdapterOrdinalInGroup;      // ordinal inside the adapter group
608     UINT    NumberOfAdaptersInGroup;    // number of adapters in this adapter group (only if master)
609     DWORD   DeclTypes;                  // Data types, supported in vertex declarations
610     DWORD   NumSimultaneousRTs;         // Will be at least 1
611     DWORD   StretchRectFilterCaps;      // Filter caps supported by StretchRect
612     D3DVSHADERCAPS2_0 VS20Caps;
613     D3DPSHADERCAPS2_0 PS20Caps;
614     DWORD   VertexTextureFilterCaps;    // D3DPTFILTERCAPS for IDirect3DTexture9's for texture, used in vertex shaders
615     DWORD   MaxVShaderInstructionsExecuted; // maximum number of vertex shader instructions that can be executed
616     DWORD   MaxPShaderInstructionsExecuted; // maximum number of pixel shader instructions that can be executed
617     DWORD   MaxVertexShader30InstructionSlots;
618     DWORD   MaxPixelShader30InstructionSlots;
619 }
620 
621 enum {
622     D3DCREATE_FPU_PRESERVE                  = 0x00000002,
623     D3DCREATE_MULTITHREADED                 = 0x00000004,
624 
625     D3DCREATE_PUREDEVICE                    = 0x00000010,
626     D3DCREATE_SOFTWARE_VERTEXPROCESSING     = 0x00000020,
627     D3DCREATE_HARDWARE_VERTEXPROCESSING     = 0x00000040,
628     D3DCREATE_MIXED_VERTEXPROCESSING        = 0x00000080,
629 
630     D3DCREATE_DISABLE_DRIVER_MANAGEMENT     = 0x00000100,
631     D3DCREATE_ADAPTERGROUP_DEVICE           = 0x00000200,
632     D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX  = 0x00000400,
633 
634     // This flag causes the D3D runtime not to alter the focus
635     // window in any way. Use with caution- the burden of supporting
636     // focus management events (alt-tab, etc.) falls on the
637     // application, and appropriate responses (switching display
638     // mode, etc.) should be coded.
639     D3DCREATE_NOWINDOWCHANGES				= 0x00000800,
640 
641     /* D3D9Ex only -- */
642 
643     // Disable multithreading for software vertex processing
644     D3DCREATE_DISABLE_PSGP_THREADING        = 0x00002000,
645     // This flag enables present statistics on device.
646     D3DCREATE_ENABLE_PRESENTSTATS           = 0x00004000,
647     // This flag disables printscreen support in the runtime for this device
648     D3DCREATE_DISABLE_PRINTSCREEN           = 0x00008000,
649 
650     D3DCREATE_SCREENSAVER                   = 0x10000000
651 }
652 
653 enum {
654     /* Usages */
655     D3DUSAGE_RENDERTARGET       = 0x00000001,
656     D3DUSAGE_DEPTHSTENCIL       = 0x00000002,
657 
658     /* Usages for Vertex/Index buffers */
659     D3DUSAGE_WRITEONLY          = 0x00000008,
660     D3DUSAGE_SOFTWAREPROCESSING = 0x00000010,
661     D3DUSAGE_DONOTCLIP          = 0x00000020,
662     D3DUSAGE_POINTS             = 0x00000040,
663     D3DUSAGE_RTPATCHES          = 0x00000080,
664     D3DUSAGE_NPATCHES           = 0x00000100,
665     D3DUSAGE_DYNAMIC            = 0x00000200
666 }
667 
668 alias D3D_DRIVER_TYPE = int;
669 enum : D3D_DRIVER_TYPE
670 {
671 	D3D_DRIVER_TYPE_UNKNOWN	= 0,
672 	D3D_DRIVER_TYPE_HARDWARE	= ( D3D_DRIVER_TYPE_UNKNOWN + 1 ) ,
673 	D3D_DRIVER_TYPE_REFERENCE	= ( D3D_DRIVER_TYPE_HARDWARE + 1 ) ,
674 	D3D_DRIVER_TYPE_NULL	= ( D3D_DRIVER_TYPE_REFERENCE + 1 ) ,
675 	D3D_DRIVER_TYPE_SOFTWARE	= ( D3D_DRIVER_TYPE_NULL + 1 ) ,
676 	D3D_DRIVER_TYPE_WARP	= ( D3D_DRIVER_TYPE_SOFTWARE + 1 ) 
677 }
678 
679 alias D3D_FEATURE_LEVEL = int;
680 enum : D3D_FEATURE_LEVEL
681 {
682 	D3D_FEATURE_LEVEL_9_1	= 0x9100,
683 	D3D_FEATURE_LEVEL_9_2	= 0x9200,
684 	D3D_FEATURE_LEVEL_9_3	= 0x9300,
685 	D3D_FEATURE_LEVEL_10_0	= 0xa000,
686 	D3D_FEATURE_LEVEL_10_1	= 0xa100,
687 	D3D_FEATURE_LEVEL_11_0	= 0xb000,
688     D3D_FEATURE_LEVEL_11_1  = 0xb100,
689     D3D_FEATURE_LEVEL_12_0  = 0xc000,
690     D3D_FEATURE_LEVEL_12_1  = 0xc100
691 }
692 
693 alias D3D_PRIMITIVE_TOPOLOGY = int;
694 enum : D3D_PRIMITIVE_TOPOLOGY
695 {
696 	D3D_PRIMITIVE_TOPOLOGY_UNDEFINED	= 0,
697 	D3D_PRIMITIVE_TOPOLOGY_POINTLIST	= 1,
698 	D3D_PRIMITIVE_TOPOLOGY_LINELIST	= 2,
699 	D3D_PRIMITIVE_TOPOLOGY_LINESTRIP	= 3,
700 	D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST	= 4,
701 	D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP	= 5,
702 	D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ	= 10,
703 	D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ	= 11,
704 	D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ	= 12,
705 	D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ	= 13,
706 	D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST	= 33,
707 	D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST	= 34,
708 	D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST	= 35,
709 	D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST	= 36,
710 	D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST	= 37,
711 	D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST	= 38,
712 	D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST	= 39,
713 	D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST	= 40,
714 	D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST	= 41,
715 	D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST	= 42,
716 	D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST	= 43,
717 	D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST	= 44,
718 	D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST	= 45,
719 	D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST	= 46,
720 	D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST	= 47,
721 	D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST	= 48,
722 	D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST	= 49,
723 	D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST	= 50,
724 	D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST	= 51,
725 	D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST	= 52,
726 	D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST	= 53,
727 	D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST	= 54,
728 	D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST	= 55,
729 	D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST	= 56,
730 	D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST	= 57,
731 	D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST	= 58,
732 	D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST	= 59,
733 	D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST	= 60,
734 	D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST	= 61,
735 	D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST	= 62,
736 	D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST	= 63,
737 	D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST	= 64,
738 	D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED	= D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
739 	D3D10_PRIMITIVE_TOPOLOGY_POINTLIST	= D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
740 	D3D10_PRIMITIVE_TOPOLOGY_LINELIST	= D3D_PRIMITIVE_TOPOLOGY_LINELIST,
741 	D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP	= D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
742 	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
743 	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
744 	D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ	= D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
745 	D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ	= D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
746 	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
747 	D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
748 	D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED	= D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
749 	D3D11_PRIMITIVE_TOPOLOGY_POINTLIST	= D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
750 	D3D11_PRIMITIVE_TOPOLOGY_LINELIST	= D3D_PRIMITIVE_TOPOLOGY_LINELIST,
751 	D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP	= D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
752 	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
753 	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
754 	D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ	= D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
755 	D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ	= D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
756 	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
757 	D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ	= D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
758 	D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
759 	D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
760 	D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
761 	D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
762 	D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
763 	D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
764 	D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
765 	D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
766 	D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
767 	D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
768 	D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
769 	D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
770 	D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
771 	D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
772 	D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
773 	D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
774 	D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
775 	D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
776 	D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
777 	D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
778 	D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
779 	D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
780 	D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
781 	D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
782 	D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
783 	D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
784 	D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
785 	D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
786 	D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
787 	D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
788 	D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
789 	D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST	= D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
790 }
791 
792 alias D3D_PRIMITIVE = int;
793 enum : D3D_PRIMITIVE
794 {
795 	D3D_PRIMITIVE_UNDEFINED	= 0,
796 	D3D_PRIMITIVE_POINT	= 1,
797 	D3D_PRIMITIVE_LINE	= 2,
798 	D3D_PRIMITIVE_TRIANGLE	= 3,
799 	D3D_PRIMITIVE_LINE_ADJ	= 6,
800 	D3D_PRIMITIVE_TRIANGLE_ADJ	= 7,
801 	D3D_PRIMITIVE_1_CONTROL_POINT_PATCH	= 8,
802 	D3D_PRIMITIVE_2_CONTROL_POINT_PATCH	= 9,
803 	D3D_PRIMITIVE_3_CONTROL_POINT_PATCH	= 10,
804 	D3D_PRIMITIVE_4_CONTROL_POINT_PATCH	= 11,
805 	D3D_PRIMITIVE_5_CONTROL_POINT_PATCH	= 12,
806 	D3D_PRIMITIVE_6_CONTROL_POINT_PATCH	= 13,
807 	D3D_PRIMITIVE_7_CONTROL_POINT_PATCH	= 14,
808 	D3D_PRIMITIVE_8_CONTROL_POINT_PATCH	= 15,
809 	D3D_PRIMITIVE_9_CONTROL_POINT_PATCH	= 16,
810 	D3D_PRIMITIVE_10_CONTROL_POINT_PATCH	= 17,
811 	D3D_PRIMITIVE_11_CONTROL_POINT_PATCH	= 18,
812 	D3D_PRIMITIVE_12_CONTROL_POINT_PATCH	= 19,
813 	D3D_PRIMITIVE_13_CONTROL_POINT_PATCH	= 20,
814 	D3D_PRIMITIVE_14_CONTROL_POINT_PATCH	= 21,
815 	D3D_PRIMITIVE_15_CONTROL_POINT_PATCH	= 22,
816 	D3D_PRIMITIVE_16_CONTROL_POINT_PATCH	= 23,
817 	D3D_PRIMITIVE_17_CONTROL_POINT_PATCH	= 24,
818 	D3D_PRIMITIVE_18_CONTROL_POINT_PATCH	= 25,
819 	D3D_PRIMITIVE_19_CONTROL_POINT_PATCH	= 26,
820 	D3D_PRIMITIVE_20_CONTROL_POINT_PATCH	= 28,
821 	D3D_PRIMITIVE_21_CONTROL_POINT_PATCH	= 29,
822 	D3D_PRIMITIVE_22_CONTROL_POINT_PATCH	= 30,
823 	D3D_PRIMITIVE_23_CONTROL_POINT_PATCH	= 31,
824 	D3D_PRIMITIVE_24_CONTROL_POINT_PATCH	= 32,
825 	D3D_PRIMITIVE_25_CONTROL_POINT_PATCH	= 33,
826 	D3D_PRIMITIVE_26_CONTROL_POINT_PATCH	= 34,
827 	D3D_PRIMITIVE_27_CONTROL_POINT_PATCH	= 35,
828 	D3D_PRIMITIVE_28_CONTROL_POINT_PATCH	= 36,
829 	D3D_PRIMITIVE_29_CONTROL_POINT_PATCH	= 37,
830 	D3D_PRIMITIVE_30_CONTROL_POINT_PATCH	= 38,
831 	D3D_PRIMITIVE_31_CONTROL_POINT_PATCH	= 39,
832 	D3D_PRIMITIVE_32_CONTROL_POINT_PATCH	= 40,
833 	D3D10_PRIMITIVE_UNDEFINED	= D3D_PRIMITIVE_UNDEFINED,
834 	D3D10_PRIMITIVE_POINT	= D3D_PRIMITIVE_POINT,
835 	D3D10_PRIMITIVE_LINE	= D3D_PRIMITIVE_LINE,
836 	D3D10_PRIMITIVE_TRIANGLE	= D3D_PRIMITIVE_TRIANGLE,
837 	D3D10_PRIMITIVE_LINE_ADJ	= D3D_PRIMITIVE_LINE_ADJ,
838 	D3D10_PRIMITIVE_TRIANGLE_ADJ	= D3D_PRIMITIVE_TRIANGLE_ADJ,
839 	D3D11_PRIMITIVE_UNDEFINED	= D3D_PRIMITIVE_UNDEFINED,
840 	D3D11_PRIMITIVE_POINT	= D3D_PRIMITIVE_POINT,
841 	D3D11_PRIMITIVE_LINE	= D3D_PRIMITIVE_LINE,
842 	D3D11_PRIMITIVE_TRIANGLE	= D3D_PRIMITIVE_TRIANGLE,
843 	D3D11_PRIMITIVE_LINE_ADJ	= D3D_PRIMITIVE_LINE_ADJ,
844 	D3D11_PRIMITIVE_TRIANGLE_ADJ	= D3D_PRIMITIVE_TRIANGLE_ADJ,
845 	D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
846 	D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
847 	D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
848 	D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
849 	D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
850 	D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
851 	D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
852 	D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
853 	D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
854 	D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
855 	D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
856 	D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
857 	D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
858 	D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
859 	D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
860 	D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
861 	D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
862 	D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
863 	D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
864 	D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
865 	D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
866 	D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
867 	D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
868 	D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
869 	D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
870 	D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
871 	D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
872 	D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
873 	D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
874 	D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
875 	D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
876 	D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH	= D3D_PRIMITIVE_32_CONTROL_POINT_PATCH
877 }
878 
879 
880 alias D3D_SRV_DIMENSION = int;
881 enum : D3D_SRV_DIMENSION
882 {
883 	D3D_SRV_DIMENSION_UNKNOWN	= 0,
884 	D3D_SRV_DIMENSION_BUFFER	= 1,
885 	D3D_SRV_DIMENSION_TEXTURE1D	= 2,
886 	D3D_SRV_DIMENSION_TEXTURE1DARRAY	= 3,
887 	D3D_SRV_DIMENSION_TEXTURE2D	= 4,
888 	D3D_SRV_DIMENSION_TEXTURE2DARRAY	= 5,
889 	D3D_SRV_DIMENSION_TEXTURE2DMS	= 6,
890 	D3D_SRV_DIMENSION_TEXTURE2DMSARRAY	= 7,
891 	D3D_SRV_DIMENSION_TEXTURE3D	= 8,
892 	D3D_SRV_DIMENSION_TEXTURECUBE	= 9,
893 	D3D_SRV_DIMENSION_TEXTURECUBEARRAY	= 10,
894 	D3D_SRV_DIMENSION_BUFFEREX	= 11,
895 	D3D10_SRV_DIMENSION_UNKNOWN	= D3D_SRV_DIMENSION_UNKNOWN,
896 	D3D10_SRV_DIMENSION_BUFFER	= D3D_SRV_DIMENSION_BUFFER,
897 	D3D10_SRV_DIMENSION_TEXTURE1D	= D3D_SRV_DIMENSION_TEXTURE1D,
898 	D3D10_SRV_DIMENSION_TEXTURE1DARRAY	= D3D_SRV_DIMENSION_TEXTURE1DARRAY,
899 	D3D10_SRV_DIMENSION_TEXTURE2D	= D3D_SRV_DIMENSION_TEXTURE2D,
900 	D3D10_SRV_DIMENSION_TEXTURE2DARRAY	= D3D_SRV_DIMENSION_TEXTURE2DARRAY,
901 	D3D10_SRV_DIMENSION_TEXTURE2DMS	= D3D_SRV_DIMENSION_TEXTURE2DMS,
902 	D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY	= D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
903 	D3D10_SRV_DIMENSION_TEXTURE3D	= D3D_SRV_DIMENSION_TEXTURE3D,
904 	D3D10_SRV_DIMENSION_TEXTURECUBE	= D3D_SRV_DIMENSION_TEXTURECUBE,
905 	D3D10_1_SRV_DIMENSION_UNKNOWN	= D3D_SRV_DIMENSION_UNKNOWN,
906 	D3D10_1_SRV_DIMENSION_BUFFER	= D3D_SRV_DIMENSION_BUFFER,
907 	D3D10_1_SRV_DIMENSION_TEXTURE1D	= D3D_SRV_DIMENSION_TEXTURE1D,
908 	D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY	= D3D_SRV_DIMENSION_TEXTURE1DARRAY,
909 	D3D10_1_SRV_DIMENSION_TEXTURE2D	= D3D_SRV_DIMENSION_TEXTURE2D,
910 	D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY	= D3D_SRV_DIMENSION_TEXTURE2DARRAY,
911 	D3D10_1_SRV_DIMENSION_TEXTURE2DMS	= D3D_SRV_DIMENSION_TEXTURE2DMS,
912 	D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY	= D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
913 	D3D10_1_SRV_DIMENSION_TEXTURE3D	= D3D_SRV_DIMENSION_TEXTURE3D,
914 	D3D10_1_SRV_DIMENSION_TEXTURECUBE	= D3D_SRV_DIMENSION_TEXTURECUBE,
915 	D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY	= D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
916 	D3D11_SRV_DIMENSION_UNKNOWN	= D3D_SRV_DIMENSION_UNKNOWN,
917 	D3D11_SRV_DIMENSION_BUFFER	= D3D_SRV_DIMENSION_BUFFER,
918 	D3D11_SRV_DIMENSION_TEXTURE1D	= D3D_SRV_DIMENSION_TEXTURE1D,
919 	D3D11_SRV_DIMENSION_TEXTURE1DARRAY	= D3D_SRV_DIMENSION_TEXTURE1DARRAY,
920 	D3D11_SRV_DIMENSION_TEXTURE2D	= D3D_SRV_DIMENSION_TEXTURE2D,
921 	D3D11_SRV_DIMENSION_TEXTURE2DARRAY	= D3D_SRV_DIMENSION_TEXTURE2DARRAY,
922 	D3D11_SRV_DIMENSION_TEXTURE2DMS	= D3D_SRV_DIMENSION_TEXTURE2DMS,
923 	D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY	= D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
924 	D3D11_SRV_DIMENSION_TEXTURE3D	= D3D_SRV_DIMENSION_TEXTURE3D,
925 	D3D11_SRV_DIMENSION_TEXTURECUBE	= D3D_SRV_DIMENSION_TEXTURECUBE,
926 	D3D11_SRV_DIMENSION_TEXTURECUBEARRAY	= D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
927 	D3D11_SRV_DIMENSION_BUFFEREX	= D3D_SRV_DIMENSION_BUFFEREX
928 }
929 
930 struct _D3D_SHADER_MACRO
931 {
932 	LPCSTR Name;
933 	LPCSTR Definition;
934 }
935 alias _D3D_SHADER_MACRO D3D_SHADER_MACRO;
936 alias _D3D_SHADER_MACRO* LPD3D_SHADER_MACRO;
937 
938 mixin( uuid!(ID3D10Blob, "8BA5FB08-5195-40e2-AC58-0D989C3A0102") );
939 interface ID3D10Blob : IUnknown
940 {
941 	extern(Windows):
942 	LPVOID GetBufferPointer();
943 	
944 	SIZE_T GetBufferSize();
945 	
946 }
947 alias ID3D10Blob LPD3D10BLOB;
948 alias ID3D10Blob ID3DBlob;
949 alias ID3DBlob LPD3DBLOB;
950 alias IID_ID3D10Blob IID_ID3DBlob;
951 
952 
953 alias _D3D_INCLUDE_TYPE = int;
954 enum : _D3D_INCLUDE_TYPE
955 {
956 	D3D_INCLUDE_LOCAL	= 0,
957 	D3D_INCLUDE_SYSTEM	= ( D3D_INCLUDE_LOCAL + 1 ) ,
958 	D3D10_INCLUDE_LOCAL	= D3D_INCLUDE_LOCAL,
959 	D3D10_INCLUDE_SYSTEM	= D3D_INCLUDE_SYSTEM,
960 	D3D_INCLUDE_FORCE_DWORD	= 0x7fffffff
961 }
962 alias _D3D_INCLUDE_TYPE D3D_INCLUDE_TYPE;
963 
964 
965 extern(C++) interface ID3DInclude
966 {
967   extern(Windows):
968     HRESULT Open(D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID* ppData, UINT* pBytes);
969     HRESULT Close(LPCVOID pData);
970 }
971 alias ID3DInclude LPD3DINCLUDE;
972 
973 
974 alias _D3D_SHADER_VARIABLE_CLASS = int;
975 enum : _D3D_SHADER_VARIABLE_CLASS
976 {
977 	D3D_SVC_SCALAR	= 0,
978 	D3D_SVC_VECTOR	= ( D3D_SVC_SCALAR + 1 ) ,
979 	D3D_SVC_MATRIX_ROWS	= ( D3D_SVC_VECTOR + 1 ) ,
980 	D3D_SVC_MATRIX_COLUMNS	= ( D3D_SVC_MATRIX_ROWS + 1 ) ,
981 	D3D_SVC_OBJECT	= ( D3D_SVC_MATRIX_COLUMNS + 1 ) ,
982 	D3D_SVC_STRUCT	= ( D3D_SVC_OBJECT + 1 ) ,
983 	D3D_SVC_INTERFACE_CLASS	= ( D3D_SVC_STRUCT + 1 ) ,
984 	D3D_SVC_INTERFACE_POINTER	= ( D3D_SVC_INTERFACE_CLASS + 1 ) ,
985 	D3D10_SVC_SCALAR	= D3D_SVC_SCALAR,
986 	D3D10_SVC_VECTOR	= D3D_SVC_VECTOR,
987 	D3D10_SVC_MATRIX_ROWS	= D3D_SVC_MATRIX_ROWS,
988 	D3D10_SVC_MATRIX_COLUMNS	= D3D_SVC_MATRIX_COLUMNS,
989 	D3D10_SVC_OBJECT	= D3D_SVC_OBJECT,
990 	D3D10_SVC_STRUCT	= D3D_SVC_STRUCT,
991 	D3D11_SVC_INTERFACE_CLASS	= D3D_SVC_INTERFACE_CLASS,
992 	D3D11_SVC_INTERFACE_POINTER	= D3D_SVC_INTERFACE_POINTER,
993 	D3D_SVC_FORCE_DWORD	= 0x7fffffff
994 }
995 alias _D3D_SHADER_VARIABLE_CLASS D3D_SHADER_VARIABLE_CLASS;
996 
997 
998 alias _D3D_SHADER_VARIABLE_FLAGS = int;
999 enum : _D3D_SHADER_VARIABLE_FLAGS
1000 {
1001 	D3D_SVF_USERPACKED	= 1,
1002 	D3D_SVF_USED	= 2,
1003 	D3D_SVF_INTERFACE_POINTER	= 4,
1004 	D3D_SVF_INTERFACE_PARAMETER	= 8,
1005 	D3D10_SVF_USERPACKED	= D3D_SVF_USERPACKED,
1006 	D3D10_SVF_USED	= D3D_SVF_USED,
1007 	D3D11_SVF_INTERFACE_POINTER	= D3D_SVF_INTERFACE_POINTER,
1008 	D3D11_SVF_INTERFACE_PARAMETER	= D3D_SVF_INTERFACE_PARAMETER,
1009 	D3D_SVF_FORCE_DWORD	= 0x7fffffff
1010 }
1011 alias _D3D_SHADER_VARIABLE_FLAGS D3D_SHADER_VARIABLE_FLAGS;
1012 
1013 
1014 alias _D3D_SHADER_VARIABLE_TYPE = int;
1015 enum : _D3D_SHADER_VARIABLE_TYPE
1016 {
1017 	D3D_SVT_VOID	= 0,
1018 	D3D_SVT_BOOL	= 1,
1019 	D3D_SVT_INT	= 2,
1020 	D3D_SVT_FLOAT	= 3,
1021 	D3D_SVT_STRING	= 4,
1022 	D3D_SVT_TEXTURE	= 5,
1023 	D3D_SVT_TEXTURE1D	= 6,
1024 	D3D_SVT_TEXTURE2D	= 7,
1025 	D3D_SVT_TEXTURE3D	= 8,
1026 	D3D_SVT_TEXTURECUBE	= 9,
1027 	D3D_SVT_SAMPLER	= 10,
1028 	D3D_SVT_SAMPLER1D	= 11,
1029 	D3D_SVT_SAMPLER2D	= 12,
1030 	D3D_SVT_SAMPLER3D	= 13,
1031 	D3D_SVT_SAMPLERCUBE	= 14,
1032 	D3D_SVT_PIXELSHADER	= 15,
1033 	D3D_SVT_VERTEXSHADER	= 16,
1034 	D3D_SVT_PIXELFRAGMENT	= 17,
1035 	D3D_SVT_VERTEXFRAGMENT	= 18,
1036 	D3D_SVT_UINT	= 19,
1037 	D3D_SVT_UINT8	= 20,
1038 	D3D_SVT_GEOMETRYSHADER	= 21,
1039 	D3D_SVT_RASTERIZER	= 22,
1040 	D3D_SVT_DEPTHSTENCIL	= 23,
1041 	D3D_SVT_BLEND	= 24,
1042 	D3D_SVT_BUFFER	= 25,
1043 	D3D_SVT_CBUFFER	= 26,
1044 	D3D_SVT_TBUFFER	= 27,
1045 	D3D_SVT_TEXTURE1DARRAY	= 28,
1046 	D3D_SVT_TEXTURE2DARRAY	= 29,
1047 	D3D_SVT_RENDERTARGETVIEW	= 30,
1048 	D3D_SVT_DEPTHSTENCILVIEW	= 31,
1049 	D3D_SVT_TEXTURE2DMS	= 32,
1050 	D3D_SVT_TEXTURE2DMSARRAY	= 33,
1051 	D3D_SVT_TEXTURECUBEARRAY	= 34,
1052 	D3D_SVT_HULLSHADER	= 35,
1053 	D3D_SVT_DOMAINSHADER	= 36,
1054 	D3D_SVT_INTERFACE_POINTER	= 37,
1055 	D3D_SVT_COMPUTESHADER	= 38,
1056 	D3D_SVT_DOUBLE	= 39,
1057 	D3D_SVT_RWTEXTURE1D	= 40,
1058 	D3D_SVT_RWTEXTURE1DARRAY	= 41,
1059 	D3D_SVT_RWTEXTURE2D	= 42,
1060 	D3D_SVT_RWTEXTURE2DARRAY	= 43,
1061 	D3D_SVT_RWTEXTURE3D	= 44,
1062 	D3D_SVT_RWBUFFER	= 45,
1063 	D3D_SVT_BYTEADDRESS_BUFFER	= 46,
1064 	D3D_SVT_RWBYTEADDRESS_BUFFER	= 47,
1065 	D3D_SVT_STRUCTURED_BUFFER	= 48,
1066 	D3D_SVT_RWSTRUCTURED_BUFFER	= 49,
1067 	D3D_SVT_APPEND_STRUCTURED_BUFFER	= 50,
1068 	D3D_SVT_CONSUME_STRUCTURED_BUFFER	= 51,
1069 	D3D10_SVT_VOID	= D3D_SVT_VOID,
1070 	D3D10_SVT_BOOL	= D3D_SVT_BOOL,
1071 	D3D10_SVT_INT	= D3D_SVT_INT,
1072 	D3D10_SVT_FLOAT	= D3D_SVT_FLOAT,
1073 	D3D10_SVT_STRING	= D3D_SVT_STRING,
1074 	D3D10_SVT_TEXTURE	= D3D_SVT_TEXTURE,
1075 	D3D10_SVT_TEXTURE1D	= D3D_SVT_TEXTURE1D,
1076 	D3D10_SVT_TEXTURE2D	= D3D_SVT_TEXTURE2D,
1077 	D3D10_SVT_TEXTURE3D	= D3D_SVT_TEXTURE3D,
1078 	D3D10_SVT_TEXTURECUBE	= D3D_SVT_TEXTURECUBE,
1079 	D3D10_SVT_SAMPLER	= D3D_SVT_SAMPLER,
1080 	D3D10_SVT_SAMPLER1D	= D3D_SVT_SAMPLER1D,
1081 	D3D10_SVT_SAMPLER2D	= D3D_SVT_SAMPLER2D,
1082 	D3D10_SVT_SAMPLER3D	= D3D_SVT_SAMPLER3D,
1083 	D3D10_SVT_SAMPLERCUBE	= D3D_SVT_SAMPLERCUBE,
1084 	D3D10_SVT_PIXELSHADER	= D3D_SVT_PIXELSHADER,
1085 	D3D10_SVT_VERTEXSHADER	= D3D_SVT_VERTEXSHADER,
1086 	D3D10_SVT_PIXELFRAGMENT	= D3D_SVT_PIXELFRAGMENT,
1087 	D3D10_SVT_VERTEXFRAGMENT	= D3D_SVT_VERTEXFRAGMENT,
1088 	D3D10_SVT_UINT	= D3D_SVT_UINT,
1089 	D3D10_SVT_UINT8	= D3D_SVT_UINT8,
1090 	D3D10_SVT_GEOMETRYSHADER	= D3D_SVT_GEOMETRYSHADER,
1091 	D3D10_SVT_RASTERIZER	= D3D_SVT_RASTERIZER,
1092 	D3D10_SVT_DEPTHSTENCIL	= D3D_SVT_DEPTHSTENCIL,
1093 	D3D10_SVT_BLEND	= D3D_SVT_BLEND,
1094 	D3D10_SVT_BUFFER	= D3D_SVT_BUFFER,
1095 	D3D10_SVT_CBUFFER	= D3D_SVT_CBUFFER,
1096 	D3D10_SVT_TBUFFER	= D3D_SVT_TBUFFER,
1097 	D3D10_SVT_TEXTURE1DARRAY	= D3D_SVT_TEXTURE1DARRAY,
1098 	D3D10_SVT_TEXTURE2DARRAY	= D3D_SVT_TEXTURE2DARRAY,
1099 	D3D10_SVT_RENDERTARGETVIEW	= D3D_SVT_RENDERTARGETVIEW,
1100 	D3D10_SVT_DEPTHSTENCILVIEW	= D3D_SVT_DEPTHSTENCILVIEW,
1101 	D3D10_SVT_TEXTURE2DMS	= D3D_SVT_TEXTURE2DMS,
1102 	D3D10_SVT_TEXTURE2DMSARRAY	= D3D_SVT_TEXTURE2DMSARRAY,
1103 	D3D10_SVT_TEXTURECUBEARRAY	= D3D_SVT_TEXTURECUBEARRAY,
1104 	D3D11_SVT_HULLSHADER	= D3D_SVT_HULLSHADER,
1105 	D3D11_SVT_DOMAINSHADER	= D3D_SVT_DOMAINSHADER,
1106 	D3D11_SVT_INTERFACE_POINTER	= D3D_SVT_INTERFACE_POINTER,
1107 	D3D11_SVT_COMPUTESHADER	= D3D_SVT_COMPUTESHADER,
1108 	D3D11_SVT_DOUBLE	= D3D_SVT_DOUBLE,
1109 	D3D11_SVT_RWTEXTURE1D	= D3D_SVT_RWTEXTURE1D,
1110 	D3D11_SVT_RWTEXTURE1DARRAY	= D3D_SVT_RWTEXTURE1DARRAY,
1111 	D3D11_SVT_RWTEXTURE2D	= D3D_SVT_RWTEXTURE2D,
1112 	D3D11_SVT_RWTEXTURE2DARRAY	= D3D_SVT_RWTEXTURE2DARRAY,
1113 	D3D11_SVT_RWTEXTURE3D	= D3D_SVT_RWTEXTURE3D,
1114 	D3D11_SVT_RWBUFFER	= D3D_SVT_RWBUFFER,
1115 	D3D11_SVT_BYTEADDRESS_BUFFER	= D3D_SVT_BYTEADDRESS_BUFFER,
1116 	D3D11_SVT_RWBYTEADDRESS_BUFFER	= D3D_SVT_RWBYTEADDRESS_BUFFER,
1117 	D3D11_SVT_STRUCTURED_BUFFER	= D3D_SVT_STRUCTURED_BUFFER,
1118 	D3D11_SVT_RWSTRUCTURED_BUFFER	= D3D_SVT_RWSTRUCTURED_BUFFER,
1119 	D3D11_SVT_APPEND_STRUCTURED_BUFFER	= D3D_SVT_APPEND_STRUCTURED_BUFFER,
1120 	D3D11_SVT_CONSUME_STRUCTURED_BUFFER	= D3D_SVT_CONSUME_STRUCTURED_BUFFER,
1121 	D3D_SVT_FORCE_DWORD	= 0x7fffffff
1122 }
1123 alias _D3D_SHADER_VARIABLE_TYPE	D3D_SHADER_VARIABLE_TYPE;
1124 
1125 
1126 alias _D3D_SHADER_INPUT_FLAGS = int;
1127 enum : _D3D_SHADER_INPUT_FLAGS
1128 {
1129 	D3D_SIF_USERPACKED	= 1,
1130 	D3D_SIF_COMPARISON_SAMPLER	= 2,
1131 	D3D_SIF_TEXTURE_COMPONENT_0	= 4,
1132 	D3D_SIF_TEXTURE_COMPONENT_1	= 8,
1133 	D3D_SIF_TEXTURE_COMPONENTS	= 12,
1134 	D3D10_SIF_USERPACKED	= D3D_SIF_USERPACKED,
1135 	D3D10_SIF_COMPARISON_SAMPLER	= D3D_SIF_COMPARISON_SAMPLER,
1136 	D3D10_SIF_TEXTURE_COMPONENT_0	= D3D_SIF_TEXTURE_COMPONENT_0,
1137 	D3D10_SIF_TEXTURE_COMPONENT_1	= D3D_SIF_TEXTURE_COMPONENT_1,
1138 	D3D10_SIF_TEXTURE_COMPONENTS	= D3D_SIF_TEXTURE_COMPONENTS,
1139 	D3D_SIF_FORCE_DWORD	= 0x7fffffff
1140 }
1141 alias _D3D_SHADER_INPUT_FLAGS D3D_SHADER_INPUT_FLAGS;
1142 
1143 
1144 alias _D3D_SHADER_INPUT_TYPE = int;
1145 enum : _D3D_SHADER_INPUT_TYPE
1146 {
1147 	D3D_SIT_CBUFFER	= 0,
1148 	D3D_SIT_TBUFFER	= ( D3D_SIT_CBUFFER + 1 ) ,
1149 	D3D_SIT_TEXTURE	= ( D3D_SIT_TBUFFER + 1 ) ,
1150 	D3D_SIT_SAMPLER	= ( D3D_SIT_TEXTURE + 1 ) ,
1151 	D3D_SIT_UAV_RWTYPED	= ( D3D_SIT_SAMPLER + 1 ) ,
1152 	D3D_SIT_STRUCTURED	= ( D3D_SIT_UAV_RWTYPED + 1 ) ,
1153 	D3D_SIT_UAV_RWSTRUCTURED	= ( D3D_SIT_STRUCTURED + 1 ) ,
1154 	D3D_SIT_BYTEADDRESS	= ( D3D_SIT_UAV_RWSTRUCTURED + 1 ) ,
1155 	D3D_SIT_UAV_RWBYTEADDRESS	= ( D3D_SIT_BYTEADDRESS + 1 ) ,
1156 	D3D_SIT_UAV_APPEND_STRUCTURED	= ( D3D_SIT_UAV_RWBYTEADDRESS + 1 ) ,
1157 	D3D_SIT_UAV_CONSUME_STRUCTURED	= ( D3D_SIT_UAV_APPEND_STRUCTURED + 1 ) ,
1158 	D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER	= ( D3D_SIT_UAV_CONSUME_STRUCTURED + 1 ) ,
1159 	D3D10_SIT_CBUFFER	= D3D_SIT_CBUFFER,
1160 	D3D10_SIT_TBUFFER	= D3D_SIT_TBUFFER,
1161 	D3D10_SIT_TEXTURE	= D3D_SIT_TEXTURE,
1162 	D3D10_SIT_SAMPLER	= D3D_SIT_SAMPLER,
1163 	D3D11_SIT_UAV_RWTYPED	= D3D_SIT_UAV_RWTYPED,
1164 	D3D11_SIT_STRUCTURED	= D3D_SIT_STRUCTURED,
1165 	D3D11_SIT_UAV_RWSTRUCTURED	= D3D_SIT_UAV_RWSTRUCTURED,
1166 	D3D11_SIT_BYTEADDRESS	= D3D_SIT_BYTEADDRESS,
1167 	D3D11_SIT_UAV_RWBYTEADDRESS	= D3D_SIT_UAV_RWBYTEADDRESS,
1168 	D3D11_SIT_UAV_APPEND_STRUCTURED	= D3D_SIT_UAV_APPEND_STRUCTURED,
1169 	D3D11_SIT_UAV_CONSUME_STRUCTURED	= D3D_SIT_UAV_CONSUME_STRUCTURED,
1170 	D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER	= D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER
1171 }
1172 alias _D3D_SHADER_INPUT_TYPE D3D_SHADER_INPUT_TYPE;
1173 
1174 
1175 alias _D3D_SHADER_CBUFFER_FLAGS = int;
1176 enum : _D3D_SHADER_CBUFFER_FLAGS
1177 {
1178 	D3D_CBF_USERPACKED	= 1,
1179 	D3D10_CBF_USERPACKED	= D3D_CBF_USERPACKED,
1180 	D3D_CBF_FORCE_DWORD	= 0x7fffffff
1181 }
1182 alias _D3D_SHADER_CBUFFER_FLAGS D3D_SHADER_CBUFFER_FLAGS;
1183 
1184 
1185 alias _D3D_CBUFFER_TYPE = int;
1186 enum : _D3D_CBUFFER_TYPE
1187 {
1188 	D3D_CT_CBUFFER	= 0,
1189 	D3D_CT_TBUFFER	= ( D3D_CT_CBUFFER + 1 ) ,
1190 	D3D_CT_INTERFACE_POINTERS	= ( D3D_CT_TBUFFER + 1 ) ,
1191 	D3D_CT_RESOURCE_BIND_INFO	= ( D3D_CT_INTERFACE_POINTERS + 1 ) ,
1192 	D3D10_CT_CBUFFER	= D3D_CT_CBUFFER,
1193 	D3D10_CT_TBUFFER	= D3D_CT_TBUFFER,
1194 	D3D11_CT_CBUFFER	= D3D_CT_CBUFFER,
1195 	D3D11_CT_TBUFFER	= D3D_CT_TBUFFER,
1196 	D3D11_CT_INTERFACE_POINTERS	= D3D_CT_INTERFACE_POINTERS,
1197 	D3D11_CT_RESOURCE_BIND_INFO	= D3D_CT_RESOURCE_BIND_INFO
1198 }
1199 alias _D3D_CBUFFER_TYPE D3D_CBUFFER_TYPE;
1200 
1201 
1202 alias D3D_NAME = int;
1203 enum : D3D_NAME
1204 {
1205 	D3D_NAME_UNDEFINED	= 0,
1206 	D3D_NAME_POSITION	= 1,
1207 	D3D_NAME_CLIP_DISTANCE	= 2,
1208 	D3D_NAME_CULL_DISTANCE	= 3,
1209 	D3D_NAME_RENDER_TARGET_ARRAY_INDEX	= 4,
1210 	D3D_NAME_VIEWPORT_ARRAY_INDEX	= 5,
1211 	D3D_NAME_VERTEX_ID	= 6,
1212 	D3D_NAME_PRIMITIVE_ID	= 7,
1213 	D3D_NAME_INSTANCE_ID	= 8,
1214 	D3D_NAME_IS_FRONT_FACE	= 9,
1215 	D3D_NAME_SAMPLE_INDEX	= 10,
1216 	D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR	= 11,
1217 	D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR	= 12,
1218 	D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR	= 13,
1219 	D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR	= 14,
1220 	D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR	= 15,
1221 	D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR	= 16,
1222 	D3D_NAME_TARGET	= 64,
1223 	D3D_NAME_DEPTH	= 65,
1224 	D3D_NAME_COVERAGE	= 66,
1225 	D3D_NAME_DEPTH_GREATER_EQUAL	= 67,
1226 	D3D_NAME_DEPTH_LESS_EQUAL	= 68,
1227     D3D_NAME_STENCIL_REF	= 69,
1228     D3D_NAME_INNER_COVERAGE	= 70,
1229 	D3D10_NAME_UNDEFINED	= D3D_NAME_UNDEFINED,
1230 	D3D10_NAME_POSITION	= D3D_NAME_POSITION,
1231 	D3D10_NAME_CLIP_DISTANCE	= D3D_NAME_CLIP_DISTANCE,
1232 	D3D10_NAME_CULL_DISTANCE	= D3D_NAME_CULL_DISTANCE,
1233 	D3D10_NAME_RENDER_TARGET_ARRAY_INDEX	= D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
1234 	D3D10_NAME_VIEWPORT_ARRAY_INDEX	= D3D_NAME_VIEWPORT_ARRAY_INDEX,
1235 	D3D10_NAME_VERTEX_ID	= D3D_NAME_VERTEX_ID,
1236 	D3D10_NAME_PRIMITIVE_ID	= D3D_NAME_PRIMITIVE_ID,
1237 	D3D10_NAME_INSTANCE_ID	= D3D_NAME_INSTANCE_ID,
1238 	D3D10_NAME_IS_FRONT_FACE	= D3D_NAME_IS_FRONT_FACE,
1239 	D3D10_NAME_SAMPLE_INDEX	= D3D_NAME_SAMPLE_INDEX,
1240 	D3D10_NAME_TARGET	= D3D_NAME_TARGET,
1241 	D3D10_NAME_DEPTH	= D3D_NAME_DEPTH,
1242 	D3D10_NAME_COVERAGE	= D3D_NAME_COVERAGE,
1243 	D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR	= D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
1244 	D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR	= D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
1245 	D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR	= D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
1246 	D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR	= D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
1247 	D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR	= D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
1248 	D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR	= D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
1249 	D3D11_NAME_DEPTH_GREATER_EQUAL	= D3D_NAME_DEPTH_GREATER_EQUAL,
1250 	D3D11_NAME_DEPTH_LESS_EQUAL	= D3D_NAME_DEPTH_LESS_EQUAL,
1251     D3D11_NAME_STENCIL_REF	= D3D_NAME_STENCIL_REF,
1252     D3D11_NAME_INNER_COVERAGE	= D3D_NAME_INNER_COVERAGE
1253 }
1254 
1255 alias D3D_RESOURCE_RETURN_TYPE = int;
1256 enum : D3D_RESOURCE_RETURN_TYPE
1257 {
1258 	D3D_RETURN_TYPE_UNORM	= 1,
1259 	D3D_RETURN_TYPE_SNORM	= 2,
1260 	D3D_RETURN_TYPE_SINT	= 3,
1261 	D3D_RETURN_TYPE_UINT	= 4,
1262 	D3D_RETURN_TYPE_FLOAT	= 5,
1263 	D3D_RETURN_TYPE_MIXED	= 6,
1264 	D3D_RETURN_TYPE_DOUBLE	= 7,
1265 	D3D_RETURN_TYPE_CONTINUED	= 8,
1266 	D3D10_RETURN_TYPE_UNORM	= D3D_RETURN_TYPE_UNORM,
1267 	D3D10_RETURN_TYPE_SNORM	= D3D_RETURN_TYPE_SNORM,
1268 	D3D10_RETURN_TYPE_SINT	= D3D_RETURN_TYPE_SINT,
1269 	D3D10_RETURN_TYPE_UINT	= D3D_RETURN_TYPE_UINT,
1270 	D3D10_RETURN_TYPE_FLOAT	= D3D_RETURN_TYPE_FLOAT,
1271 	D3D10_RETURN_TYPE_MIXED	= D3D_RETURN_TYPE_MIXED,
1272 	D3D11_RETURN_TYPE_UNORM	= D3D_RETURN_TYPE_UNORM,
1273 	D3D11_RETURN_TYPE_SNORM	= D3D_RETURN_TYPE_SNORM,
1274 	D3D11_RETURN_TYPE_SINT	= D3D_RETURN_TYPE_SINT,
1275 	D3D11_RETURN_TYPE_UINT	= D3D_RETURN_TYPE_UINT,
1276 	D3D11_RETURN_TYPE_FLOAT	= D3D_RETURN_TYPE_FLOAT,
1277 	D3D11_RETURN_TYPE_MIXED	= D3D_RETURN_TYPE_MIXED,
1278 	D3D11_RETURN_TYPE_DOUBLE	= D3D_RETURN_TYPE_DOUBLE,
1279 	D3D11_RETURN_TYPE_CONTINUED	= D3D_RETURN_TYPE_CONTINUED
1280 }
1281 
1282 alias D3D_REGISTER_COMPONENT_TYPE = int;
1283 enum : D3D_REGISTER_COMPONENT_TYPE
1284 {
1285 	D3D_REGISTER_COMPONENT_UNKNOWN	= 0,
1286 	D3D_REGISTER_COMPONENT_UINT32	= 1,
1287 	D3D_REGISTER_COMPONENT_SINT32	= 2,
1288 	D3D_REGISTER_COMPONENT_FLOAT32	= 3,
1289 	D3D10_REGISTER_COMPONENT_UNKNOWN	= D3D_REGISTER_COMPONENT_UNKNOWN,
1290 	D3D10_REGISTER_COMPONENT_UINT32	= D3D_REGISTER_COMPONENT_UINT32,
1291 	D3D10_REGISTER_COMPONENT_SINT32	= D3D_REGISTER_COMPONENT_SINT32,
1292 	D3D10_REGISTER_COMPONENT_FLOAT32	= D3D_REGISTER_COMPONENT_FLOAT32
1293 }
1294 
1295 alias D3D_TESSELLATOR_DOMAIN = int;
1296 enum : D3D_TESSELLATOR_DOMAIN
1297 {
1298 	D3D_TESSELLATOR_DOMAIN_UNDEFINED	= 0,
1299 	D3D_TESSELLATOR_DOMAIN_ISOLINE	= 1,
1300 	D3D_TESSELLATOR_DOMAIN_TRI	= 2,
1301 	D3D_TESSELLATOR_DOMAIN_QUAD	= 3,
1302 	D3D11_TESSELLATOR_DOMAIN_UNDEFINED	= D3D_TESSELLATOR_DOMAIN_UNDEFINED,
1303 	D3D11_TESSELLATOR_DOMAIN_ISOLINE	= D3D_TESSELLATOR_DOMAIN_ISOLINE,
1304 	D3D11_TESSELLATOR_DOMAIN_TRI	= D3D_TESSELLATOR_DOMAIN_TRI,
1305 	D3D11_TESSELLATOR_DOMAIN_QUAD	= D3D_TESSELLATOR_DOMAIN_QUAD
1306 }
1307 
1308 alias D3D_TESSELLATOR_PARTITIONING = int;
1309 enum : D3D_TESSELLATOR_PARTITIONING
1310 {
1311 	D3D_TESSELLATOR_PARTITIONING_UNDEFINED	= 0,
1312 	D3D_TESSELLATOR_PARTITIONING_INTEGER	= 1,
1313 	D3D_TESSELLATOR_PARTITIONING_POW2	= 2,
1314 	D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD	= 3,
1315 	D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN	= 4,
1316 	D3D11_TESSELLATOR_PARTITIONING_UNDEFINED	= D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
1317 	D3D11_TESSELLATOR_PARTITIONING_INTEGER	= D3D_TESSELLATOR_PARTITIONING_INTEGER,
1318 	D3D11_TESSELLATOR_PARTITIONING_POW2	= D3D_TESSELLATOR_PARTITIONING_POW2,
1319 	D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD	= D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
1320 	D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN	= D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN
1321 }
1322 
1323 
1324 alias D3D_TESSELLATOR_OUTPUT_PRIMITIVE = int;
1325 enum : D3D_TESSELLATOR_OUTPUT_PRIMITIVE
1326 {
1327 	D3D_TESSELLATOR_OUTPUT_UNDEFINED	= 0,
1328 	D3D_TESSELLATOR_OUTPUT_POINT	= 1,
1329 	D3D_TESSELLATOR_OUTPUT_LINE	= 2,
1330 	D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW	= 3,
1331 	D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW	= 4,
1332 	D3D11_TESSELLATOR_OUTPUT_UNDEFINED	= D3D_TESSELLATOR_OUTPUT_UNDEFINED,
1333 	D3D11_TESSELLATOR_OUTPUT_POINT	= D3D_TESSELLATOR_OUTPUT_POINT,
1334 	D3D11_TESSELLATOR_OUTPUT_LINE	= D3D_TESSELLATOR_OUTPUT_LINE,
1335 	D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW	= D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
1336 	D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW	= D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW
1337 }
1338 
1339 alias DWORD D3D_MIN_PRECISION;
1340 enum : D3D_MIN_PRECISION
1341 {
1342     D3D_MIN_PRECISION_DEFAULT	= 0,
1343     D3D_MIN_PRECISION_FLOAT_16	= 1,
1344     D3D_MIN_PRECISION_FLOAT_2_8	= 2,
1345     D3D_MIN_PRECISION_RESERVED	= 3,
1346     D3D_MIN_PRECISION_SINT_16	= 4,
1347     D3D_MIN_PRECISION_UINT_16	= 5,
1348     D3D_MIN_PRECISION_ANY_16	= 0xf0,
1349     D3D_MIN_PRECISION_ANY_10	= 0xf1
1350 }
1351 
1352 alias DWORD D3D_INTERPOLATION_MODE;
1353 enum : D3D_INTERPOLATION_MODE
1354 {
1355     D3D_INTERPOLATION_UNDEFINED	= 0,
1356     D3D_INTERPOLATION_CONSTANT	= 1,
1357     D3D_INTERPOLATION_LINEAR	= 2,
1358     D3D_INTERPOLATION_LINEAR_CENTROID	= 3,
1359     D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE	= 4,
1360     D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID	= 5,
1361     D3D_INTERPOLATION_LINEAR_SAMPLE	= 6,
1362     D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE	= 7
1363 }
1364 
1365 alias DWORD D3D_PARAMETER_FLAGS;
1366 enum : D3D_PARAMETER_FLAGS
1367 {
1368     D3D_PF_NONE	= 0,
1369     D3D_PF_IN	= 0x1,
1370     D3D_PF_OUT	= 0x2,
1371     D3D_PF_FORCE_DWORD	= 0x7fffffff
1372 }
1373 
1374 mixin( uuid!(WKPDID_D3DDebugObjectName,  "429b8c22-9188-4b0c-8742-acb0bf85c200") );
1375 mixin( uuid!(WKPDID_D3DDebugObjectNameW, "4cca5fd8-921f-42c8-8566-70caf2a9b741") );
1376 mixin( uuid!(WKPDID_CommentStringW,      "d0149dc0-90e8-4ec8-8144-e900ad266bb2") );
1377 interface WKPDID_D3DDebugObjectName {}
1378 interface WKPDID_D3DDebugObjectNameW {}
1379 interface WKPDID_CommentStringW {}