]> git.cworth.org Git - apitrace/blob - specs/d3d9types.py
Fix compressed texture size computation.
[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 ])
870
871 D3DCUBEMAP_FACES = Enum("D3DCUBEMAP_FACES", [
872     "D3DCUBEMAP_FACE_POSITIVE_X",
873     "D3DCUBEMAP_FACE_NEGATIVE_X",
874     "D3DCUBEMAP_FACE_POSITIVE_Y",
875     "D3DCUBEMAP_FACE_NEGATIVE_Y",
876     "D3DCUBEMAP_FACE_POSITIVE_Z",
877     "D3DCUBEMAP_FACE_NEGATIVE_Z",
878 ])
879
880 D3DLOCK = Flags(DWORD, [
881     "D3DLOCK_READONLY",
882     "D3DLOCK_DISCARD",
883     "D3DLOCK_NOOVERWRITE",
884     "D3DLOCK_NOSYSLOCK",
885     "D3DLOCK_DONOTWAIT",
886     "D3DLOCK_NO_DIRTY_UPDATE",
887 ])
888
889 D3DVERTEXBUFFER_DESC = Struct("D3DVERTEXBUFFER_DESC", [
890     (D3DFORMAT, "Format"),
891     (D3DRESOURCETYPE, "Type"),
892     (D3DUSAGE, "Usage"),
893     (D3DPOOL, "Pool"),
894     (UINT, "Size"),
895     (DWORD, "FVF"),
896 ])
897
898 D3DINDEXBUFFER_DESC = Struct("D3DINDEXBUFFER_DESC", [
899     (D3DFORMAT, "Format"),
900     (D3DRESOURCETYPE, "Type"),
901     (D3DUSAGE, "Usage"),
902     (D3DPOOL, "Pool"),
903     (UINT, "Size"),
904 ])
905
906 D3DSURFACE_DESC = Struct("D3DSURFACE_DESC", [
907     (D3DFORMAT, "Format"),
908     (D3DRESOURCETYPE, "Type"),
909     (D3DUSAGE, "Usage"),
910     (D3DPOOL, "Pool"),
911     (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
912     (DWORD, "MultiSampleQuality"),
913     (UINT, "Width"),
914     (UINT, "Height"),
915 ])
916
917 D3DVOLUME_DESC = Struct("D3DVOLUME_DESC", [
918     (D3DFORMAT, "Format"),
919     (D3DRESOURCETYPE, "Type"),
920     (D3DUSAGE, "Usage"),
921     (D3DPOOL, "Pool"),
922     (UINT, "Width"),
923     (UINT, "Height"),
924     (UINT, "Depth"),
925 ])
926
927 D3DLOCKED_RECT = Struct("D3DLOCKED_RECT", [
928     (INT, "Pitch"),
929     (LinearPointer(Void, "_LockedSize"), "pBits"),
930 ])
931
932 D3DBOX = Struct("D3DBOX", [
933     (UINT, "Left"),
934     (UINT, "Top"),
935     (UINT, "Right"),
936     (UINT, "Bottom"),
937     (UINT, "Front"),
938     (UINT, "Back"),
939 ])
940
941 D3DLOCKED_BOX = Struct("D3DLOCKED_BOX", [
942     (INT, "RowPitch"),
943     (INT, "SlicePitch"),
944     (LinearPointer(Void, "_LockedSize"), "pBits"),
945 ])
946
947 D3DRANGE = Struct("D3DRANGE", [
948     (UINT, "Offset"),
949     (UINT, "Size"),
950 ])
951
952 D3DRECTPATCH_INFO = Struct("D3DRECTPATCH_INFO", [
953     (UINT, "StartVertexOffsetWidth"),
954     (UINT, "StartVertexOffsetHeight"),
955     (UINT, "Width"),
956     (UINT, "Height"),
957     (UINT, "Stride"),
958     (D3DBASISTYPE, "Basis"),
959     (D3DDEGREETYPE, "Degree"),
960 ])
961
962 D3DTRIPATCH_INFO = Struct("D3DTRIPATCH_INFO", [
963     (UINT, "StartVertexOffset"),
964     (UINT, "NumVertices"),
965     (D3DBASISTYPE, "Basis"),
966     (D3DDEGREETYPE, "Degree"),
967 ])
968
969 D3DADAPTER_IDENTIFIER9 = Struct("D3DADAPTER_IDENTIFIER9", [
970     (CString, "Driver"),
971     (CString, "Description"),
972     (CString, "DeviceName"),
973     (LARGE_INTEGER, "DriverVersion"),
974     (DWORD, "VendorId"),
975     (DWORD, "DeviceId"),
976     (DWORD, "SubSysId"),
977     (DWORD, "Revision"),
978     (GUID, "DeviceIdentifier"),
979     (DWORD, "WHQLLevel"),
980 ])
981
982 D3DRASTER_STATUS = Struct("D3DRASTER_STATUS", [
983     (BOOL, "InVBlank"),
984     (UINT, "ScanLine"),
985 ])
986
987 D3DQUERYTYPE = Enum("D3DQUERYTYPE", [
988     "D3DQUERYTYPE_VCACHE",
989     "D3DQUERYTYPE_RESOURCEMANAGER",
990     "D3DQUERYTYPE_VERTEXSTATS",
991     "D3DQUERYTYPE_EVENT",
992     "D3DQUERYTYPE_OCCLUSION",
993     "D3DQUERYTYPE_TIMESTAMP",
994     "D3DQUERYTYPE_TIMESTAMPDISJOINT",
995     "D3DQUERYTYPE_TIMESTAMPFREQ",
996     "D3DQUERYTYPE_PIPELINETIMINGS",
997     "D3DQUERYTYPE_INTERFACETIMINGS",
998     "D3DQUERYTYPE_VERTEXTIMINGS",
999     "D3DQUERYTYPE_PIXELTIMINGS",
1000     "D3DQUERYTYPE_BANDWIDTHTIMINGS",
1001     "D3DQUERYTYPE_CACHEUTILIZATION",
1002 ])
1003
1004 D3DISSUE = Flags(DWORD, [
1005     "D3DISSUE_END",
1006     "D3DISSUE_BEGIN",
1007 ])
1008
1009 D3DGETDATA = Flags(DWORD, [
1010     "D3DGETDATA_FLUSH",
1011 ])
1012
1013 D3DRESOURCESTATS = Struct("D3DRESOURCESTATS", [
1014     (BOOL, "bThrashing"),
1015     (DWORD, "ApproxBytesDownloaded"),
1016     (DWORD, "NumEvicts"),
1017     (DWORD, "NumVidCreates"),
1018     (DWORD, "LastPri"),
1019     (DWORD, "NumUsed"),
1020     (DWORD, "NumUsedInVidMem"),
1021     (DWORD, "WorkingSet"),
1022     (DWORD, "WorkingSetBytes"),
1023     (DWORD, "TotalManaged"),
1024     (DWORD, "TotalBytes"),
1025 ])
1026
1027 D3DDEVINFO_RESOURCEMANAGER = Struct("D3DDEVINFO_RESOURCEMANAGER", [
1028     (Array(D3DRESOURCESTATS, "D3DRTYPECOUNT"), "stats"),
1029 ])
1030
1031 D3DDEVINFO_D3DVERTEXSTATS = Struct("D3DDEVINFO_D3DVERTEXSTATS", [
1032     (DWORD, "NumRenderedTriangles"),
1033     (DWORD, "NumExtraClippingTriangles"),
1034 ])
1035
1036 D3DDEVINFO_VCACHE = Struct("D3DDEVINFO_VCACHE", [
1037     (DWORD, "Pattern"),
1038     (DWORD, "OptMethod"),
1039     (DWORD, "CacheSize"),
1040     (DWORD, "MagicNumber"),
1041 ])
1042
1043 D3DDEVINFO_D3D9PIPELINETIMINGS = Struct("D3DDEVINFO_D3D9PIPELINETIMINGS", [
1044     (FLOAT, "VertexProcessingTimePercent"),
1045     (FLOAT, "PixelProcessingTimePercent"),
1046     (FLOAT, "OtherGPUProcessingTimePercent"),
1047     (FLOAT, "GPUIdleTimePercent"),
1048 ])
1049
1050 D3DDEVINFO_D3D9INTERFACETIMINGS = Struct("D3DDEVINFO_D3D9INTERFACETIMINGS", [
1051     (FLOAT, "WaitingForGPUToUseApplicationResourceTimePercent"),
1052     (FLOAT, "WaitingForGPUToAcceptMoreCommandsTimePercent"),
1053     (FLOAT, "WaitingForGPUToStayWithinLatencyTimePercent"),
1054     (FLOAT, "WaitingForGPUExclusiveResourceTimePercent"),
1055     (FLOAT, "WaitingForGPUOtherTimePercent"),
1056 ])
1057
1058 D3DDEVINFO_D3D9STAGETIMINGS = Struct("D3DDEVINFO_D3D9STAGETIMINGS", [
1059     (FLOAT, "MemoryProcessingPercent"),
1060     (FLOAT, "ComputationProcessingPercent"),
1061 ])
1062
1063 D3DDEVINFO_D3D9BANDWIDTHTIMINGS = Struct("D3DDEVINFO_D3D9BANDWIDTHTIMINGS", [
1064     (FLOAT, "MaxBandwidthUtilized"),
1065     (FLOAT, "FrontEndUploadMemoryUtilizedPercent"),
1066     (FLOAT, "VertexRateUtilizedPercent"),
1067     (FLOAT, "TriangleSetupRateUtilizedPercent"),
1068     (FLOAT, "FillRateUtilizedPercent"),
1069 ])
1070
1071 D3DDEVINFO_D3D9CACHEUTILIZATION = Struct("D3DDEVINFO_D3D9CACHEUTILIZATION", [
1072     (FLOAT, "TextureCacheHitRate"),
1073     (FLOAT, "PostTransformVertexCacheHitRate"),
1074 ])
1075
1076 D3DCOMPOSERECTSOP = Enum("D3DCOMPOSERECTSOP", [
1077     "D3DCOMPOSERECTS_COPY",
1078     "D3DCOMPOSERECTS_OR",
1079     "D3DCOMPOSERECTS_AND",
1080     "D3DCOMPOSERECTS_NEG",
1081 ])
1082
1083 D3DCOMPOSERECTDESC = Struct("D3DCOMPOSERECTDESC", [
1084     (USHORT, "X"),
1085     (USHORT, "Y"),
1086     (USHORT, "Width"),
1087     (USHORT, "Height"),
1088 ])
1089
1090 D3DCOMPOSERECTDESTINATION = Struct("D3DCOMPOSERECTDESTINATION", [
1091     (USHORT, "SrcRectIndex"),
1092     (USHORT, "Reserved"),
1093     (Short, "X"),
1094     (Short, "Y"),
1095 ])
1096
1097 D3DPRESENTSTATS = Struct("D3DPRESENTSTATS", [
1098     (UINT, "PresentCount"),
1099     (UINT, "PresentRefreshCount"),
1100     (UINT, "SyncRefreshCount"),
1101     (LARGE_INTEGER, "SyncQPCTime"),
1102     (LARGE_INTEGER, "SyncGPUTime"),
1103 ])
1104
1105 D3DSCANLINEORDERING = Enum("D3DSCANLINEORDERING", [
1106     "D3DSCANLINEORDERING_UNKNOWN",
1107     "D3DSCANLINEORDERING_PROGRESSIVE",
1108     "D3DSCANLINEORDERING_INTERLACED",
1109 ])
1110
1111 D3DDISPLAYMODEEX = Struct("D3DDISPLAYMODEEX", [
1112     (UINT, "Size"),
1113     (UINT, "Width"),
1114     (UINT, "Height"),
1115     (UINT, "RefreshRate"),
1116     (D3DFORMAT, "Format"),
1117     (D3DSCANLINEORDERING, "ScanLineOrdering"),
1118 ])
1119
1120 D3DDISPLAYMODEFILTER = Struct("D3DDISPLAYMODEFILTER", [
1121     (UINT, "Size"),
1122     (D3DFORMAT, "Format"),
1123     (D3DSCANLINEORDERING, "ScanLineOrdering"),
1124 ])
1125
1126 D3DDISPLAYROTATION = Enum("D3DDISPLAYROTATION", [
1127     "D3DDISPLAYROTATION_IDENTITY",
1128     "D3DDISPLAYROTATION_90",
1129     "D3DDISPLAYROTATION_180",
1130     "D3DDISPLAYROTATION_270",
1131 ])
1132
1133 D3D9_RESOURCE_PRIORITY = FakeEnum(DWORD, [
1134     "D3D9_RESOURCE_PRIORITY_MINIMUM",
1135     "D3D9_RESOURCE_PRIORITY_LOW",
1136     "D3D9_RESOURCE_PRIORITY_NORMAL",
1137     "D3D9_RESOURCE_PRIORITY_HIGH",
1138     "D3D9_RESOURCE_PRIORITY_MAXIMUM",
1139 ])
1140