]> git.cworth.org Git - apitrace/blob - specs/d3d9types.py
Specify constant array lengths as integers.
[apitrace] / specs / d3d9types.py
1 ##########################################################################
2 #
3 # Copyright 2008-2009 VMware, Inc.
4 # All Rights Reserved.
5 #
6 # Permission is hereby granted, free of charge, to any person obtaining a copy
7 # of this software and associated documentation files (the "Software"), to deal
8 # in the Software without restriction, including without limitation the rights
9 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 # copies of the Software, and to permit persons to whom the Software is
11 # furnished to do so, subject to the following conditions:
12 #
13 # The above copyright notice and this permission notice shall be included in
14 # all copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 # THE SOFTWARE.
23 #
24 ##########################################################################/
25
26 """d3d9types.h"""
27
28 from winapi import *
29
30 D3DCOLOR = Alias("D3DCOLOR", DWORD)
31
32 D3DVECTOR = Struct("D3DVECTOR", [
33     (Float, "x"),
34     (Float, "y"),
35     (Float, "z"),
36 ])
37
38 D3DCOLORVALUE = Struct("D3DCOLORVALUE", [
39     (Float, "r"),
40     (Float, "g"),
41     (Float, "b"),
42     (Float, "a"),
43 ])
44
45 D3DRECT = Struct("D3DRECT", [
46     (LONG, "x1"),
47     (LONG, "y1"),
48     (LONG, "x2"),
49     (LONG, "y2"),
50 ])
51
52 D3DMATRIX = Struct("D3DMATRIX", [
53     (Array(Array(Float, 4), "4"), "m"),
54 ])
55
56 D3DVIEWPORT9 = Struct("D3DVIEWPORT9", [
57     (DWORD, "X"),
58     (DWORD, "Y"),
59     (DWORD, "Width"),
60     (DWORD, "Height"),
61     (Float, "MinZ"),
62     (Float, "MaxZ"),
63 ])
64
65 D3DCLIPPLANE = Flags(DWORD, [
66     "D3DCLIPPLANE0",
67     "D3DCLIPPLANE1",
68     "D3DCLIPPLANE2",
69     "D3DCLIPPLANE3",
70     "D3DCLIPPLANE4",
71     "D3DCLIPPLANE5",
72 ])
73
74 D3DCS = Flags(DWORD, [
75     "D3DCS_ALL",
76     "D3DCS_LEFT",
77     "D3DCS_RIGHT",
78     "D3DCS_TOP",
79     "D3DCS_BOTTOM",
80     "D3DCS_FRONT",
81     "D3DCS_BACK",
82     "D3DCS_PLANE0",
83     "D3DCS_PLANE1",
84     "D3DCS_PLANE2",
85     "D3DCS_PLANE3",
86     "D3DCS_PLANE4",
87     "D3DCS_PLANE5",
88 ])
89
90 D3DCLIPSTATUS9 = Struct("D3DCLIPSTATUS9", [
91     (DWORD, "ClipUnion"),
92     (DWORD, "ClipIntersection"),
93 ])
94
95 D3DMATERIAL9 = Struct("D3DMATERIAL9", [
96     (D3DCOLORVALUE, "Diffuse"),
97     (D3DCOLORVALUE, "Ambient"),
98     (D3DCOLORVALUE, "Specular"),
99     (D3DCOLORVALUE, "Emissive"),
100     (Float, "Power"),
101 ])
102
103 D3DLIGHTTYPE = Enum("D3DLIGHTTYPE", [
104     "D3DLIGHT_POINT",
105     "D3DLIGHT_SPOT",
106     "D3DLIGHT_DIRECTIONAL",
107 ])
108
109 D3DLIGHT9 = Struct("D3DLIGHT9", [
110     (D3DLIGHTTYPE, "Type"),
111     (D3DCOLORVALUE, "Diffuse"),
112     (D3DCOLORVALUE, "Specular"),
113     (D3DCOLORVALUE, "Ambient"),
114     (D3DVECTOR, "Position"),
115     (D3DVECTOR, "Direction"),
116     (Float, "Range"),
117     (Float, "Falloff"),
118     (Float, "Attenuation0"),
119     (Float, "Attenuation1"),
120     (Float, "Attenuation2"),
121     (Float, "Theta"),
122     (Float, "Phi"),
123 ])
124
125 D3DCLEAR = Flags(DWORD, [
126     "D3DCLEAR_TARGET",
127     "D3DCLEAR_ZBUFFER",
128     "D3DCLEAR_STENCIL",
129 ])
130
131 D3DSHADEMODE = Enum("D3DSHADEMODE", [
132     "D3DSHADE_FLAT",
133     "D3DSHADE_GOURAUD",
134     "D3DSHADE_PHONG",
135 ])
136
137 D3DFILLMODE = Enum("D3DFILLMODE", [
138     "D3DFILL_POINT",
139     "D3DFILL_WIREFRAME",
140     "D3DFILL_SOLID",
141 ])
142
143 D3DBLEND = Enum("D3DBLEND", [
144     "D3DBLEND_ZERO",
145     "D3DBLEND_ONE",
146     "D3DBLEND_SRCCOLOR",
147     "D3DBLEND_INVSRCCOLOR",
148     "D3DBLEND_SRCALPHA",
149     "D3DBLEND_INVSRCALPHA",
150     "D3DBLEND_DESTALPHA",
151     "D3DBLEND_INVDESTALPHA",
152     "D3DBLEND_DESTCOLOR",
153     "D3DBLEND_INVDESTCOLOR",
154     "D3DBLEND_SRCALPHASAT",
155     "D3DBLEND_BOTHSRCALPHA",
156     "D3DBLEND_BOTHINVSRCALPHA",
157     "D3DBLEND_BLENDFACTOR",
158     "D3DBLEND_INVBLENDFACTOR",
159     "D3DBLEND_SRCCOLOR2",
160     "D3DBLEND_INVSRCCOLOR2",
161 ])
162
163 D3DBLENDOP = Enum("D3DBLENDOP", [
164     "D3DBLENDOP_ADD",
165     "D3DBLENDOP_SUBTRACT",
166     "D3DBLENDOP_REVSUBTRACT",
167     "D3DBLENDOP_MIN",
168     "D3DBLENDOP_MAX",
169 ])
170
171 D3DTEXTUREADDRESS = Enum("D3DTEXTUREADDRESS", [
172     "D3DTADDRESS_WRAP",
173     "D3DTADDRESS_MIRROR",
174     "D3DTADDRESS_CLAMP",
175     "D3DTADDRESS_BORDER",
176     "D3DTADDRESS_MIRRORONCE",
177 ])
178
179 D3DCULL = Enum("D3DCULL", [
180     "D3DCULL_NONE",
181     "D3DCULL_CW",
182     "D3DCULL_CCW",
183 ])
184
185 D3DCMPFUNC = Enum("D3DCMPFUNC", [
186     "D3DCMP_NEVER",
187     "D3DCMP_LESS",
188     "D3DCMP_EQUAL",
189     "D3DCMP_LESSEQUAL",
190     "D3DCMP_GREATER",
191     "D3DCMP_NOTEQUAL",
192     "D3DCMP_GREATEREQUAL",
193     "D3DCMP_ALWAYS",
194 ])
195
196 D3DSTENCILOP = Enum("D3DSTENCILOP", [
197     "D3DSTENCILOP_KEEP",
198     "D3DSTENCILOP_ZERO",
199     "D3DSTENCILOP_REPLACE",
200     "D3DSTENCILOP_INCRSAT",
201     "D3DSTENCILOP_DECRSAT",
202     "D3DSTENCILOP_INVERT",
203     "D3DSTENCILOP_INCR",
204     "D3DSTENCILOP_DECR",
205 ])
206
207 D3DFOGMODE = Enum("D3DFOGMODE", [
208     "D3DFOG_NONE",
209     "D3DFOG_EXP",
210     "D3DFOG_EXP2",
211     "D3DFOG_LINEAR",
212 ])
213
214 D3DZBUFFERTYPE = Enum("D3DZBUFFERTYPE", [
215     "D3DZB_FALSE",
216     "D3DZB_TRUE",
217     "D3DZB_USEW",
218 ])
219
220 D3DPRIMITIVETYPE = Enum("D3DPRIMITIVETYPE", [
221     "D3DPT_POINTLIST",
222     "D3DPT_LINELIST",
223     "D3DPT_LINESTRIP",
224     "D3DPT_TRIANGLELIST",
225     "D3DPT_TRIANGLESTRIP",
226     "D3DPT_TRIANGLEFAN",
227 ])
228
229 D3DTRANSFORMSTATETYPE = Enum("D3DTRANSFORMSTATETYPE", [
230     "D3DTS_VIEW",
231     "D3DTS_PROJECTION",
232     "D3DTS_TEXTURE0",
233     "D3DTS_TEXTURE1",
234     "D3DTS_TEXTURE2",
235     "D3DTS_TEXTURE3",
236     "D3DTS_TEXTURE4",
237     "D3DTS_TEXTURE5",
238     "D3DTS_TEXTURE6",
239     "D3DTS_TEXTURE7",
240 ])
241
242 D3DTS = Flags(DWORD, [
243     "D3DTS_WORLD",
244     "D3DTS_WORLD1",
245     "D3DTS_WORLD2",
246     "D3DTS_WORLD3",
247 ])
248
249 D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [
250     "D3DMCS_MATERIAL",
251     "D3DMCS_COLOR1",
252     "D3DMCS_COLOR2",
253 ])
254
255 D3DWRAPCOORD = Flags(DWORD, [
256     "D3DWRAPCOORD_0",
257     "D3DWRAPCOORD_1",
258     "D3DWRAPCOORD_2",
259     "D3DWRAPCOORD_3",
260 ])
261
262 D3DCOLORWRITEENABLE = Flags(DWORD, [
263     "D3DCOLORWRITEENABLE_RED",
264     "D3DCOLORWRITEENABLE_GREEN",
265     "D3DCOLORWRITEENABLE_BLUE",
266     "D3DCOLORWRITEENABLE_ALPHA",
267 ])
268
269 D3DDEGREETYPE = Enum("D3DDEGREETYPE", [
270     "D3DDEGREE_LINEAR",
271     "D3DDEGREE_QUADRATIC",
272     "D3DDEGREE_CUBIC",
273     "D3DDEGREE_QUINTIC",
274 ])
275
276 D3DPATCHEDGESTYLE = Enum("D3DPATCHEDGESTYLE", [
277     "D3DPATCHEDGE_DISCRETE",
278     "D3DPATCHEDGE_CONTINUOUS",
279 ])
280
281 D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
282     "D3DVBF_DISABLE",
283     "D3DVBF_1WEIGHTS",
284     "D3DVBF_2WEIGHTS",
285     "D3DVBF_3WEIGHTS",
286     "D3DVBF_TWEENING",
287     "D3DVBF_0WEIGHTS",
288 ])
289
290 D3DDEBUGMONITORTOKENS = Enum("D3DDEBUGMONITORTOKENS", [
291     "D3DDMT_ENABLE",
292     "D3DDMT_DISABLE",
293 ])
294
295 # TODO: Convert these to/from actual floats
296 FLOAT_AS_DWORD = DWORD
297
298 D3DRENDERSTATEVALUE = Polymorphic(DWORD, "State", [
299     ("D3DRS_ZENABLE", D3DZBUFFERTYPE),
300     ("D3DRS_FILLMODE", D3DFILLMODE),
301     ("D3DRS_SHADEMODE", D3DSHADEMODE),
302     ("D3DRS_ZWRITEENABLE", BOOL),
303     ("D3DRS_ALPHATESTENABLE", BOOL),
304     ("D3DRS_LASTPIXEL", BOOL),
305     ("D3DRS_SRCBLEND", D3DBLEND),
306     ("D3DRS_DESTBLEND", D3DBLEND),
307     ("D3DRS_CULLMODE", D3DCULL),
308     ("D3DRS_ZFUNC", D3DCMPFUNC),
309     ("D3DRS_ALPHAREF", DWORD),
310     ("D3DRS_ALPHAFUNC", D3DCMPFUNC),
311     ("D3DRS_DITHERENABLE", BOOL),
312     ("D3DRS_ALPHABLENDENABLE", BOOL),
313     ("D3DRS_FOGENABLE", BOOL),
314     ("D3DRS_SPECULARENABLE", BOOL),
315     ("D3DRS_FOGCOLOR", D3DCOLOR),
316     ("D3DRS_FOGTABLEMODE", D3DFOGMODE),
317     ("D3DRS_FOGSTART", FLOAT_AS_DWORD),
318     ("D3DRS_FOGEND", FLOAT_AS_DWORD),
319     ("D3DRS_FOGDENSITY", FLOAT_AS_DWORD),
320     ("D3DRS_RANGEFOGENABLE", BOOL),
321     ("D3DRS_STENCILENABLE", BOOL),
322     ("D3DRS_STENCILFAIL", D3DSTENCILOP),
323     ("D3DRS_STENCILZFAIL", D3DSTENCILOP),
324     ("D3DRS_STENCILPASS", D3DSTENCILOP),
325     ("D3DRS_STENCILFUNC", D3DCMPFUNC),
326     ("D3DRS_STENCILREF", DWORD),
327     ("D3DRS_STENCILMASK", DWORD),
328     ("D3DRS_STENCILWRITEMASK", DWORD),
329     ("D3DRS_TEXTUREFACTOR", D3DCOLOR),
330     ("D3DRS_WRAP0", D3DWRAPCOORD),
331     ("D3DRS_WRAP1", D3DWRAPCOORD),
332     ("D3DRS_WRAP2", D3DWRAPCOORD),
333     ("D3DRS_WRAP3", D3DWRAPCOORD),
334     ("D3DRS_WRAP4", D3DWRAPCOORD),
335     ("D3DRS_WRAP5", D3DWRAPCOORD),
336     ("D3DRS_WRAP6", D3DWRAPCOORD),
337     ("D3DRS_WRAP7", D3DWRAPCOORD),
338     ("D3DRS_CLIPPING", BOOL),
339     ("D3DRS_LIGHTING", BOOL),
340     ("D3DRS_AMBIENT", D3DCOLOR),
341     ("D3DRS_FOGVERTEXMODE", D3DFOGMODE),
342     ("D3DRS_COLORVERTEX", BOOL),
343     ("D3DRS_LOCALVIEWER", BOOL),
344     ("D3DRS_NORMALIZENORMALS", BOOL),
345     ("D3DRS_DIFFUSEMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
346     ("D3DRS_SPECULARMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
347     ("D3DRS_AMBIENTMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
348     ("D3DRS_EMISSIVEMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
349     ("D3DRS_VERTEXBLEND", D3DVERTEXBLENDFLAGS),
350     ("D3DRS_CLIPPLANEENABLE", D3DCLIPPLANE),
351     ("D3DRS_POINTSIZE", FLOAT_AS_DWORD),
352     ("D3DRS_POINTSIZE_MIN", FLOAT_AS_DWORD),
353     ("D3DRS_POINTSPRITEENABLE", BOOL),
354     ("D3DRS_POINTSCALEENABLE", BOOL),
355     ("D3DRS_POINTSCALE_A", FLOAT_AS_DWORD),
356     ("D3DRS_POINTSCALE_B", FLOAT_AS_DWORD),
357     ("D3DRS_POINTSCALE_C", FLOAT_AS_DWORD),
358     ("D3DRS_MULTISAMPLEANTIALIAS", BOOL),
359     ("D3DRS_MULTISAMPLEMASK", DWORD),
360     ("D3DRS_PATCHEDGESTYLE", D3DPATCHEDGESTYLE),
361     ("D3DRS_DEBUGMONITORTOKEN", D3DDEBUGMONITORTOKENS),
362     ("D3DRS_POINTSIZE_MAX", FLOAT_AS_DWORD),
363     ("D3DRS_INDEXEDVERTEXBLENDENABLE", BOOL),
364     ("D3DRS_COLORWRITEENABLE", DWORD),
365     ("D3DRS_TWEENFACTOR", FLOAT_AS_DWORD),
366     ("D3DRS_BLENDOP", D3DBLENDOP),
367     ("D3DRS_POSITIONDEGREE", D3DDEGREETYPE),
368     ("D3DRS_NORMALDEGREE", D3DDEGREETYPE),
369     ("D3DRS_SCISSORTESTENABLE", BOOL),
370     ("D3DRS_SLOPESCALEDEPTHBIAS", FLOAT_AS_DWORD),
371     ("D3DRS_ANTIALIASEDLINEENABLE", BOOL),
372     ("D3DRS_MINTESSELLATIONLEVEL", FLOAT_AS_DWORD),
373     ("D3DRS_MAXTESSELLATIONLEVEL", FLOAT_AS_DWORD),
374     ("D3DRS_ADAPTIVETESS_X", FLOAT_AS_DWORD),
375     ("D3DRS_ADAPTIVETESS_Y", FLOAT_AS_DWORD),
376     ("D3DRS_ADAPTIVETESS_Z", FLOAT_AS_DWORD),
377     ("D3DRS_ADAPTIVETESS_W", FLOAT_AS_DWORD),
378     ("D3DRS_ENABLEADAPTIVETESSELLATION", BOOL),
379     ("D3DRS_TWOSIDEDSTENCILMODE", BOOL),
380     ("D3DRS_CCW_STENCILFAIL", D3DSTENCILOP),
381     ("D3DRS_CCW_STENCILZFAIL", D3DSTENCILOP),
382     ("D3DRS_CCW_STENCILPASS", D3DSTENCILOP),
383     ("D3DRS_CCW_STENCILFUNC", D3DCMPFUNC),
384     ("D3DRS_COLORWRITEENABLE1", D3DCOLORWRITEENABLE),
385     ("D3DRS_COLORWRITEENABLE2", D3DCOLORWRITEENABLE),
386     ("D3DRS_COLORWRITEENABLE3", D3DCOLORWRITEENABLE),
387     ("D3DRS_BLENDFACTOR", D3DCOLOR),
388     ("D3DRS_SRGBWRITEENABLE", BOOL),
389     ("D3DRS_DEPTHBIAS", FLOAT_AS_DWORD),
390     ("D3DRS_WRAP8", D3DWRAPCOORD),
391     ("D3DRS_WRAP9", D3DWRAPCOORD),
392     ("D3DRS_WRAP10", D3DWRAPCOORD),
393     ("D3DRS_WRAP11", D3DWRAPCOORD),
394     ("D3DRS_WRAP12", D3DWRAPCOORD),
395     ("D3DRS_WRAP13", D3DWRAPCOORD),
396     ("D3DRS_WRAP14", D3DWRAPCOORD),
397     ("D3DRS_WRAP15", D3DWRAPCOORD),
398     ("D3DRS_SEPARATEALPHABLENDENABLE", BOOL),
399     ("D3DRS_SRCBLENDALPHA", D3DBLEND),
400     ("D3DRS_DESTBLENDALPHA", D3DBLEND),
401     ("D3DRS_BLENDOPALPHA", D3DBLENDOP),
402
403     # XXX: D3DRENDERSTATE_WRAPBIAS + n
404 ])
405
406 D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [
407     expr for expr, types in D3DRENDERSTATEVALUE.switch_types
408 ])
409
410 D3DTSS_TCI = Flags(DWORD, [
411     #"D3DTSS_TCI_PASSTHRU", 0
412     "D3DTSS_TCI_CAMERASPACENORMAL",
413     "D3DTSS_TCI_CAMERASPACEPOSITION",
414     "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
415     "D3DTSS_TCI_SPHEREMAP",
416 ])
417
418 D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
419     "D3DTOP_DISABLE",
420     "D3DTOP_SELECTARG1",
421     "D3DTOP_SELECTARG2",
422     "D3DTOP_MODULATE",
423     "D3DTOP_MODULATE2X",
424     "D3DTOP_MODULATE4X",
425     "D3DTOP_ADD",
426     "D3DTOP_ADDSIGNED",
427     "D3DTOP_ADDSIGNED2X",
428     "D3DTOP_SUBTRACT",
429     "D3DTOP_ADDSMOOTH",
430     "D3DTOP_BLENDDIFFUSEALPHA",
431     "D3DTOP_BLENDTEXTUREALPHA",
432     "D3DTOP_BLENDFACTORALPHA",
433     "D3DTOP_BLENDTEXTUREALPHAPM",
434     "D3DTOP_BLENDCURRENTALPHA",
435     "D3DTOP_PREMODULATE",
436     "D3DTOP_MODULATEALPHA_ADDCOLOR",
437     "D3DTOP_MODULATECOLOR_ADDALPHA",
438     "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
439     "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
440     "D3DTOP_BUMPENVMAP",
441     "D3DTOP_BUMPENVMAPLUMINANCE",
442     "D3DTOP_DOTPRODUCT3",
443     "D3DTOP_MULTIPLYADD",
444     "D3DTOP_LERP",
445 ])
446
447 D3DTA = Flags(DWORD, [
448     "D3DTA_SELECTMASK",
449     "D3DTA_DIFFUSE",
450     "D3DTA_CURRENT",
451     "D3DTA_TEXTURE",
452     "D3DTA_TFACTOR",
453     "D3DTA_SPECULAR",
454     "D3DTA_TEMP",
455     "D3DTA_CONSTANT",
456     "D3DTA_COMPLEMENT",
457     "D3DTA_ALPHAREPLICATE",
458 ])
459
460 D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
461     "D3DTTFF_DISABLE",
462     "D3DTTFF_COUNT1",
463     "D3DTTFF_COUNT2",
464     "D3DTTFF_COUNT3",
465     "D3DTTFF_COUNT4",
466     "D3DTTFF_PROJECTED",
467 ])
468
469
470 D3DTEXTURESTAGESTATEVALUE = Polymorphic(DWORD, "Type", [
471     ("D3DTSS_COLOROP", D3DTEXTUREOP),
472     ("D3DTSS_COLORARG1", D3DTA),
473     ("D3DTSS_COLORARG2", D3DTA),
474     ("D3DTSS_ALPHAOP", D3DTEXTUREOP),
475     ("D3DTSS_ALPHAARG1", D3DTA),
476     ("D3DTSS_ALPHAARG2", D3DTA),
477     ("D3DTSS_BUMPENVMAT00", FLOAT_AS_DWORD),
478     ("D3DTSS_BUMPENVMAT01", FLOAT_AS_DWORD),
479     ("D3DTSS_BUMPENVMAT10", FLOAT_AS_DWORD),
480     ("D3DTSS_BUMPENVMAT11", FLOAT_AS_DWORD),
481     ("D3DTSS_TEXCOORDINDEX", D3DTSS_TCI,),
482     ("D3DTSS_BUMPENVLSCALE", FLOAT_AS_DWORD),
483     ("D3DTSS_BUMPENVLOFFSET", FLOAT_AS_DWORD),
484     ("D3DTSS_TEXTURETRANSFORMFLAGS", D3DTEXTURETRANSFORMFLAGS),
485     ("D3DTSS_COLORARG0", D3DTA,),
486     ("D3DTSS_ALPHAARG0", D3DTA,),
487     ("D3DTSS_RESULTARG", D3DTA,),
488     ("D3DTSS_CONSTANT", D3DCOLOR),
489 ])
490
491 D3DTEXTURESTAGESTATETYPE = Enum("D3DTEXTURESTAGESTATETYPE", [
492     expr for expr, types in D3DTEXTURESTAGESTATEVALUE.switch_types
493 ])
494
495 D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [
496     "D3DTEXF_NONE",
497     "D3DTEXF_POINT",
498     "D3DTEXF_LINEAR",
499     "D3DTEXF_ANISOTROPIC",
500     "D3DTEXF_PYRAMIDALQUAD",
501     "D3DTEXF_GAUSSIANQUAD",
502     "D3DTEXF_CONVOLUTIONMONO",
503 ])
504
505 D3DSAMPLERSTATEVALUE = Polymorphic(DWORD, "Type", [
506     ("D3DSAMP_ADDRESSU", D3DTEXTUREADDRESS),
507     ("D3DSAMP_ADDRESSV", D3DTEXTUREADDRESS),
508     ("D3DSAMP_ADDRESSW", D3DTEXTUREADDRESS),
509     ("D3DSAMP_BORDERCOLOR", D3DCOLOR),
510     ("D3DSAMP_MAGFILTER", D3DTEXTUREFILTERTYPE),
511     ("D3DSAMP_MINFILTER", D3DTEXTUREFILTERTYPE),
512     ("D3DSAMP_MIPFILTER", D3DTEXTUREFILTERTYPE),
513     ("D3DSAMP_MIPMAPLODBIAS", FLOAT_AS_DWORD),
514     ("D3DSAMP_MAXMIPLEVEL", DWORD),
515     ("D3DSAMP_MAXANISOTROPY", DWORD),
516     ("D3DSAMP_SRGBTEXTURE", BOOL),
517     ("D3DSAMP_ELEMENTINDEX", DWORD),
518     ("D3DSAMP_DMAPOFFSET", DWORD),
519 ])
520
521 D3DSAMPLERSTATETYPE = Enum("D3DSAMPLERSTATETYPE", [
522     expr for expr, types in D3DSAMPLERSTATEVALUE.switch_types
523 ])
524
525 D3DPV = Flags(DWORD, [
526     "D3DPV_DONOTCOPYDATA",
527 ])
528
529 D3DFVF = Flags(DWORD, [
530     "D3DFVF_RESERVED0",
531     "D3DFVF_POSITION_MASK",
532     "D3DFVF_XYZ",
533     "D3DFVF_XYZRHW",
534     "D3DFVF_XYZB1",
535     "D3DFVF_XYZB2",
536     "D3DFVF_XYZB3",
537     "D3DFVF_XYZB4",
538     "D3DFVF_XYZB5",
539     "D3DFVF_XYZW",
540     "D3DFVF_NORMAL",
541     "D3DFVF_PSIZE",
542     "D3DFVF_DIFFUSE",
543     "D3DFVF_SPECULAR",
544     #"D3DFVF_TEXCOUNT_MASK",
545     #"D3DFVF_TEXCOUNT_SHIFT",
546     #"D3DFVF_TEX0",
547     #"D3DFVF_TEX1",
548     #"D3DFVF_TEX2",
549     #"D3DFVF_TEX3",
550     #"D3DFVF_TEX4",
551     #"D3DFVF_TEX5",
552     #"D3DFVF_TEX6",
553     #"D3DFVF_TEX7",
554     #"D3DFVF_TEX8",
555     "D3DFVF_LASTBETA_UBYTE4",
556     "D3DFVF_LASTBETA_D3DCOLOR",
557     "D3DFVF_RESERVED2",
558     #"D3DFVF_TEXCOORDSIZE3(0)",
559     #"D3DFVF_TEXCOORDSIZE2(0)",
560     #"D3DFVF_TEXCOORDSIZE4(0)",
561     #"D3DFVF_TEXCOORDSIZE1(0)",
562     #"D3DFVF_TEXCOORDSIZE3(1)",
563     #"D3DFVF_TEXCOORDSIZE2(1)",
564     #"D3DFVF_TEXCOORDSIZE4(1)",
565     #"D3DFVF_TEXCOORDSIZE1(1)",
566     #"D3DFVF_TEXCOORDSIZE3(2)",
567     #"D3DFVF_TEXCOORDSIZE2(2)",
568     #"D3DFVF_TEXCOORDSIZE4(2)",
569     #"D3DFVF_TEXCOORDSIZE1(2)",
570     #"D3DFVF_TEXCOORDSIZE3(3)",
571     #"D3DFVF_TEXCOORDSIZE2(3)",
572     #"D3DFVF_TEXCOORDSIZE4(3)",
573     #"D3DFVF_TEXCOORDSIZE1(3)",
574 ])
575
576 D3DDECLUSAGE = Enum("D3DDECLUSAGE", [
577     "D3DDECLUSAGE_POSITION",
578     "D3DDECLUSAGE_BLENDWEIGHT",
579     "D3DDECLUSAGE_BLENDINDICES",
580     "D3DDECLUSAGE_NORMAL",
581     "D3DDECLUSAGE_PSIZE",
582     "D3DDECLUSAGE_TEXCOORD",
583     "D3DDECLUSAGE_TANGENT",
584     "D3DDECLUSAGE_BINORMAL",
585     "D3DDECLUSAGE_TESSFACTOR",
586     "D3DDECLUSAGE_POSITIONT",
587     "D3DDECLUSAGE_COLOR",
588     "D3DDECLUSAGE_FOG",
589     "D3DDECLUSAGE_DEPTH",
590     "D3DDECLUSAGE_SAMPLE",
591 ])
592
593 D3DDECLMETHOD = Enum("D3DDECLMETHOD", [
594     "D3DDECLMETHOD_DEFAULT",
595     "D3DDECLMETHOD_PARTIALU",
596     "D3DDECLMETHOD_PARTIALV",
597     "D3DDECLMETHOD_CROSSUV",
598     "D3DDECLMETHOD_UV",
599     "D3DDECLMETHOD_LOOKUP",
600     "D3DDECLMETHOD_LOOKUPPRESAMPLED",
601 ])
602
603 D3DDECLTYPE = Enum("D3DDECLTYPE", [
604     "D3DDECLTYPE_FLOAT1",
605     "D3DDECLTYPE_FLOAT2",
606     "D3DDECLTYPE_FLOAT3",
607     "D3DDECLTYPE_FLOAT4",
608     "D3DDECLTYPE_D3DCOLOR",
609     "D3DDECLTYPE_UBYTE4",
610     "D3DDECLTYPE_SHORT2",
611     "D3DDECLTYPE_SHORT4",
612     "D3DDECLTYPE_UBYTE4N",
613     "D3DDECLTYPE_SHORT2N",
614     "D3DDECLTYPE_SHORT4N",
615     "D3DDECLTYPE_USHORT2N",
616     "D3DDECLTYPE_USHORT4N",
617     "D3DDECLTYPE_UDEC3",
618     "D3DDECLTYPE_DEC3N",
619     "D3DDECLTYPE_FLOAT16_2",
620     "D3DDECLTYPE_FLOAT16_4",
621     "D3DDECLTYPE_UNUSED",
622 ])
623
624 D3DVERTEXELEMENT9 = Struct("D3DVERTEXELEMENT9", [
625     (WORD, "Stream"),
626     (WORD, "Offset"),
627     (BYTE, "Type"),
628     (BYTE, "Method"),
629     (BYTE, "Usage"),
630     (BYTE, "UsageIndex"),
631 ])
632
633 D3DSHADER_INSTRUCTION_OPCODE_TYPE = Enum("D3DSHADER_INSTRUCTION_OPCODE_TYPE", [
634     "D3DSIO_NOP",
635     "D3DSIO_MOV",
636     "D3DSIO_ADD",
637     "D3DSIO_SUB",
638     "D3DSIO_MAD",
639     "D3DSIO_MUL",
640     "D3DSIO_RCP",
641     "D3DSIO_RSQ",
642     "D3DSIO_DP3",
643     "D3DSIO_DP4",
644     "D3DSIO_MIN",
645     "D3DSIO_MAX",
646     "D3DSIO_SLT",
647     "D3DSIO_SGE",
648     "D3DSIO_EXP",
649     "D3DSIO_LOG",
650     "D3DSIO_LIT",
651     "D3DSIO_DST",
652     "D3DSIO_LRP",
653     "D3DSIO_FRC",
654     "D3DSIO_M4x4",
655     "D3DSIO_M4x3",
656     "D3DSIO_M3x4",
657     "D3DSIO_M3x3",
658     "D3DSIO_M3x2",
659     "D3DSIO_CALL",
660     "D3DSIO_CALLNZ",
661     "D3DSIO_LOOP",
662     "D3DSIO_RET",
663     "D3DSIO_ENDLOOP",
664     "D3DSIO_LABEL",
665     "D3DSIO_DCL",
666     "D3DSIO_POW",
667     "D3DSIO_CRS",
668     "D3DSIO_SGN",
669     "D3DSIO_ABS",
670     "D3DSIO_NRM",
671     "D3DSIO_SINCOS",
672     "D3DSIO_REP",
673     "D3DSIO_ENDREP",
674     "D3DSIO_IF",
675     "D3DSIO_IFC",
676     "D3DSIO_ELSE",
677     "D3DSIO_ENDIF",
678     "D3DSIO_BREAK",
679     "D3DSIO_BREAKC",
680     "D3DSIO_MOVA",
681     "D3DSIO_DEFB",
682     "D3DSIO_DEFI",
683     "D3DSIO_TEXCOORD",
684     "D3DSIO_TEXKILL",
685     "D3DSIO_TEX",
686     "D3DSIO_TEXBEM",
687     "D3DSIO_TEXBEML",
688     "D3DSIO_TEXREG2AR",
689     "D3DSIO_TEXREG2GB",
690     "D3DSIO_TEXM3x2PAD",
691     "D3DSIO_TEXM3x2TEX",
692     "D3DSIO_TEXM3x3PAD",
693     "D3DSIO_TEXM3x3TEX",
694     "D3DSIO_RESERVED0",
695     "D3DSIO_TEXM3x3SPEC",
696     "D3DSIO_TEXM3x3VSPEC",
697     "D3DSIO_EXPP",
698     "D3DSIO_LOGP",
699     "D3DSIO_CND",
700     "D3DSIO_DEF",
701     "D3DSIO_TEXREG2RGB",
702     "D3DSIO_TEXDP3TEX",
703     "D3DSIO_TEXM3x2DEPTH",
704     "D3DSIO_TEXDP3",
705     "D3DSIO_TEXM3x3",
706     "D3DSIO_TEXDEPTH",
707     "D3DSIO_CMP",
708     "D3DSIO_BEM",
709     "D3DSIO_DP2ADD",
710     "D3DSIO_DSX",
711     "D3DSIO_DSY",
712     "D3DSIO_TEXLDD",
713     "D3DSIO_SETP",
714     "D3DSIO_TEXLDL",
715     "D3DSIO_BREAKP",
716     "D3DSIO_PHASE",
717     "D3DSIO_COMMENT",
718     "D3DSIO_END",
719 ])
720
721 D3DSHADER_COMPARISON = Enum("D3DSHADER_COMPARISON", [
722     "D3DSPC_RESERVED0",
723     "D3DSPC_GT",
724     "D3DSPC_EQ",
725     "D3DSPC_GE",
726     "D3DSPC_LT",
727     "D3DSPC_NE",
728     "D3DSPC_LE",
729     "D3DSPC_RESERVED1",
730 ])
731
732 D3DSAMPLER_TEXTURE_TYPE = Enum("D3DSAMPLER_TEXTURE_TYPE", [
733     "D3DSTT_UNKNOWN",
734     "D3DSTT_2D",
735     "D3DSTT_CUBE",
736     "D3DSTT_VOLUME",
737 ])
738
739 D3DSP = Flags(DWORD, [
740     "D3DSP_WRITEMASK_0",
741     "D3DSP_WRITEMASK_1",
742     "D3DSP_WRITEMASK_2",
743     "D3DSP_WRITEMASK_3",
744     "D3DSP_WRITEMASK_ALL",
745 ])
746
747 D3DSHADER_PARAM_DSTMOD_TYPE = Flags(DWORD, [
748     "D3DSPDM_NONE",
749     "D3DSPDM_SATURATE",
750     "D3DSPDM_PARTIALPRECISION",
751     "D3DSPDM_MSAMPCENTROID",
752 ])
753
754 D3DSHADER_PARAM_REGISTER_TYPE = Enum("D3DSHADER_PARAM_REGISTER_TYPE", [
755     "D3DSPR_TEMP",
756     "D3DSPR_INPUT",
757     "D3DSPR_CONST",
758     "D3DSPR_ADDR|D3DSPR_TEXTURE",
759     "D3DSPR_RASTOUT",
760     "D3DSPR_ATTROUT",
761     "D3DSPR_TEXCRDOUT|D3DSPR_OUTPUT",
762     "D3DSPR_CONSTINT",
763     "D3DSPR_COLOROUT",
764     "D3DSPR_DEPTHOUT",
765     "D3DSPR_SAMPLER",
766     "D3DSPR_CONST2",
767     "D3DSPR_CONST3",
768     "D3DSPR_CONST4",
769     "D3DSPR_CONSTBOOL",
770     "D3DSPR_LOOP",
771     "D3DSPR_TEMPFLOAT16",
772     "D3DSPR_MISCTYPE",
773     "D3DSPR_LABEL",
774     "D3DSPR_PREDICATE",
775 ])
776
777 D3DSHADER_MISCTYPE_OFFSETS = Enum("D3DSHADER_MISCTYPE_OFFSETS", [
778     "D3DSMO_POSITION",
779     "D3DSMO_FACE",
780 ])
781
782 D3DVS_RASTOUT_OFFSETS = Enum("D3DVS_RASTOUT_OFFSETS", [
783     "D3DSRO_POSITION",
784     "D3DSRO_FOG",
785     "D3DSRO_POINT_SIZE",
786 ])
787
788 D3DVS_ADDRESSMODE_TYPE = Enum("D3DVS_ADDRESSMODE_TYPE", [
789     "D3DVS_ADDRMODE_ABSOLUTE",
790     "D3DVS_ADDRMODE_RELATIVE",
791 ])
792
793 D3DSHADER_ADDRESSMODE_TYPE = Enum("D3DSHADER_ADDRESSMODE_TYPE", [
794     "D3DSHADER_ADDRMODE_ABSOLUTE",
795     "D3DSHADER_ADDRMODE_RELATIVE",
796 ])
797
798 D3DVS = Flags(DWORD, [
799     "D3DVS_X_X",
800     "D3DVS_X_Y",
801     "D3DVS_X_Z",
802     "D3DVS_X_W",
803     "D3DVS_Y_X",
804     "D3DVS_Y_Y",
805     "D3DVS_Y_Z",
806     "D3DVS_Y_W",
807     "D3DVS_Z_X",
808     "D3DVS_Z_Y",
809     "D3DVS_Z_Z",
810     "D3DVS_Z_W",
811     "D3DVS_W_X",
812     "D3DVS_W_Y",
813     "D3DVS_W_Z",
814     "D3DVS_W_W",
815     "D3DVS_NOSWIZZLE",
816 ])
817
818 D3DSP = Flags(DWORD, [
819     "D3DSP_NOSWIZZLE",
820     "D3DSP_REPLICATERED",
821     "D3DSP_REPLICATEGREEN",
822     "D3DSP_REPLICATEBLUE",
823     "D3DSP_REPLICATEALPHA",
824 ])
825
826 D3DSHADER_PARAM_SRCMOD_TYPE = Enum("D3DSHADER_PARAM_SRCMOD_TYPE", [
827     "D3DSPSM_NONE",
828     "D3DSPSM_NEG",
829     "D3DSPSM_BIAS",
830     "D3DSPSM_BIASNEG",
831     "D3DSPSM_SIGN",
832     "D3DSPSM_SIGNNEG",
833     "D3DSPSM_COMP",
834     "D3DSPSM_X2",
835     "D3DSPSM_X2NEG",
836     "D3DSPSM_DZ",
837     "D3DSPSM_DW",
838     "D3DSPSM_ABS",
839     "D3DSPSM_ABSNEG",
840     "D3DSPSM_NOT",
841 ])
842
843 D3DBASISTYPE = Enum("D3DBASISTYPE", [
844     "D3DBASIS_BEZIER",
845     "D3DBASIS_BSPLINE",
846     "D3DBASIS_CATMULL_ROM",
847 ])
848
849 D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
850     "D3DSBT_ALL",
851     "D3DSBT_PIXELSTATE",
852     "D3DSBT_VERTEXSTATE",
853 ])
854
855 D3DDEVTYPE = Enum("D3DDEVTYPE", [
856     "D3DDEVTYPE_HAL",
857     "D3DDEVTYPE_REF",
858     "D3DDEVTYPE_SW",
859     "D3DDEVTYPE_NULLREF",
860 ])
861
862 D3DMULTISAMPLE_TYPE = Enum("D3DMULTISAMPLE_TYPE", [
863     "D3DMULTISAMPLE_NONE",
864     "D3DMULTISAMPLE_NONMASKABLE",
865     "D3DMULTISAMPLE_2_SAMPLES",
866     "D3DMULTISAMPLE_3_SAMPLES",
867     "D3DMULTISAMPLE_4_SAMPLES",
868     "D3DMULTISAMPLE_5_SAMPLES",
869     "D3DMULTISAMPLE_6_SAMPLES",
870     "D3DMULTISAMPLE_7_SAMPLES",
871     "D3DMULTISAMPLE_8_SAMPLES",
872     "D3DMULTISAMPLE_9_SAMPLES",
873     "D3DMULTISAMPLE_10_SAMPLES",
874     "D3DMULTISAMPLE_11_SAMPLES",
875     "D3DMULTISAMPLE_12_SAMPLES",
876     "D3DMULTISAMPLE_13_SAMPLES",
877     "D3DMULTISAMPLE_14_SAMPLES",
878     "D3DMULTISAMPLE_15_SAMPLES",
879     "D3DMULTISAMPLE_16_SAMPLES",
880 ])
881
882 D3DFORMAT = Enum("D3DFORMAT", [
883     "D3DFMT_UNKNOWN",
884     "D3DFMT_R8G8B8",
885     "D3DFMT_A8R8G8B8",
886     "D3DFMT_X8R8G8B8",
887     "D3DFMT_R5G6B5",
888     "D3DFMT_X1R5G5B5",
889     "D3DFMT_A1R5G5B5",
890     "D3DFMT_A4R4G4B4",
891     "D3DFMT_R3G3B2",
892     "D3DFMT_A8",
893     "D3DFMT_A8R3G3B2",
894     "D3DFMT_X4R4G4B4",
895     "D3DFMT_A2B10G10R10",
896     "D3DFMT_A8B8G8R8",
897     "D3DFMT_X8B8G8R8",
898     "D3DFMT_G16R16",
899     "D3DFMT_A2R10G10B10",
900     "D3DFMT_A16B16G16R16",
901     "D3DFMT_A8P8",
902     "D3DFMT_P8",
903     "D3DFMT_L8",
904     "D3DFMT_A8L8",
905     "D3DFMT_A4L4",
906     "D3DFMT_V8U8",
907     "D3DFMT_L6V5U5",
908     "D3DFMT_X8L8V8U8",
909     "D3DFMT_Q8W8V8U8",
910     "D3DFMT_V16U16",
911     "D3DFMT_A2W10V10U10",
912     "D3DFMT_UYVY",
913     "D3DFMT_R8G8_B8G8",
914     "D3DFMT_YUY2",
915     "D3DFMT_G8R8_G8B8",
916     "D3DFMT_DXT1",
917     "D3DFMT_DXT2",
918     "D3DFMT_DXT3",
919     "D3DFMT_DXT4",
920     "D3DFMT_DXT5",
921     "D3DFMT_D16_LOCKABLE",
922     "D3DFMT_D32",
923     "D3DFMT_D15S1",
924     "D3DFMT_D24S8",
925     "D3DFMT_D24X8",
926     "D3DFMT_D24X4S4",
927     "D3DFMT_D16",
928     "D3DFMT_D32F_LOCKABLE",
929     "D3DFMT_D24FS8",
930     "D3DFMT_D32_LOCKABLE",
931     "D3DFMT_S8_LOCKABLE",
932     "D3DFMT_L16",
933     "D3DFMT_VERTEXDATA",
934     "D3DFMT_INDEX16",
935     "D3DFMT_INDEX32",
936     "D3DFMT_Q16W16V16U16",
937     "D3DFMT_MULTI2_ARGB8",
938     "D3DFMT_R16F",
939     "D3DFMT_G16R16F",
940     "D3DFMT_A16B16G16R16F",
941     "D3DFMT_R32F",
942     "D3DFMT_G32R32F",
943     "D3DFMT_A32B32G32R32F",
944     "D3DFMT_CxV8U8",
945     "D3DFMT_A1",
946     "D3DFMT_BINARYBUFFER",
947
948     # Unofficial formats
949     "D3DFMT_ATI1",
950     "D3DFMT_ATI2",
951     "D3DFMT_AYUV",
952     "D3DFMT_DF16",
953     "D3DFMT_DF24",
954     "D3DFMT_INTZ",
955     "D3DFMT_NULL",
956     "D3DFMT_NV12",
957     "D3DFMT_RAWZ",
958 ])
959
960 D3DDISPLAYMODE = Struct("D3DDISPLAYMODE", [
961     (UINT, "Width"),
962     (UINT, "Height"),
963     (UINT, "RefreshRate"),
964     (D3DFORMAT, "Format"),
965 ])
966
967 D3DDEVICE_CREATION_PARAMETERS = Struct("D3DDEVICE_CREATION_PARAMETERS", [
968     (UINT, "AdapterOrdinal"),
969     (D3DDEVTYPE, "DeviceType"),
970     (HWND, "hFocusWindow"),
971     (DWORD, "BehaviorFlags"),
972 ])
973
974 D3DSWAPEFFECT = Enum("D3DSWAPEFFECT", [
975     "D3DSWAPEFFECT_DISCARD",
976     "D3DSWAPEFFECT_FLIP",
977     "D3DSWAPEFFECT_COPY",
978 ])
979
980 D3DPOOL = Enum("D3DPOOL", [
981     "D3DPOOL_DEFAULT",
982     "D3DPOOL_MANAGED",
983     "D3DPOOL_SYSTEMMEM",
984     "D3DPOOL_SCRATCH",
985 ])
986
987 D3DPRESENT = FakeEnum(DWORD, [
988     "D3DPRESENT_RATE_DEFAULT",
989 ])
990
991 D3DPRESENT_PARAMETERS = Struct("D3DPRESENT_PARAMETERS", [
992     (UINT, "BackBufferWidth"),
993     (UINT, "BackBufferHeight"),
994     (D3DFORMAT, "BackBufferFormat"),
995     (UINT, "BackBufferCount"),
996     (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
997     (DWORD, "MultiSampleQuality"),
998     (D3DSWAPEFFECT, "SwapEffect"),
999     (HWND, "hDeviceWindow"),
1000     (BOOL, "Windowed"),
1001     (BOOL, "EnableAutoDepthStencil"),
1002     (D3DFORMAT, "AutoDepthStencilFormat"),
1003     (DWORD, "Flags"),
1004     (UINT, "FullScreen_RefreshRateInHz"),
1005     (UINT, "PresentationInterval"),
1006 ])
1007
1008 D3DPRESENTFLAG = Flags(DWORD, [
1009     "D3DPRESENTFLAG_LOCKABLE_BACKBUFFER",
1010     "D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL",
1011     "D3DPRESENTFLAG_DEVICECLIP",
1012     "D3DPRESENTFLAG_VIDEO",
1013     "D3DPRESENTFLAG_NOAUTOROTATE",
1014     "D3DPRESENTFLAG_UNPRUNEDMODE",
1015 ])
1016
1017 D3DGAMMARAMP = Struct("D3DGAMMARAMP", [
1018     (Array(WORD, 256), "red"),
1019     (Array(WORD, 256), "green"),
1020     (Array(WORD, 256), "blue"),
1021 ])
1022
1023 D3DBACKBUFFER_TYPE = Enum("D3DBACKBUFFER_TYPE", [
1024     "D3DBACKBUFFER_TYPE_MONO",
1025     "D3DBACKBUFFER_TYPE_LEFT",
1026     "D3DBACKBUFFER_TYPE_RIGHT",
1027 ])
1028
1029 D3DRESOURCETYPE = Enum("D3DRESOURCETYPE", [
1030     "D3DRTYPE_SURFACE",
1031     "D3DRTYPE_VOLUME",
1032     "D3DRTYPE_TEXTURE",
1033     "D3DRTYPE_VOLUMETEXTURE",
1034     "D3DRTYPE_CUBETEXTURE",
1035     "D3DRTYPE_VERTEXBUFFER",
1036     "D3DRTYPE_INDEXBUFFER",
1037 ])
1038
1039 D3DUSAGE = Flags(DWORD, [
1040     "D3DUSAGE_RENDERTARGET",
1041     "D3DUSAGE_DEPTHSTENCIL",
1042     "D3DUSAGE_DYNAMIC",
1043     "D3DUSAGE_NONSECURE",
1044     "D3DUSAGE_AUTOGENMIPMAP",
1045     "D3DUSAGE_DMAP",
1046     "D3DUSAGE_QUERY_LEGACYBUMPMAP",
1047     "D3DUSAGE_QUERY_SRGBREAD",
1048     "D3DUSAGE_QUERY_FILTER",
1049     "D3DUSAGE_QUERY_SRGBWRITE",
1050     "D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING",
1051     "D3DUSAGE_QUERY_VERTEXTEXTURE",
1052     "D3DUSAGE_QUERY_WRAPANDMIP",
1053     "D3DUSAGE_WRITEONLY",
1054     "D3DUSAGE_SOFTWAREPROCESSING",
1055     "D3DUSAGE_DONOTCLIP",
1056     "D3DUSAGE_POINTS",
1057     "D3DUSAGE_RTPATCHES",
1058     "D3DUSAGE_NPATCHES",
1059     "D3DUSAGE_TEXTAPI",
1060 ])
1061
1062 D3DCUBEMAP_FACES = Enum("D3DCUBEMAP_FACES", [
1063     "D3DCUBEMAP_FACE_POSITIVE_X",
1064     "D3DCUBEMAP_FACE_NEGATIVE_X",
1065     "D3DCUBEMAP_FACE_POSITIVE_Y",
1066     "D3DCUBEMAP_FACE_NEGATIVE_Y",
1067     "D3DCUBEMAP_FACE_POSITIVE_Z",
1068     "D3DCUBEMAP_FACE_NEGATIVE_Z",
1069 ])
1070
1071 D3DLOCK = Flags(DWORD, [
1072     "D3DLOCK_READONLY",
1073     "D3DLOCK_DISCARD",
1074     "D3DLOCK_NOOVERWRITE",
1075     "D3DLOCK_NOSYSLOCK",
1076     "D3DLOCK_DONOTWAIT",
1077     "D3DLOCK_NO_DIRTY_UPDATE",
1078 ])
1079
1080 D3DVERTEXBUFFER_DESC = Struct("D3DVERTEXBUFFER_DESC", [
1081     (D3DFORMAT, "Format"),
1082     (D3DRESOURCETYPE, "Type"),
1083     (DWORD, "Usage"),
1084     (D3DPOOL, "Pool"),
1085     (UINT, "Size"),
1086     (DWORD, "FVF"),
1087 ])
1088
1089 D3DINDEXBUFFER_DESC = Struct("D3DINDEXBUFFER_DESC", [
1090     (D3DFORMAT, "Format"),
1091     (D3DRESOURCETYPE, "Type"),
1092     (DWORD, "Usage"),
1093     (D3DPOOL, "Pool"),
1094     (UINT, "Size"),
1095 ])
1096
1097 D3DSURFACE_DESC = Struct("D3DSURFACE_DESC", [
1098     (D3DFORMAT, "Format"),
1099     (D3DRESOURCETYPE, "Type"),
1100     (DWORD, "Usage"),
1101     (D3DPOOL, "Pool"),
1102     (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
1103     (DWORD, "MultiSampleQuality"),
1104     (UINT, "Width"),
1105     (UINT, "Height"),
1106 ])
1107
1108 D3DVOLUME_DESC = Struct("D3DVOLUME_DESC", [
1109     (D3DFORMAT, "Format"),
1110     (D3DRESOURCETYPE, "Type"),
1111     (DWORD, "Usage"),
1112     (D3DPOOL, "Pool"),
1113     (UINT, "Width"),
1114     (UINT, "Height"),
1115     (UINT, "Depth"),
1116 ])
1117
1118 D3DLOCKED_RECT = Struct("D3DLOCKED_RECT", [
1119     (INT, "Pitch"),
1120     (OpaquePointer(Void), "pBits"),
1121 ])
1122
1123 D3DBOX = Struct("D3DBOX", [
1124     (UINT, "Left"),
1125     (UINT, "Top"),
1126     (UINT, "Right"),
1127     (UINT, "Bottom"),
1128     (UINT, "Front"),
1129     (UINT, "Back"),
1130 ])
1131
1132 D3DLOCKED_BOX = Struct("D3DLOCKED_BOX", [
1133     (INT, "RowPitch"),
1134     (INT, "SlicePitch"),
1135     (OpaquePointer(Void), "pBits"),
1136 ])
1137
1138 D3DRANGE = Struct("D3DRANGE", [
1139     (UINT, "Offset"),
1140     (UINT, "Size"),
1141 ])
1142
1143 D3DRECTPATCH_INFO = Struct("D3DRECTPATCH_INFO", [
1144     (UINT, "StartVertexOffsetWidth"),
1145     (UINT, "StartVertexOffsetHeight"),
1146     (UINT, "Width"),
1147     (UINT, "Height"),
1148     (UINT, "Stride"),
1149     (D3DBASISTYPE, "Basis"),
1150     (D3DDEGREETYPE, "Degree"),
1151 ])
1152
1153 D3DTRIPATCH_INFO = Struct("D3DTRIPATCH_INFO", [
1154     (UINT, "StartVertexOffset"),
1155     (UINT, "NumVertices"),
1156     (D3DBASISTYPE, "Basis"),
1157     (D3DDEGREETYPE, "Degree"),
1158 ])
1159
1160 D3DADAPTER_IDENTIFIER9 = Struct("D3DADAPTER_IDENTIFIER9", [
1161     (CString, "Driver"),
1162     (CString, "Description"),
1163     (CString, "DeviceName"),
1164     (LARGE_INTEGER, "DriverVersion"),
1165     (DWORD, "VendorId"),
1166     (DWORD, "DeviceId"),
1167     (DWORD, "SubSysId"),
1168     (DWORD, "Revision"),
1169     (GUID, "DeviceIdentifier"),
1170     (DWORD, "WHQLLevel"),
1171 ])
1172
1173 D3DRASTER_STATUS = Struct("D3DRASTER_STATUS", [
1174     (BOOL, "InVBlank"),
1175     (UINT, "ScanLine"),
1176 ])
1177
1178 D3DQUERYTYPE = Enum("D3DQUERYTYPE", [
1179     "D3DQUERYTYPE_VCACHE",
1180     "D3DQUERYTYPE_RESOURCEMANAGER",
1181     "D3DQUERYTYPE_VERTEXSTATS",
1182     "D3DQUERYTYPE_EVENT",
1183     "D3DQUERYTYPE_OCCLUSION",
1184     "D3DQUERYTYPE_TIMESTAMP",
1185     "D3DQUERYTYPE_TIMESTAMPDISJOINT",
1186     "D3DQUERYTYPE_TIMESTAMPFREQ",
1187     "D3DQUERYTYPE_PIPELINETIMINGS",
1188     "D3DQUERYTYPE_INTERFACETIMINGS",
1189     "D3DQUERYTYPE_VERTEXTIMINGS",
1190     "D3DQUERYTYPE_PIXELTIMINGS",
1191     "D3DQUERYTYPE_BANDWIDTHTIMINGS",
1192     "D3DQUERYTYPE_CACHEUTILIZATION",
1193 ])
1194
1195 D3DISSUE = Flags(DWORD, [
1196     "D3DISSUE_END",
1197     "D3DISSUE_BEGIN",
1198 ])
1199
1200 D3DGETDATA = Flags(DWORD, [
1201     "D3DGETDATA_FLUSH",
1202 ])
1203
1204 D3DRESOURCESTATS = Struct("D3DRESOURCESTATS", [
1205     (BOOL, "bThrashing"),
1206     (DWORD, "ApproxBytesDownloaded"),
1207     (DWORD, "NumEvicts"),
1208     (DWORD, "NumVidCreates"),
1209     (DWORD, "LastPri"),
1210     (DWORD, "NumUsed"),
1211     (DWORD, "NumUsedInVidMem"),
1212     (DWORD, "WorkingSet"),
1213     (DWORD, "WorkingSetBytes"),
1214     (DWORD, "TotalManaged"),
1215     (DWORD, "TotalBytes"),
1216 ])
1217
1218 D3DDEVINFO_RESOURCEMANAGER = Struct("D3DDEVINFO_RESOURCEMANAGER", [
1219     (Array(D3DRESOURCESTATS, "D3DRTYPECOUNT"), "stats"),
1220 ])
1221
1222 D3DDEVINFO_D3DVERTEXSTATS = Struct("D3DDEVINFO_D3DVERTEXSTATS", [
1223     (DWORD, "NumRenderedTriangles"),
1224     (DWORD, "NumExtraClippingTriangles"),
1225 ])
1226
1227 D3DDEVINFO_VCACHE = Struct("D3DDEVINFO_VCACHE", [
1228     (DWORD, "Pattern"),
1229     (DWORD, "OptMethod"),
1230     (DWORD, "CacheSize"),
1231     (DWORD, "MagicNumber"),
1232 ])
1233
1234 D3DDEVINFO_D3D9PIPELINETIMINGS = Struct("D3DDEVINFO_D3D9PIPELINETIMINGS", [
1235     (FLOAT, "VertexProcessingTimePercent"),
1236     (FLOAT, "PixelProcessingTimePercent"),
1237     (FLOAT, "OtherGPUProcessingTimePercent"),
1238     (FLOAT, "GPUIdleTimePercent"),
1239 ])
1240
1241 D3DDEVINFO_D3D9INTERFACETIMINGS = Struct("D3DDEVINFO_D3D9INTERFACETIMINGS", [
1242     (FLOAT, "WaitingForGPUToUseApplicationResourceTimePercent"),
1243     (FLOAT, "WaitingForGPUToAcceptMoreCommandsTimePercent"),
1244     (FLOAT, "WaitingForGPUToStayWithinLatencyTimePercent"),
1245     (FLOAT, "WaitingForGPUExclusiveResourceTimePercent"),
1246     (FLOAT, "WaitingForGPUOtherTimePercent"),
1247 ])
1248
1249 D3DDEVINFO_D3D9STAGETIMINGS = Struct("D3DDEVINFO_D3D9STAGETIMINGS", [
1250     (FLOAT, "MemoryProcessingPercent"),
1251     (FLOAT, "ComputationProcessingPercent"),
1252 ])
1253
1254 D3DDEVINFO_D3D9BANDWIDTHTIMINGS = Struct("D3DDEVINFO_D3D9BANDWIDTHTIMINGS", [
1255     (FLOAT, "MaxBandwidthUtilized"),
1256     (FLOAT, "FrontEndUploadMemoryUtilizedPercent"),
1257     (FLOAT, "VertexRateUtilizedPercent"),
1258     (FLOAT, "TriangleSetupRateUtilizedPercent"),
1259     (FLOAT, "FillRateUtilizedPercent"),
1260 ])
1261
1262 D3DDEVINFO_D3D9CACHEUTILIZATION = Struct("D3DDEVINFO_D3D9CACHEUTILIZATION", [
1263     (FLOAT, "TextureCacheHitRate"),
1264     (FLOAT, "PostTransformVertexCacheHitRate"),
1265 ])
1266
1267 D3DCOMPOSERECTSOP = Enum("D3DCOMPOSERECTSOP", [
1268     "D3DCOMPOSERECTS_COPY",
1269     "D3DCOMPOSERECTS_OR",
1270     "D3DCOMPOSERECTS_AND",
1271     "D3DCOMPOSERECTS_NEG",
1272 ])
1273
1274 D3DCOMPOSERECTDESC = Struct("D3DCOMPOSERECTDESC", [
1275     (USHORT, "X"),
1276     (USHORT, "Y"),
1277     (USHORT, "Width"),
1278     (USHORT, "Height"),
1279 ])
1280
1281 D3DCOMPOSERECTDESTINATION = Struct("D3DCOMPOSERECTDESTINATION", [
1282     (USHORT, "SrcRectIndex"),
1283     (USHORT, "Reserved"),
1284     (Short, "X"),
1285     (Short, "Y"),
1286 ])
1287
1288 D3DPRESENTSTATS = Struct("D3DPRESENTSTATS", [
1289     (UINT, "PresentCount"),
1290     (UINT, "PresentRefreshCount"),
1291     (UINT, "SyncRefreshCount"),
1292     (LARGE_INTEGER, "SyncQPCTime"),
1293     (LARGE_INTEGER, "SyncGPUTime"),
1294 ])
1295
1296 D3DSCANLINEORDERING = Enum("D3DSCANLINEORDERING", [
1297     "D3DSCANLINEORDERING_UNKNOWN",
1298     "D3DSCANLINEORDERING_PROGRESSIVE",
1299     "D3DSCANLINEORDERING_INTERLACED",
1300 ])
1301
1302 D3DDISPLAYMODEEX = Struct("D3DDISPLAYMODEEX", [
1303     (UINT, "Size"),
1304     (UINT, "Width"),
1305     (UINT, "Height"),
1306     (UINT, "RefreshRate"),
1307     (D3DFORMAT, "Format"),
1308     (D3DSCANLINEORDERING, "ScanLineOrdering"),
1309 ])
1310
1311 D3DDISPLAYMODEFILTER = Struct("D3DDISPLAYMODEFILTER", [
1312     (UINT, "Size"),
1313     (D3DFORMAT, "Format"),
1314     (D3DSCANLINEORDERING, "ScanLineOrdering"),
1315 ])
1316
1317 D3DDISPLAYROTATION = Enum("D3DDISPLAYROTATION", [
1318     "D3DDISPLAYROTATION_IDENTITY",
1319     "D3DDISPLAYROTATION_90",
1320     "D3DDISPLAYROTATION_180",
1321     "D3DDISPLAYROTATION_270",
1322 ])
1323
1324 D3D9_RESOURCE_PRIORITY = FakeEnum(DWORD, [
1325     "D3D9_RESOURCE_PRIORITY_MINIMUM",
1326     "D3D9_RESOURCE_PRIORITY_LOW",
1327     "D3D9_RESOURCE_PRIORITY_NORMAL",
1328     "D3D9_RESOURCE_PRIORITY_HIGH",
1329     "D3D9_RESOURCE_PRIORITY_MAXIMUM",
1330 ])
1331