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