]> git.cworth.org Git - apitrace/blob - specs/d3d9types.py
41b689036216bed84a3ad47b3e72877e4cb1fef1
[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 D3DRENDERSTATETYPE, D3DRENDERSTATEVALUE = EnumPolymorphic("D3DRENDERSTATETYPE", "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 ], DWORD)
406
407 D3DTSS_TCI = Flags(DWORD, [
408     #"D3DTSS_TCI_PASSTHRU", # 0
409     "D3DTSS_TCI_CAMERASPACENORMAL",
410     "D3DTSS_TCI_CAMERASPACEPOSITION",
411     "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
412     "D3DTSS_TCI_SPHEREMAP",
413 ])
414
415 D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
416     "D3DTOP_DISABLE",
417     "D3DTOP_SELECTARG1",
418     "D3DTOP_SELECTARG2",
419     "D3DTOP_MODULATE",
420     "D3DTOP_MODULATE2X",
421     "D3DTOP_MODULATE4X",
422     "D3DTOP_ADD",
423     "D3DTOP_ADDSIGNED",
424     "D3DTOP_ADDSIGNED2X",
425     "D3DTOP_SUBTRACT",
426     "D3DTOP_ADDSMOOTH",
427     "D3DTOP_BLENDDIFFUSEALPHA",
428     "D3DTOP_BLENDTEXTUREALPHA",
429     "D3DTOP_BLENDFACTORALPHA",
430     "D3DTOP_BLENDTEXTUREALPHAPM",
431     "D3DTOP_BLENDCURRENTALPHA",
432     "D3DTOP_PREMODULATE",
433     "D3DTOP_MODULATEALPHA_ADDCOLOR",
434     "D3DTOP_MODULATECOLOR_ADDALPHA",
435     "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
436     "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
437     "D3DTOP_BUMPENVMAP",
438     "D3DTOP_BUMPENVMAPLUMINANCE",
439     "D3DTOP_DOTPRODUCT3",
440     "D3DTOP_MULTIPLYADD",
441     "D3DTOP_LERP",
442 ])
443
444 # XXX: Actually a mixture of enums and flags
445 D3DTA = FakeEnum(DWORD, [
446     "D3DTA_DIFFUSE",
447     "D3DTA_CURRENT",
448     "D3DTA_TEXTURE",
449     "D3DTA_TFACTOR",
450     "D3DTA_SPECULAR",
451     "D3DTA_TEMP",
452     "D3DTA_CONSTANT",
453     #"D3DTA_COMPLEMENT",
454     #"D3DTA_ALPHAREPLICATE",
455 ])
456
457 D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
458     "D3DTTFF_DISABLE",
459     "D3DTTFF_COUNT1",
460     "D3DTTFF_COUNT2",
461     "D3DTTFF_COUNT3",
462     "D3DTTFF_COUNT4",
463     "D3DTTFF_PROJECTED",
464 ])
465
466
467 D3DTEXTURESTAGESTATETYPE, D3DTEXTURESTAGESTATEVALUE = EnumPolymorphic("D3DTEXTURESTAGESTATETYPE", "Type", [
468     ("D3DTSS_COLOROP", D3DTEXTUREOP),
469     ("D3DTSS_COLORARG1", D3DTA),
470     ("D3DTSS_COLORARG2", D3DTA),
471     ("D3DTSS_ALPHAOP", D3DTEXTUREOP),
472     ("D3DTSS_ALPHAARG1", D3DTA),
473     ("D3DTSS_ALPHAARG2", D3DTA),
474     ("D3DTSS_BUMPENVMAT00", FLOAT_AS_DWORD),
475     ("D3DTSS_BUMPENVMAT01", FLOAT_AS_DWORD),
476     ("D3DTSS_BUMPENVMAT10", FLOAT_AS_DWORD),
477     ("D3DTSS_BUMPENVMAT11", FLOAT_AS_DWORD),
478     ("D3DTSS_TEXCOORDINDEX", D3DTSS_TCI,),
479     ("D3DTSS_BUMPENVLSCALE", FLOAT_AS_DWORD),
480     ("D3DTSS_BUMPENVLOFFSET", FLOAT_AS_DWORD),
481     ("D3DTSS_TEXTURETRANSFORMFLAGS", D3DTEXTURETRANSFORMFLAGS),
482     ("D3DTSS_COLORARG0", D3DTA,),
483     ("D3DTSS_ALPHAARG0", D3DTA,),
484     ("D3DTSS_RESULTARG", D3DTA,),
485     ("D3DTSS_CONSTANT", D3DCOLOR),
486 ], DWORD)
487
488 D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [
489     "D3DTEXF_NONE",
490     "D3DTEXF_POINT",
491     "D3DTEXF_LINEAR",
492     "D3DTEXF_ANISOTROPIC",
493     "D3DTEXF_PYRAMIDALQUAD",
494     "D3DTEXF_GAUSSIANQUAD",
495     "D3DTEXF_CONVOLUTIONMONO",
496 ])
497
498 D3DSAMPLERSTATETYPE, D3DSAMPLERSTATEVALUE = EnumPolymorphic("D3DSAMPLERSTATETYPE", "Type", [
499     ("D3DSAMP_ADDRESSU", D3DTEXTUREADDRESS),
500     ("D3DSAMP_ADDRESSV", D3DTEXTUREADDRESS),
501     ("D3DSAMP_ADDRESSW", D3DTEXTUREADDRESS),
502     ("D3DSAMP_BORDERCOLOR", D3DCOLOR),
503     ("D3DSAMP_MAGFILTER", D3DTEXTUREFILTERTYPE),
504     ("D3DSAMP_MINFILTER", D3DTEXTUREFILTERTYPE),
505     ("D3DSAMP_MIPFILTER", D3DTEXTUREFILTERTYPE),
506     ("D3DSAMP_MIPMAPLODBIAS", FLOAT_AS_DWORD),
507     ("D3DSAMP_MAXMIPLEVEL", DWORD),
508     ("D3DSAMP_MAXANISOTROPY", DWORD),
509     ("D3DSAMP_SRGBTEXTURE", BOOL),
510     ("D3DSAMP_ELEMENTINDEX", DWORD),
511     ("D3DSAMP_DMAPOFFSET", DWORD),
512 ], DWORD)
513
514 D3DPV = Flags(DWORD, [
515     "D3DPV_DONOTCOPYDATA",
516 ])
517
518 # XXX: Actually a mixture of enums and flags
519 D3DFVF = Flags(DWORD, [
520     "D3DFVF_RESERVED0",
521     "D3DFVF_XYZ",
522     "D3DFVF_XYZRHW",
523     "D3DFVF_XYZB1",
524     "D3DFVF_XYZB2",
525     "D3DFVF_XYZB3",
526     "D3DFVF_XYZB4",
527     "D3DFVF_XYZB5",
528     "D3DFVF_XYZW",
529     "D3DFVF_NORMAL",
530     "D3DFVF_PSIZE",
531     "D3DFVF_DIFFUSE",
532     "D3DFVF_SPECULAR",
533     #"D3DFVF_TEX0",
534     #"D3DFVF_TEX1",
535     #"D3DFVF_TEX2",
536     #"D3DFVF_TEX3",
537     #"D3DFVF_TEX4",
538     #"D3DFVF_TEX5",
539     #"D3DFVF_TEX6",
540     #"D3DFVF_TEX7",
541     #"D3DFVF_TEX8",
542     "D3DFVF_LASTBETA_UBYTE4",
543     "D3DFVF_LASTBETA_D3DCOLOR",
544     "D3DFVF_RESERVED2",
545     #"D3DFVF_TEXCOORDSIZE1(0)",
546     #"D3DFVF_TEXCOORDSIZE2(0)",
547     #"D3DFVF_TEXCOORDSIZE3(0)",
548     #"D3DFVF_TEXCOORDSIZE4(0)",
549     #"D3DFVF_TEXCOORDSIZE1(1)",
550     #"D3DFVF_TEXCOORDSIZE2(1)",
551     #"D3DFVF_TEXCOORDSIZE3(1)",
552     #"D3DFVF_TEXCOORDSIZE4(1)",
553     #"D3DFVF_TEXCOORDSIZE1(2)",
554     #"D3DFVF_TEXCOORDSIZE2(2)",
555     #"D3DFVF_TEXCOORDSIZE3(2)",
556     #"D3DFVF_TEXCOORDSIZE4(2)",
557     #"D3DFVF_TEXCOORDSIZE1(3)",
558     #"D3DFVF_TEXCOORDSIZE2(3)",
559     #"D3DFVF_TEXCOORDSIZE3(3)",
560     #"D3DFVF_TEXCOORDSIZE4(3)",
561 ])
562
563 D3DDECLUSAGE = FakeEnum(BYTE, [
564     "D3DDECLUSAGE_POSITION",
565     "D3DDECLUSAGE_BLENDWEIGHT",
566     "D3DDECLUSAGE_BLENDINDICES",
567     "D3DDECLUSAGE_NORMAL",
568     "D3DDECLUSAGE_PSIZE",
569     "D3DDECLUSAGE_TEXCOORD",
570     "D3DDECLUSAGE_TANGENT",
571     "D3DDECLUSAGE_BINORMAL",
572     "D3DDECLUSAGE_TESSFACTOR",
573     "D3DDECLUSAGE_POSITIONT",
574     "D3DDECLUSAGE_COLOR",
575     "D3DDECLUSAGE_FOG",
576     "D3DDECLUSAGE_DEPTH",
577     "D3DDECLUSAGE_SAMPLE",
578 ])
579
580 D3DDECLMETHOD = FakeEnum(BYTE, [
581     "D3DDECLMETHOD_DEFAULT",
582     "D3DDECLMETHOD_PARTIALU",
583     "D3DDECLMETHOD_PARTIALV",
584     "D3DDECLMETHOD_CROSSUV",
585     "D3DDECLMETHOD_UV",
586     "D3DDECLMETHOD_LOOKUP",
587     "D3DDECLMETHOD_LOOKUPPRESAMPLED",
588 ])
589
590 D3DDECLTYPE = FakeEnum(BYTE, [
591     "D3DDECLTYPE_FLOAT1",
592     "D3DDECLTYPE_FLOAT2",
593     "D3DDECLTYPE_FLOAT3",
594     "D3DDECLTYPE_FLOAT4",
595     "D3DDECLTYPE_D3DCOLOR",
596     "D3DDECLTYPE_UBYTE4",
597     "D3DDECLTYPE_SHORT2",
598     "D3DDECLTYPE_SHORT4",
599     "D3DDECLTYPE_UBYTE4N",
600     "D3DDECLTYPE_SHORT2N",
601     "D3DDECLTYPE_SHORT4N",
602     "D3DDECLTYPE_USHORT2N",
603     "D3DDECLTYPE_USHORT4N",
604     "D3DDECLTYPE_UDEC3",
605     "D3DDECLTYPE_DEC3N",
606     "D3DDECLTYPE_FLOAT16_2",
607     "D3DDECLTYPE_FLOAT16_4",
608     "D3DDECLTYPE_UNUSED",
609 ])
610
611 D3DVERTEXELEMENT9 = Struct("D3DVERTEXELEMENT9", [
612     (WORD, "Stream"),
613     (WORD, "Offset"),
614     (D3DDECLTYPE, "Type"), # BYTE
615     (D3DDECLMETHOD, "Method"), # BYTE
616     (D3DDECLUSAGE, "Usage"), # BYTE
617     (BYTE, "UsageIndex"),
618 ])
619
620 D3DSHADER_ADDRESSMODE_TYPE = Enum("D3DSHADER_ADDRESSMODE_TYPE", [
621     "D3DSHADER_ADDRMODE_ABSOLUTE",
622     "D3DSHADER_ADDRMODE_RELATIVE",
623 ])
624
625 D3DBASISTYPE = Enum("D3DBASISTYPE", [
626     "D3DBASIS_BEZIER",
627     "D3DBASIS_BSPLINE",
628     "D3DBASIS_CATMULL_ROM",
629 ])
630
631 D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
632     "D3DSBT_ALL",
633     "D3DSBT_PIXELSTATE",
634     "D3DSBT_VERTEXSTATE",
635 ])
636
637 D3DDEVTYPE = Enum("D3DDEVTYPE", [
638     "D3DDEVTYPE_HAL",
639     "D3DDEVTYPE_REF",
640     "D3DDEVTYPE_SW",
641     "D3DDEVTYPE_NULLREF",
642 ])
643
644 D3DMULTISAMPLE_TYPE = Enum("D3DMULTISAMPLE_TYPE", [
645     "D3DMULTISAMPLE_NONE",
646     "D3DMULTISAMPLE_NONMASKABLE",
647     "D3DMULTISAMPLE_2_SAMPLES",
648     "D3DMULTISAMPLE_3_SAMPLES",
649     "D3DMULTISAMPLE_4_SAMPLES",
650     "D3DMULTISAMPLE_5_SAMPLES",
651     "D3DMULTISAMPLE_6_SAMPLES",
652     "D3DMULTISAMPLE_7_SAMPLES",
653     "D3DMULTISAMPLE_8_SAMPLES",
654     "D3DMULTISAMPLE_9_SAMPLES",
655     "D3DMULTISAMPLE_10_SAMPLES",
656     "D3DMULTISAMPLE_11_SAMPLES",
657     "D3DMULTISAMPLE_12_SAMPLES",
658     "D3DMULTISAMPLE_13_SAMPLES",
659     "D3DMULTISAMPLE_14_SAMPLES",
660     "D3DMULTISAMPLE_15_SAMPLES",
661     "D3DMULTISAMPLE_16_SAMPLES",
662 ])
663
664 D3DFORMAT = Enum("D3DFORMAT", [
665     "D3DFMT_UNKNOWN",
666     "D3DFMT_R8G8B8",
667     "D3DFMT_A8R8G8B8",
668     "D3DFMT_X8R8G8B8",
669     "D3DFMT_R5G6B5",
670     "D3DFMT_X1R5G5B5",
671     "D3DFMT_A1R5G5B5",
672     "D3DFMT_A4R4G4B4",
673     "D3DFMT_R3G3B2",
674     "D3DFMT_A8",
675     "D3DFMT_A8R3G3B2",
676     "D3DFMT_X4R4G4B4",
677     "D3DFMT_A2B10G10R10",
678     "D3DFMT_A8B8G8R8",
679     "D3DFMT_X8B8G8R8",
680     "D3DFMT_G16R16",
681     "D3DFMT_A2R10G10B10",
682     "D3DFMT_A16B16G16R16",
683     "D3DFMT_A8P8",
684     "D3DFMT_P8",
685     "D3DFMT_L8",
686     "D3DFMT_A8L8",
687     "D3DFMT_A4L4",
688     "D3DFMT_V8U8",
689     "D3DFMT_L6V5U5",
690     "D3DFMT_X8L8V8U8",
691     "D3DFMT_Q8W8V8U8",
692     "D3DFMT_V16U16",
693     "D3DFMT_A2W10V10U10",
694     "D3DFMT_UYVY",
695     "D3DFMT_R8G8_B8G8",
696     "D3DFMT_YUY2",
697     "D3DFMT_G8R8_G8B8",
698     "D3DFMT_DXT1",
699     "D3DFMT_DXT2",
700     "D3DFMT_DXT3",
701     "D3DFMT_DXT4",
702     "D3DFMT_DXT5",
703     "D3DFMT_D16_LOCKABLE",
704     "D3DFMT_D32",
705     "D3DFMT_D15S1",
706     "D3DFMT_D24S8",
707     "D3DFMT_D24X8",
708     "D3DFMT_D24X4S4",
709     "D3DFMT_D16",
710     "D3DFMT_D32F_LOCKABLE",
711     "D3DFMT_D24FS8",
712     "D3DFMT_D32_LOCKABLE",
713     "D3DFMT_S8_LOCKABLE",
714     "D3DFMT_L16",
715     "D3DFMT_VERTEXDATA",
716     "D3DFMT_INDEX16",
717     "D3DFMT_INDEX32",
718     "D3DFMT_Q16W16V16U16",
719     "D3DFMT_MULTI2_ARGB8",
720     "D3DFMT_R16F",
721     "D3DFMT_G16R16F",
722     "D3DFMT_A16B16G16R16F",
723     "D3DFMT_R32F",
724     "D3DFMT_G32R32F",
725     "D3DFMT_A32B32G32R32F",
726     "D3DFMT_CxV8U8",
727     "D3DFMT_A1",
728     "D3DFMT_A2B10G10R10_XR_BIAS",
729     "D3DFMT_BINARYBUFFER",
730
731     # Unofficial formats
732     "D3DFMT_ATI1N",
733     "D3DFMT_ATI2N",
734     "D3DFMT_AYUV",
735     "D3DFMT_DF16",
736     "D3DFMT_DF24",
737     "D3DFMT_INTZ",
738     "D3DFMT_NULL",
739     "D3DFMT_NV12",
740     "D3DFMT_RAWZ",
741 ])
742
743 D3DDISPLAYMODE = Struct("D3DDISPLAYMODE", [
744     (UINT, "Width"),
745     (UINT, "Height"),
746     (UINT, "RefreshRate"),
747     (D3DFORMAT, "Format"),
748 ])
749
750 D3DCREATE = Flags(DWORD, [
751     "D3DCREATE_FPU_PRESERVE",
752     "D3DCREATE_MULTITHREADED",
753     "D3DCREATE_PUREDEVICE",
754     "D3DCREATE_SOFTWARE_VERTEXPROCESSING",
755     "D3DCREATE_HARDWARE_VERTEXPROCESSING",
756     "D3DCREATE_MIXED_VERTEXPROCESSING",
757     "D3DCREATE_DISABLE_DRIVER_MANAGEMENT",
758     "D3DCREATE_ADAPTERGROUP_DEVICE",
759     "D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX",
760     "D3DCREATE_NOWINDOWCHANGES",
761     "D3DCREATE_DISABLE_PSGP_THREADING",
762     "D3DCREATE_ENABLE_PRESENTSTATS",
763     "D3DCREATE_DISABLE_PRINTSCREEN",
764     "D3DCREATE_SCREENSAVER",
765 ])
766
767 D3DDEVICE_CREATION_PARAMETERS = Struct("D3DDEVICE_CREATION_PARAMETERS", [
768     (UINT, "AdapterOrdinal"),
769     (D3DDEVTYPE, "DeviceType"),
770     (HWND, "hFocusWindow"),
771     (D3DCREATE, "BehaviorFlags"),
772 ])
773
774 D3DSWAPEFFECT = Enum("D3DSWAPEFFECT", [
775     "D3DSWAPEFFECT_DISCARD",
776     "D3DSWAPEFFECT_FLIP",
777     "D3DSWAPEFFECT_COPY",
778 ])
779
780 D3DPOOL = Enum("D3DPOOL", [
781     "D3DPOOL_DEFAULT",
782     "D3DPOOL_MANAGED",
783     "D3DPOOL_SYSTEMMEM",
784     "D3DPOOL_SCRATCH",
785 ])
786
787 D3DPRESENT = FakeEnum(DWORD, [
788     "D3DPRESENT_RATE_DEFAULT",
789 ])
790
791 D3DPRESENTFLAG = Flags(DWORD, [
792     "D3DPRESENTFLAG_LOCKABLE_BACKBUFFER",
793     "D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL",
794     "D3DPRESENTFLAG_DEVICECLIP",
795     "D3DPRESENTFLAG_VIDEO",
796     "D3DPRESENTFLAG_NOAUTOROTATE",
797     "D3DPRESENTFLAG_UNPRUNEDMODE",
798 ])
799
800 D3DPRESENT_INTERVAL = Flags(DWORD, [
801     "D3DPRESENT_INTERVAL_DEFAULT", # 0
802     "D3DPRESENT_INTERVAL_ONE",
803     "D3DPRESENT_INTERVAL_TWO",
804     "D3DPRESENT_INTERVAL_THREE",
805     "D3DPRESENT_INTERVAL_FOUR",
806     "D3DPRESENT_INTERVAL_IMMEDIATE",
807 ])
808
809 D3DPRESENT_PARAMETERS = Struct("D3DPRESENT_PARAMETERS", [
810     (UINT, "BackBufferWidth"),
811     (UINT, "BackBufferHeight"),
812     (D3DFORMAT, "BackBufferFormat"),
813     (UINT, "BackBufferCount"),
814     (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
815     (DWORD, "MultiSampleQuality"),
816     (D3DSWAPEFFECT, "SwapEffect"),
817     (HWND, "hDeviceWindow"),
818     (BOOL, "Windowed"),
819     (BOOL, "EnableAutoDepthStencil"),
820     (D3DFORMAT, "AutoDepthStencilFormat"),
821     (D3DPRESENTFLAG, "Flags"),
822     (UINT, "FullScreen_RefreshRateInHz"),
823     (D3DPRESENT_INTERVAL, "PresentationInterval"),
824 ])
825
826 D3DGAMMARAMP = Struct("D3DGAMMARAMP", [
827     (Array(WORD, 256), "red"),
828     (Array(WORD, 256), "green"),
829     (Array(WORD, 256), "blue"),
830 ])
831
832 D3DBACKBUFFER_TYPE = Enum("D3DBACKBUFFER_TYPE", [
833     "D3DBACKBUFFER_TYPE_MONO",
834     "D3DBACKBUFFER_TYPE_LEFT",
835     "D3DBACKBUFFER_TYPE_RIGHT",
836 ])
837
838 D3DRESOURCETYPE = Enum("D3DRESOURCETYPE", [
839     "D3DRTYPE_SURFACE",
840     "D3DRTYPE_VOLUME",
841     "D3DRTYPE_TEXTURE",
842     "D3DRTYPE_VOLUMETEXTURE",
843     "D3DRTYPE_CUBETEXTURE",
844     "D3DRTYPE_VERTEXBUFFER",
845     "D3DRTYPE_INDEXBUFFER",
846 ])
847
848 D3DUSAGE = Flags(DWORD, [
849     "D3DUSAGE_RENDERTARGET",
850     "D3DUSAGE_DEPTHSTENCIL",
851     "D3DUSAGE_DYNAMIC",
852     "D3DUSAGE_NONSECURE",
853     "D3DUSAGE_AUTOGENMIPMAP",
854     "D3DUSAGE_DMAP",
855     "D3DUSAGE_QUERY_LEGACYBUMPMAP",
856     "D3DUSAGE_QUERY_SRGBREAD",
857     "D3DUSAGE_QUERY_FILTER",
858     "D3DUSAGE_QUERY_SRGBWRITE",
859     "D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING",
860     "D3DUSAGE_QUERY_VERTEXTEXTURE",
861     "D3DUSAGE_QUERY_WRAPANDMIP",
862     "D3DUSAGE_WRITEONLY",
863     "D3DUSAGE_SOFTWAREPROCESSING",
864     "D3DUSAGE_DONOTCLIP",
865     "D3DUSAGE_POINTS",
866     "D3DUSAGE_RTPATCHES",
867     "D3DUSAGE_NPATCHES",
868     "D3DUSAGE_TEXTAPI",
869     "D3DUSAGE_RESTRICTED_CONTENT",
870     "D3DUSAGE_RESTRICT_SHARED_RESOURCE",
871     "D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER",
872 ])
873
874 D3DCUBEMAP_FACES = Enum("D3DCUBEMAP_FACES", [
875     "D3DCUBEMAP_FACE_POSITIVE_X",
876     "D3DCUBEMAP_FACE_NEGATIVE_X",
877     "D3DCUBEMAP_FACE_POSITIVE_Y",
878     "D3DCUBEMAP_FACE_NEGATIVE_Y",
879     "D3DCUBEMAP_FACE_POSITIVE_Z",
880     "D3DCUBEMAP_FACE_NEGATIVE_Z",
881 ])
882
883 D3DLOCK = Flags(DWORD, [
884     "D3DLOCK_READONLY",
885     "D3DLOCK_DISCARD",
886     "D3DLOCK_NOOVERWRITE",
887     "D3DLOCK_NOSYSLOCK",
888     "D3DLOCK_DONOTWAIT",
889     "D3DLOCK_NO_DIRTY_UPDATE",
890 ])
891
892 D3DVERTEXBUFFER_DESC = Struct("D3DVERTEXBUFFER_DESC", [
893     (D3DFORMAT, "Format"),
894     (D3DRESOURCETYPE, "Type"),
895     (D3DUSAGE, "Usage"),
896     (D3DPOOL, "Pool"),
897     (UINT, "Size"),
898     (DWORD, "FVF"),
899 ])
900
901 D3DINDEXBUFFER_DESC = Struct("D3DINDEXBUFFER_DESC", [
902     (D3DFORMAT, "Format"),
903     (D3DRESOURCETYPE, "Type"),
904     (D3DUSAGE, "Usage"),
905     (D3DPOOL, "Pool"),
906     (UINT, "Size"),
907 ])
908
909 D3DSURFACE_DESC = Struct("D3DSURFACE_DESC", [
910     (D3DFORMAT, "Format"),
911     (D3DRESOURCETYPE, "Type"),
912     (D3DUSAGE, "Usage"),
913     (D3DPOOL, "Pool"),
914     (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
915     (DWORD, "MultiSampleQuality"),
916     (UINT, "Width"),
917     (UINT, "Height"),
918 ])
919
920 D3DVOLUME_DESC = Struct("D3DVOLUME_DESC", [
921     (D3DFORMAT, "Format"),
922     (D3DRESOURCETYPE, "Type"),
923     (D3DUSAGE, "Usage"),
924     (D3DPOOL, "Pool"),
925     (UINT, "Width"),
926     (UINT, "Height"),
927     (UINT, "Depth"),
928 ])
929
930 D3DLOCKED_RECT = Struct("D3DLOCKED_RECT", [
931     (INT, "Pitch"),
932     (LinearPointer(Void, "_MappedSize"), "pBits"),
933 ])
934
935 D3DBOX = Struct("D3DBOX", [
936     (UINT, "Left"),
937     (UINT, "Top"),
938     (UINT, "Right"),
939     (UINT, "Bottom"),
940     (UINT, "Front"),
941     (UINT, "Back"),
942 ])
943
944 D3DLOCKED_BOX = Struct("D3DLOCKED_BOX", [
945     (INT, "RowPitch"),
946     (INT, "SlicePitch"),
947     (LinearPointer(Void, "_MappedSize"), "pBits"),
948 ])
949
950 D3DRANGE = Struct("D3DRANGE", [
951     (UINT, "Offset"),
952     (UINT, "Size"),
953 ])
954
955 D3DRECTPATCH_INFO = Struct("D3DRECTPATCH_INFO", [
956     (UINT, "StartVertexOffsetWidth"),
957     (UINT, "StartVertexOffsetHeight"),
958     (UINT, "Width"),
959     (UINT, "Height"),
960     (UINT, "Stride"),
961     (D3DBASISTYPE, "Basis"),
962     (D3DDEGREETYPE, "Degree"),
963 ])
964
965 D3DTRIPATCH_INFO = Struct("D3DTRIPATCH_INFO", [
966     (UINT, "StartVertexOffset"),
967     (UINT, "NumVertices"),
968     (D3DBASISTYPE, "Basis"),
969     (D3DDEGREETYPE, "Degree"),
970 ])
971
972 D3DADAPTER_IDENTIFIER9 = Struct("D3DADAPTER_IDENTIFIER9", [
973     (CString, "Driver"),
974     (CString, "Description"),
975     (CString, "DeviceName"),
976     (LARGE_INTEGER, "DriverVersion"),
977     (DWORD, "VendorId"),
978     (DWORD, "DeviceId"),
979     (DWORD, "SubSysId"),
980     (DWORD, "Revision"),
981     (GUID, "DeviceIdentifier"),
982     (DWORD, "WHQLLevel"),
983 ])
984
985 D3DRASTER_STATUS = Struct("D3DRASTER_STATUS", [
986     (BOOL, "InVBlank"),
987     (UINT, "ScanLine"),
988 ])
989
990 D3DQUERYTYPE = Enum("D3DQUERYTYPE", [
991     "D3DQUERYTYPE_VCACHE",
992     "D3DQUERYTYPE_RESOURCEMANAGER",
993     "D3DQUERYTYPE_VERTEXSTATS",
994     "D3DQUERYTYPE_EVENT",
995     "D3DQUERYTYPE_OCCLUSION",
996     "D3DQUERYTYPE_TIMESTAMP",
997     "D3DQUERYTYPE_TIMESTAMPDISJOINT",
998     "D3DQUERYTYPE_TIMESTAMPFREQ",
999     "D3DQUERYTYPE_PIPELINETIMINGS",
1000     "D3DQUERYTYPE_INTERFACETIMINGS",
1001     "D3DQUERYTYPE_VERTEXTIMINGS",
1002     "D3DQUERYTYPE_PIXELTIMINGS",
1003     "D3DQUERYTYPE_BANDWIDTHTIMINGS",
1004     "D3DQUERYTYPE_CACHEUTILIZATION",
1005 ])
1006
1007 D3DISSUE = Flags(DWORD, [
1008     "D3DISSUE_END",
1009     "D3DISSUE_BEGIN",
1010 ])
1011
1012 D3DGETDATA = Flags(DWORD, [
1013     "D3DGETDATA_FLUSH",
1014 ])
1015
1016 D3DRESOURCESTATS = Struct("D3DRESOURCESTATS", [
1017     (BOOL, "bThrashing"),
1018     (DWORD, "ApproxBytesDownloaded"),
1019     (DWORD, "NumEvicts"),
1020     (DWORD, "NumVidCreates"),
1021     (DWORD, "LastPri"),
1022     (DWORD, "NumUsed"),
1023     (DWORD, "NumUsedInVidMem"),
1024     (DWORD, "WorkingSet"),
1025     (DWORD, "WorkingSetBytes"),
1026     (DWORD, "TotalManaged"),
1027     (DWORD, "TotalBytes"),
1028 ])
1029
1030 D3DDEVINFO_RESOURCEMANAGER = Struct("D3DDEVINFO_RESOURCEMANAGER", [
1031     (Array(D3DRESOURCESTATS, "D3DRTYPECOUNT"), "stats"),
1032 ])
1033
1034 D3DDEVINFO_D3DVERTEXSTATS = Struct("D3DDEVINFO_D3DVERTEXSTATS", [
1035     (DWORD, "NumRenderedTriangles"),
1036     (DWORD, "NumExtraClippingTriangles"),
1037 ])
1038
1039 D3DDEVINFO_VCACHE = Struct("D3DDEVINFO_VCACHE", [
1040     (DWORD, "Pattern"),
1041     (DWORD, "OptMethod"),
1042     (DWORD, "CacheSize"),
1043     (DWORD, "MagicNumber"),
1044 ])
1045
1046 D3DDEVINFO_D3D9PIPELINETIMINGS = Struct("D3DDEVINFO_D3D9PIPELINETIMINGS", [
1047     (FLOAT, "VertexProcessingTimePercent"),
1048     (FLOAT, "PixelProcessingTimePercent"),
1049     (FLOAT, "OtherGPUProcessingTimePercent"),
1050     (FLOAT, "GPUIdleTimePercent"),
1051 ])
1052
1053 D3DDEVINFO_D3D9INTERFACETIMINGS = Struct("D3DDEVINFO_D3D9INTERFACETIMINGS", [
1054     (FLOAT, "WaitingForGPUToUseApplicationResourceTimePercent"),
1055     (FLOAT, "WaitingForGPUToAcceptMoreCommandsTimePercent"),
1056     (FLOAT, "WaitingForGPUToStayWithinLatencyTimePercent"),
1057     (FLOAT, "WaitingForGPUExclusiveResourceTimePercent"),
1058     (FLOAT, "WaitingForGPUOtherTimePercent"),
1059 ])
1060
1061 D3DDEVINFO_D3D9STAGETIMINGS = Struct("D3DDEVINFO_D3D9STAGETIMINGS", [
1062     (FLOAT, "MemoryProcessingPercent"),
1063     (FLOAT, "ComputationProcessingPercent"),
1064 ])
1065
1066 D3DDEVINFO_D3D9BANDWIDTHTIMINGS = Struct("D3DDEVINFO_D3D9BANDWIDTHTIMINGS", [
1067     (FLOAT, "MaxBandwidthUtilized"),
1068     (FLOAT, "FrontEndUploadMemoryUtilizedPercent"),
1069     (FLOAT, "VertexRateUtilizedPercent"),
1070     (FLOAT, "TriangleSetupRateUtilizedPercent"),
1071     (FLOAT, "FillRateUtilizedPercent"),
1072 ])
1073
1074 D3DDEVINFO_D3D9CACHEUTILIZATION = Struct("D3DDEVINFO_D3D9CACHEUTILIZATION", [
1075     (FLOAT, "TextureCacheHitRate"),
1076     (FLOAT, "PostTransformVertexCacheHitRate"),
1077 ])
1078
1079 D3DCOMPOSERECTSOP = Enum("D3DCOMPOSERECTSOP", [
1080     "D3DCOMPOSERECTS_COPY",
1081     "D3DCOMPOSERECTS_OR",
1082     "D3DCOMPOSERECTS_AND",
1083     "D3DCOMPOSERECTS_NEG",
1084 ])
1085
1086 D3DCOMPOSERECTDESC = Struct("D3DCOMPOSERECTDESC", [
1087     (USHORT, "X"),
1088     (USHORT, "Y"),
1089     (USHORT, "Width"),
1090     (USHORT, "Height"),
1091 ])
1092
1093 D3DCOMPOSERECTDESTINATION = Struct("D3DCOMPOSERECTDESTINATION", [
1094     (USHORT, "SrcRectIndex"),
1095     (USHORT, "Reserved"),
1096     (Short, "X"),
1097     (Short, "Y"),
1098 ])
1099
1100 D3DPRESENTSTATS = Struct("D3DPRESENTSTATS", [
1101     (UINT, "PresentCount"),
1102     (UINT, "PresentRefreshCount"),
1103     (UINT, "SyncRefreshCount"),
1104     (LARGE_INTEGER, "SyncQPCTime"),
1105     (LARGE_INTEGER, "SyncGPUTime"),
1106 ])
1107
1108 D3DSCANLINEORDERING = Enum("D3DSCANLINEORDERING", [
1109     "D3DSCANLINEORDERING_UNKNOWN",
1110     "D3DSCANLINEORDERING_PROGRESSIVE",
1111     "D3DSCANLINEORDERING_INTERLACED",
1112 ])
1113
1114 D3DDISPLAYMODEEX = Struct("D3DDISPLAYMODEEX", [
1115     (UINT, "Size"),
1116     (UINT, "Width"),
1117     (UINT, "Height"),
1118     (UINT, "RefreshRate"),
1119     (D3DFORMAT, "Format"),
1120     (D3DSCANLINEORDERING, "ScanLineOrdering"),
1121 ])
1122
1123 D3DDISPLAYMODEFILTER = Struct("D3DDISPLAYMODEFILTER", [
1124     (UINT, "Size"),
1125     (D3DFORMAT, "Format"),
1126     (D3DSCANLINEORDERING, "ScanLineOrdering"),
1127 ])
1128
1129 D3DDISPLAYROTATION = Enum("D3DDISPLAYROTATION", [
1130     "D3DDISPLAYROTATION_IDENTITY",
1131     "D3DDISPLAYROTATION_90",
1132     "D3DDISPLAYROTATION_180",
1133     "D3DDISPLAYROTATION_270",
1134 ])
1135
1136 D3D9_RESOURCE_PRIORITY = FakeEnum(DWORD, [
1137     "D3D9_RESOURCE_PRIORITY_MINIMUM",
1138     "D3D9_RESOURCE_PRIORITY_LOW",
1139     "D3D9_RESOURCE_PRIORITY_NORMAL",
1140     "D3D9_RESOURCE_PRIORITY_HIGH",
1141     "D3D9_RESOURCE_PRIORITY_MAXIMUM",
1142 ])
1143