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