]> git.cworth.org Git - apitrace/blob - specs/d3d9types.py
Extend profiling tool to support Vsize and Rss memory usage profile per call
[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     "D3DTS_WORLD",
242     "D3DTS_WORLD1",
243     "D3DTS_WORLD2",
244     "D3DTS_WORLD3",
245 ])
246
247 D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [
248     "D3DMCS_MATERIAL",
249     "D3DMCS_COLOR1",
250     "D3DMCS_COLOR2",
251 ])
252
253 D3DWRAPCOORD = Flags(DWORD, [
254     "D3DWRAPCOORD_0",
255     "D3DWRAPCOORD_1",
256     "D3DWRAPCOORD_2",
257     "D3DWRAPCOORD_3",
258 ])
259
260 D3DCOLORWRITEENABLE = Flags(DWORD, [
261     "D3DCOLORWRITEENABLE_RED",
262     "D3DCOLORWRITEENABLE_GREEN",
263     "D3DCOLORWRITEENABLE_BLUE",
264     "D3DCOLORWRITEENABLE_ALPHA",
265 ])
266
267 D3DDEGREETYPE = Enum("D3DDEGREETYPE", [
268     "D3DDEGREE_LINEAR",
269     "D3DDEGREE_QUADRATIC",
270     "D3DDEGREE_CUBIC",
271     "D3DDEGREE_QUINTIC",
272 ])
273
274 D3DPATCHEDGESTYLE = Enum("D3DPATCHEDGESTYLE", [
275     "D3DPATCHEDGE_DISCRETE",
276     "D3DPATCHEDGE_CONTINUOUS",
277 ])
278
279 D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
280     "D3DVBF_DISABLE",
281     "D3DVBF_1WEIGHTS",
282     "D3DVBF_2WEIGHTS",
283     "D3DVBF_3WEIGHTS",
284     "D3DVBF_TWEENING",
285     "D3DVBF_0WEIGHTS",
286 ])
287
288 D3DDEBUGMONITORTOKENS = Enum("D3DDEBUGMONITORTOKENS", [
289     "D3DDMT_ENABLE",
290     "D3DDMT_DISABLE",
291 ])
292
293 # TODO: Convert these to/from actual floats
294 FLOAT_AS_DWORD = DWORD
295
296 D3DRENDERSTATETYPE, D3DRENDERSTATEVALUE = EnumPolymorphic("D3DRENDERSTATETYPE", "State", [
297     ("D3DRS_ZENABLE", D3DZBUFFERTYPE),
298     ("D3DRS_FILLMODE", D3DFILLMODE),
299     ("D3DRS_SHADEMODE", D3DSHADEMODE),
300     ("D3DRS_ZWRITEENABLE", BOOL),
301     ("D3DRS_ALPHATESTENABLE", BOOL),
302     ("D3DRS_LASTPIXEL", BOOL),
303     ("D3DRS_SRCBLEND", D3DBLEND),
304     ("D3DRS_DESTBLEND", D3DBLEND),
305     ("D3DRS_CULLMODE", D3DCULL),
306     ("D3DRS_ZFUNC", D3DCMPFUNC),
307     ("D3DRS_ALPHAREF", DWORD),
308     ("D3DRS_ALPHAFUNC", D3DCMPFUNC),
309     ("D3DRS_DITHERENABLE", BOOL),
310     ("D3DRS_ALPHABLENDENABLE", BOOL),
311     ("D3DRS_FOGENABLE", BOOL),
312     ("D3DRS_SPECULARENABLE", BOOL),
313     ("D3DRS_FOGCOLOR", D3DCOLOR),
314     ("D3DRS_FOGTABLEMODE", D3DFOGMODE),
315     ("D3DRS_FOGSTART", FLOAT_AS_DWORD),
316     ("D3DRS_FOGEND", FLOAT_AS_DWORD),
317     ("D3DRS_FOGDENSITY", FLOAT_AS_DWORD),
318     ("D3DRS_RANGEFOGENABLE", BOOL),
319     ("D3DRS_STENCILENABLE", BOOL),
320     ("D3DRS_STENCILFAIL", D3DSTENCILOP),
321     ("D3DRS_STENCILZFAIL", D3DSTENCILOP),
322     ("D3DRS_STENCILPASS", D3DSTENCILOP),
323     ("D3DRS_STENCILFUNC", D3DCMPFUNC),
324     ("D3DRS_STENCILREF", DWORD),
325     ("D3DRS_STENCILMASK", DWORD),
326     ("D3DRS_STENCILWRITEMASK", DWORD),
327     ("D3DRS_TEXTUREFACTOR", D3DCOLOR),
328     ("D3DRS_WRAP0", D3DWRAPCOORD),
329     ("D3DRS_WRAP1", D3DWRAPCOORD),
330     ("D3DRS_WRAP2", D3DWRAPCOORD),
331     ("D3DRS_WRAP3", D3DWRAPCOORD),
332     ("D3DRS_WRAP4", D3DWRAPCOORD),
333     ("D3DRS_WRAP5", D3DWRAPCOORD),
334     ("D3DRS_WRAP6", D3DWRAPCOORD),
335     ("D3DRS_WRAP7", D3DWRAPCOORD),
336     ("D3DRS_CLIPPING", BOOL),
337     ("D3DRS_LIGHTING", BOOL),
338     ("D3DRS_AMBIENT", D3DCOLOR),
339     ("D3DRS_FOGVERTEXMODE", D3DFOGMODE),
340     ("D3DRS_COLORVERTEX", BOOL),
341     ("D3DRS_LOCALVIEWER", BOOL),
342     ("D3DRS_NORMALIZENORMALS", BOOL),
343     ("D3DRS_DIFFUSEMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
344     ("D3DRS_SPECULARMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
345     ("D3DRS_AMBIENTMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
346     ("D3DRS_EMISSIVEMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
347     ("D3DRS_VERTEXBLEND", D3DVERTEXBLENDFLAGS),
348     ("D3DRS_CLIPPLANEENABLE", D3DCLIPPLANE),
349     ("D3DRS_POINTSIZE", FLOAT_AS_DWORD),
350     ("D3DRS_POINTSIZE_MIN", FLOAT_AS_DWORD),
351     ("D3DRS_POINTSPRITEENABLE", BOOL),
352     ("D3DRS_POINTSCALEENABLE", BOOL),
353     ("D3DRS_POINTSCALE_A", FLOAT_AS_DWORD),
354     ("D3DRS_POINTSCALE_B", FLOAT_AS_DWORD),
355     ("D3DRS_POINTSCALE_C", FLOAT_AS_DWORD),
356     ("D3DRS_MULTISAMPLEANTIALIAS", BOOL),
357     ("D3DRS_MULTISAMPLEMASK", DWORD),
358     ("D3DRS_PATCHEDGESTYLE", D3DPATCHEDGESTYLE),
359     ("D3DRS_DEBUGMONITORTOKEN", D3DDEBUGMONITORTOKENS),
360     ("D3DRS_POINTSIZE_MAX", FLOAT_AS_DWORD),
361     ("D3DRS_INDEXEDVERTEXBLENDENABLE", BOOL),
362     ("D3DRS_COLORWRITEENABLE", DWORD),
363     ("D3DRS_TWEENFACTOR", FLOAT_AS_DWORD),
364     ("D3DRS_BLENDOP", D3DBLENDOP),
365     ("D3DRS_POSITIONDEGREE", D3DDEGREETYPE),
366     ("D3DRS_NORMALDEGREE", D3DDEGREETYPE),
367     ("D3DRS_SCISSORTESTENABLE", BOOL),
368     ("D3DRS_SLOPESCALEDEPTHBIAS", FLOAT_AS_DWORD),
369     ("D3DRS_ANTIALIASEDLINEENABLE", BOOL),
370     ("D3DRS_MINTESSELLATIONLEVEL", FLOAT_AS_DWORD),
371     ("D3DRS_MAXTESSELLATIONLEVEL", FLOAT_AS_DWORD),
372     ("D3DRS_ADAPTIVETESS_X", FLOAT_AS_DWORD),
373     ("D3DRS_ADAPTIVETESS_Y", FLOAT_AS_DWORD),
374     ("D3DRS_ADAPTIVETESS_Z", FLOAT_AS_DWORD),
375     ("D3DRS_ADAPTIVETESS_W", FLOAT_AS_DWORD),
376     ("D3DRS_ENABLEADAPTIVETESSELLATION", BOOL),
377     ("D3DRS_TWOSIDEDSTENCILMODE", BOOL),
378     ("D3DRS_CCW_STENCILFAIL", D3DSTENCILOP),
379     ("D3DRS_CCW_STENCILZFAIL", D3DSTENCILOP),
380     ("D3DRS_CCW_STENCILPASS", D3DSTENCILOP),
381     ("D3DRS_CCW_STENCILFUNC", D3DCMPFUNC),
382     ("D3DRS_COLORWRITEENABLE1", D3DCOLORWRITEENABLE),
383     ("D3DRS_COLORWRITEENABLE2", D3DCOLORWRITEENABLE),
384     ("D3DRS_COLORWRITEENABLE3", D3DCOLORWRITEENABLE),
385     ("D3DRS_BLENDFACTOR", D3DCOLOR),
386     ("D3DRS_SRGBWRITEENABLE", BOOL),
387     ("D3DRS_DEPTHBIAS", FLOAT_AS_DWORD),
388     ("D3DRS_WRAP8", D3DWRAPCOORD),
389     ("D3DRS_WRAP9", D3DWRAPCOORD),
390     ("D3DRS_WRAP10", D3DWRAPCOORD),
391     ("D3DRS_WRAP11", D3DWRAPCOORD),
392     ("D3DRS_WRAP12", D3DWRAPCOORD),
393     ("D3DRS_WRAP13", D3DWRAPCOORD),
394     ("D3DRS_WRAP14", D3DWRAPCOORD),
395     ("D3DRS_WRAP15", D3DWRAPCOORD),
396     ("D3DRS_SEPARATEALPHABLENDENABLE", BOOL),
397     ("D3DRS_SRCBLENDALPHA", D3DBLEND),
398     ("D3DRS_DESTBLENDALPHA", D3DBLEND),
399     ("D3DRS_BLENDOPALPHA", D3DBLENDOP),
400
401     # XXX: D3DRENDERSTATE_WRAPBIAS + n
402 ], DWORD)
403
404 D3DTSS_TCI = Flags(DWORD, [
405     #"D3DTSS_TCI_PASSTHRU", # 0
406     "D3DTSS_TCI_CAMERASPACENORMAL",
407     "D3DTSS_TCI_CAMERASPACEPOSITION",
408     "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
409     "D3DTSS_TCI_SPHEREMAP",
410 ])
411
412 D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
413     "D3DTOP_DISABLE",
414     "D3DTOP_SELECTARG1",
415     "D3DTOP_SELECTARG2",
416     "D3DTOP_MODULATE",
417     "D3DTOP_MODULATE2X",
418     "D3DTOP_MODULATE4X",
419     "D3DTOP_ADD",
420     "D3DTOP_ADDSIGNED",
421     "D3DTOP_ADDSIGNED2X",
422     "D3DTOP_SUBTRACT",
423     "D3DTOP_ADDSMOOTH",
424     "D3DTOP_BLENDDIFFUSEALPHA",
425     "D3DTOP_BLENDTEXTUREALPHA",
426     "D3DTOP_BLENDFACTORALPHA",
427     "D3DTOP_BLENDTEXTUREALPHAPM",
428     "D3DTOP_BLENDCURRENTALPHA",
429     "D3DTOP_PREMODULATE",
430     "D3DTOP_MODULATEALPHA_ADDCOLOR",
431     "D3DTOP_MODULATECOLOR_ADDALPHA",
432     "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
433     "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
434     "D3DTOP_BUMPENVMAP",
435     "D3DTOP_BUMPENVMAPLUMINANCE",
436     "D3DTOP_DOTPRODUCT3",
437     "D3DTOP_MULTIPLYADD",
438     "D3DTOP_LERP",
439 ])
440
441 # XXX: Actually a mixture of enums and flags
442 D3DTA = FakeEnum(DWORD, [
443     "D3DTA_DIFFUSE",
444     "D3DTA_CURRENT",
445     "D3DTA_TEXTURE",
446     "D3DTA_TFACTOR",
447     "D3DTA_SPECULAR",
448     "D3DTA_TEMP",
449     "D3DTA_CONSTANT",
450     #"D3DTA_COMPLEMENT",
451     #"D3DTA_ALPHAREPLICATE",
452 ])
453
454 D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
455     "D3DTTFF_DISABLE",
456     "D3DTTFF_COUNT1",
457     "D3DTTFF_COUNT2",
458     "D3DTTFF_COUNT3",
459     "D3DTTFF_COUNT4",
460     "D3DTTFF_PROJECTED",
461 ])
462
463 D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [
464     "D3DTEXF_NONE",
465     "D3DTEXF_POINT",
466     "D3DTEXF_LINEAR",
467     "D3DTEXF_ANISOTROPIC",
468     "D3DTEXF_PYRAMIDALQUAD",
469     "D3DTEXF_GAUSSIANQUAD",
470     "D3DTEXF_CONVOLUTIONMONO",
471 ])
472
473 D3DTEXTURESTAGESTATETYPE, D3DTEXTURESTAGESTATEVALUE = EnumPolymorphic("D3DTEXTURESTAGESTATETYPE", "Type", [
474     ("D3DTSS_COLOROP", D3DTEXTUREOP),
475     ("D3DTSS_COLORARG1", D3DTA),
476     ("D3DTSS_COLORARG2", D3DTA),
477     ("D3DTSS_ALPHAOP", D3DTEXTUREOP),
478     ("D3DTSS_ALPHAARG1", D3DTA),
479     ("D3DTSS_ALPHAARG2", D3DTA),
480     ("D3DTSS_BUMPENVMAT00", FLOAT_AS_DWORD),
481     ("D3DTSS_BUMPENVMAT01", FLOAT_AS_DWORD),
482     ("D3DTSS_BUMPENVMAT10", FLOAT_AS_DWORD),
483     ("D3DTSS_BUMPENVMAT11", FLOAT_AS_DWORD),
484     ("D3DTSS_TEXCOORDINDEX", D3DTSS_TCI),
485     ("D3DTSS_BUMPENVLSCALE", FLOAT_AS_DWORD),
486     ("D3DTSS_BUMPENVLOFFSET", FLOAT_AS_DWORD),
487     ("D3DTSS_TEXTURETRANSFORMFLAGS", D3DTEXTURETRANSFORMFLAGS),
488     ("D3DTSS_COLORARG0", D3DTA,),
489     ("D3DTSS_ALPHAARG0", D3DTA,),
490     ("D3DTSS_RESULTARG", D3DTA,),
491     ("D3DTSS_CONSTANT", D3DCOLOR),
492 ], DWORD)
493
494 D3DSAMPLERSTATETYPE, D3DSAMPLERSTATEVALUE = EnumPolymorphic("D3DSAMPLERSTATETYPE", "Type", [
495     ("D3DSAMP_ADDRESSU", D3DTEXTUREADDRESS),
496     ("D3DSAMP_ADDRESSV", D3DTEXTUREADDRESS),
497     ("D3DSAMP_ADDRESSW", D3DTEXTUREADDRESS),
498     ("D3DSAMP_BORDERCOLOR", D3DCOLOR),
499     ("D3DSAMP_MAGFILTER", D3DTEXTUREFILTERTYPE),
500     ("D3DSAMP_MINFILTER", D3DTEXTUREFILTERTYPE),
501     ("D3DSAMP_MIPFILTER", D3DTEXTUREFILTERTYPE),
502     ("D3DSAMP_MIPMAPLODBIAS", FLOAT_AS_DWORD),
503     ("D3DSAMP_MAXMIPLEVEL", DWORD),
504     ("D3DSAMP_MAXANISOTROPY", DWORD),
505     ("D3DSAMP_SRGBTEXTURE", BOOL),
506     ("D3DSAMP_ELEMENTINDEX", DWORD),
507     ("D3DSAMP_DMAPOFFSET", DWORD),
508 ], DWORD)
509
510 D3DPV = Flags(DWORD, [
511     "D3DPV_DONOTCOPYDATA",
512 ])
513
514 # XXX: Actually a mixture of enums and flags
515 D3DFVF = Flags(DWORD, [
516     "D3DFVF_RESERVED0",
517     "D3DFVF_XYZ",
518     "D3DFVF_XYZRHW",
519     "D3DFVF_XYZB1",
520     "D3DFVF_XYZB2",
521     "D3DFVF_XYZB3",
522     "D3DFVF_XYZB4",
523     "D3DFVF_XYZB5",
524     "D3DFVF_XYZW",
525     "D3DFVF_NORMAL",
526     "D3DFVF_PSIZE",
527     "D3DFVF_DIFFUSE",
528     "D3DFVF_SPECULAR",
529     #"D3DFVF_TEX0",
530     #"D3DFVF_TEX1",
531     #"D3DFVF_TEX2",
532     #"D3DFVF_TEX3",
533     #"D3DFVF_TEX4",
534     #"D3DFVF_TEX5",
535     #"D3DFVF_TEX6",
536     #"D3DFVF_TEX7",
537     #"D3DFVF_TEX8",
538     "D3DFVF_LASTBETA_UBYTE4",
539     "D3DFVF_LASTBETA_D3DCOLOR",
540     "D3DFVF_RESERVED2",
541     #"D3DFVF_TEXCOORDSIZE1(0)",
542     #"D3DFVF_TEXCOORDSIZE2(0)",
543     #"D3DFVF_TEXCOORDSIZE3(0)",
544     #"D3DFVF_TEXCOORDSIZE4(0)",
545     #"D3DFVF_TEXCOORDSIZE1(1)",
546     #"D3DFVF_TEXCOORDSIZE2(1)",
547     #"D3DFVF_TEXCOORDSIZE3(1)",
548     #"D3DFVF_TEXCOORDSIZE4(1)",
549     #"D3DFVF_TEXCOORDSIZE1(2)",
550     #"D3DFVF_TEXCOORDSIZE2(2)",
551     #"D3DFVF_TEXCOORDSIZE3(2)",
552     #"D3DFVF_TEXCOORDSIZE4(2)",
553     #"D3DFVF_TEXCOORDSIZE1(3)",
554     #"D3DFVF_TEXCOORDSIZE2(3)",
555     #"D3DFVF_TEXCOORDSIZE3(3)",
556     #"D3DFVF_TEXCOORDSIZE4(3)",
557 ])
558
559 D3DDECLUSAGE = FakeEnum(BYTE, [
560     "D3DDECLUSAGE_POSITION",
561     "D3DDECLUSAGE_BLENDWEIGHT",
562     "D3DDECLUSAGE_BLENDINDICES",
563     "D3DDECLUSAGE_NORMAL",
564     "D3DDECLUSAGE_PSIZE",
565     "D3DDECLUSAGE_TEXCOORD",
566     "D3DDECLUSAGE_TANGENT",
567     "D3DDECLUSAGE_BINORMAL",
568     "D3DDECLUSAGE_TESSFACTOR",
569     "D3DDECLUSAGE_POSITIONT",
570     "D3DDECLUSAGE_COLOR",
571     "D3DDECLUSAGE_FOG",
572     "D3DDECLUSAGE_DEPTH",
573     "D3DDECLUSAGE_SAMPLE",
574 ])
575
576 D3DDECLMETHOD = FakeEnum(BYTE, [
577     "D3DDECLMETHOD_DEFAULT",
578     "D3DDECLMETHOD_PARTIALU",
579     "D3DDECLMETHOD_PARTIALV",
580     "D3DDECLMETHOD_CROSSUV",
581     "D3DDECLMETHOD_UV",
582     "D3DDECLMETHOD_LOOKUP",
583     "D3DDECLMETHOD_LOOKUPPRESAMPLED",
584 ])
585
586 D3DDECLTYPE = FakeEnum(BYTE, [
587     "D3DDECLTYPE_FLOAT1",
588     "D3DDECLTYPE_FLOAT2",
589     "D3DDECLTYPE_FLOAT3",
590     "D3DDECLTYPE_FLOAT4",
591     "D3DDECLTYPE_D3DCOLOR",
592     "D3DDECLTYPE_UBYTE4",
593     "D3DDECLTYPE_SHORT2",
594     "D3DDECLTYPE_SHORT4",
595     "D3DDECLTYPE_UBYTE4N",
596     "D3DDECLTYPE_SHORT2N",
597     "D3DDECLTYPE_SHORT4N",
598     "D3DDECLTYPE_USHORT2N",
599     "D3DDECLTYPE_USHORT4N",
600     "D3DDECLTYPE_UDEC3",
601     "D3DDECLTYPE_DEC3N",
602     "D3DDECLTYPE_FLOAT16_2",
603     "D3DDECLTYPE_FLOAT16_4",
604     "D3DDECLTYPE_UNUSED",
605 ])
606
607 D3DVERTEXELEMENT9 = Struct("D3DVERTEXELEMENT9", [
608     (WORD, "Stream"),
609     (WORD, "Offset"),
610     (D3DDECLTYPE, "Type"), # BYTE
611     (D3DDECLMETHOD, "Method"), # BYTE
612     (D3DDECLUSAGE, "Usage"), # BYTE
613     (BYTE, "UsageIndex"),
614 ])
615
616 D3DBASISTYPE = Enum("D3DBASISTYPE", [
617     "D3DBASIS_BEZIER",
618     "D3DBASIS_BSPLINE",
619     "D3DBASIS_CATMULL_ROM",
620 ])
621
622 D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
623     "D3DSBT_ALL",
624     "D3DSBT_PIXELSTATE",
625     "D3DSBT_VERTEXSTATE",
626 ])
627
628 D3DDEVTYPE = Enum("D3DDEVTYPE", [
629     "D3DDEVTYPE_HAL",
630     "D3DDEVTYPE_REF",
631     "D3DDEVTYPE_SW",
632     "D3DDEVTYPE_NULLREF",
633 ])
634
635 D3DMULTISAMPLE_TYPE = Enum("D3DMULTISAMPLE_TYPE", [
636     "D3DMULTISAMPLE_NONE",
637     "D3DMULTISAMPLE_NONMASKABLE",
638     "D3DMULTISAMPLE_2_SAMPLES",
639     "D3DMULTISAMPLE_3_SAMPLES",
640     "D3DMULTISAMPLE_4_SAMPLES",
641     "D3DMULTISAMPLE_5_SAMPLES",
642     "D3DMULTISAMPLE_6_SAMPLES",
643     "D3DMULTISAMPLE_7_SAMPLES",
644     "D3DMULTISAMPLE_8_SAMPLES",
645     "D3DMULTISAMPLE_9_SAMPLES",
646     "D3DMULTISAMPLE_10_SAMPLES",
647     "D3DMULTISAMPLE_11_SAMPLES",
648     "D3DMULTISAMPLE_12_SAMPLES",
649     "D3DMULTISAMPLE_13_SAMPLES",
650     "D3DMULTISAMPLE_14_SAMPLES",
651     "D3DMULTISAMPLE_15_SAMPLES",
652     "D3DMULTISAMPLE_16_SAMPLES",
653 ])
654
655 D3DFORMAT = Enum("D3DFORMAT", [
656     "D3DFMT_UNKNOWN",
657     "D3DFMT_R8G8B8",
658     "D3DFMT_A8R8G8B8",
659     "D3DFMT_X8R8G8B8",
660     "D3DFMT_R5G6B5",
661     "D3DFMT_X1R5G5B5",
662     "D3DFMT_A1R5G5B5",
663     "D3DFMT_A4R4G4B4",
664     "D3DFMT_R3G3B2",
665     "D3DFMT_A8",
666     "D3DFMT_A8R3G3B2",
667     "D3DFMT_X4R4G4B4",
668     "D3DFMT_A2B10G10R10",
669     "D3DFMT_A8B8G8R8",
670     "D3DFMT_X8B8G8R8",
671     "D3DFMT_G16R16",
672     "D3DFMT_A2R10G10B10",
673     "D3DFMT_A16B16G16R16",
674     "D3DFMT_A8P8",
675     "D3DFMT_P8",
676     "D3DFMT_L8",
677     "D3DFMT_A8L8",
678     "D3DFMT_A4L4",
679     "D3DFMT_V8U8",
680     "D3DFMT_L6V5U5",
681     "D3DFMT_X8L8V8U8",
682     "D3DFMT_Q8W8V8U8",
683     "D3DFMT_V16U16",
684     "D3DFMT_A2W10V10U10",
685     "D3DFMT_UYVY",
686     "D3DFMT_R8G8_B8G8",
687     "D3DFMT_YUY2",
688     "D3DFMT_G8R8_G8B8",
689     "D3DFMT_DXT1",
690     "D3DFMT_DXT2",
691     "D3DFMT_DXT3",
692     "D3DFMT_DXT4",
693     "D3DFMT_DXT5",
694     "D3DFMT_D16_LOCKABLE",
695     "D3DFMT_D32",
696     "D3DFMT_D15S1",
697     "D3DFMT_D24S8",
698     "D3DFMT_D24X8",
699     "D3DFMT_D24X4S4",
700     "D3DFMT_D16",
701     "D3DFMT_D32F_LOCKABLE",
702     "D3DFMT_D24FS8",
703     "D3DFMT_D32_LOCKABLE",
704     "D3DFMT_S8_LOCKABLE",
705     "D3DFMT_L16",
706     "D3DFMT_VERTEXDATA",
707     "D3DFMT_INDEX16",
708     "D3DFMT_INDEX32",
709     "D3DFMT_Q16W16V16U16",
710     "D3DFMT_MULTI2_ARGB8",
711     "D3DFMT_R16F",
712     "D3DFMT_G16R16F",
713     "D3DFMT_A16B16G16R16F",
714     "D3DFMT_R32F",
715     "D3DFMT_G32R32F",
716     "D3DFMT_A32B32G32R32F",
717     "D3DFMT_CxV8U8",
718     "D3DFMT_A1",
719     "D3DFMT_A2B10G10R10_XR_BIAS",
720     "D3DFMT_BINARYBUFFER",
721
722     # Unofficial formats
723     "D3DFMT_ATI1N",
724     "D3DFMT_ATI2N",
725     "D3DFMT_AYUV",
726     "D3DFMT_DF16",
727     "D3DFMT_DF24",
728     "D3DFMT_INTZ",
729     "D3DFMT_NULL",
730     "D3DFMT_NV12",
731     "D3DFMT_YV12",
732     "D3DFMT_RAWZ",
733 ])
734
735 D3DDISPLAYMODE = Struct("D3DDISPLAYMODE", [
736     (UINT, "Width"),
737     (UINT, "Height"),
738     (UINT, "RefreshRate"),
739     (D3DFORMAT, "Format"),
740 ])
741
742 D3DCREATE = Flags(DWORD, [
743     "D3DCREATE_FPU_PRESERVE",
744     "D3DCREATE_MULTITHREADED",
745     "D3DCREATE_PUREDEVICE",
746     "D3DCREATE_SOFTWARE_VERTEXPROCESSING",
747     "D3DCREATE_HARDWARE_VERTEXPROCESSING",
748     "D3DCREATE_MIXED_VERTEXPROCESSING",
749     "D3DCREATE_DISABLE_DRIVER_MANAGEMENT",
750     "D3DCREATE_ADAPTERGROUP_DEVICE",
751     "D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX",
752     "D3DCREATE_NOWINDOWCHANGES",
753     "D3DCREATE_DISABLE_PSGP_THREADING",
754     "D3DCREATE_ENABLE_PRESENTSTATS",
755     "D3DCREATE_DISABLE_PRINTSCREEN",
756     "D3DCREATE_SCREENSAVER",
757 ])
758
759 D3DDEVICE_CREATION_PARAMETERS = Struct("D3DDEVICE_CREATION_PARAMETERS", [
760     (UINT, "AdapterOrdinal"),
761     (D3DDEVTYPE, "DeviceType"),
762     (HWND, "hFocusWindow"),
763     (D3DCREATE, "BehaviorFlags"),
764 ])
765
766 D3DSWAPEFFECT = Enum("D3DSWAPEFFECT", [
767     "D3DSWAPEFFECT_DISCARD",
768     "D3DSWAPEFFECT_FLIP",
769     "D3DSWAPEFFECT_COPY",
770 ])
771
772 D3DPOOL = Enum("D3DPOOL", [
773     "D3DPOOL_DEFAULT",
774     "D3DPOOL_MANAGED",
775     "D3DPOOL_SYSTEMMEM",
776     "D3DPOOL_SCRATCH",
777 ])
778
779 D3DPRESENT = FakeEnum(DWORD, [
780     "D3DPRESENT_RATE_DEFAULT",
781 ])
782
783 D3DPRESENTFLAG = Flags(DWORD, [
784     "D3DPRESENTFLAG_LOCKABLE_BACKBUFFER",
785     "D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL",
786     "D3DPRESENTFLAG_DEVICECLIP",
787     "D3DPRESENTFLAG_VIDEO",
788     "D3DPRESENTFLAG_NOAUTOROTATE",
789     "D3DPRESENTFLAG_UNPRUNEDMODE",
790 ])
791
792 D3DPRESENT_INTERVAL = Flags(DWORD, [
793     "D3DPRESENT_INTERVAL_DEFAULT", # 0
794     "D3DPRESENT_INTERVAL_ONE",
795     "D3DPRESENT_INTERVAL_TWO",
796     "D3DPRESENT_INTERVAL_THREE",
797     "D3DPRESENT_INTERVAL_FOUR",
798     "D3DPRESENT_INTERVAL_IMMEDIATE",
799 ])
800
801 D3DPRESENT_PARAMETERS = Struct("D3DPRESENT_PARAMETERS", [
802     (UINT, "BackBufferWidth"),
803     (UINT, "BackBufferHeight"),
804     (D3DFORMAT, "BackBufferFormat"),
805     (UINT, "BackBufferCount"),
806     (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
807     (DWORD, "MultiSampleQuality"),
808     (D3DSWAPEFFECT, "SwapEffect"),
809     (HWND, "hDeviceWindow"),
810     (BOOL, "Windowed"),
811     (BOOL, "EnableAutoDepthStencil"),
812     (D3DFORMAT, "AutoDepthStencilFormat"),
813     (D3DPRESENTFLAG, "Flags"),
814     (UINT, "FullScreen_RefreshRateInHz"),
815     (D3DPRESENT_INTERVAL, "PresentationInterval"),
816 ])
817
818 D3DGAMMARAMP = Struct("D3DGAMMARAMP", [
819     (Array(WORD, 256), "red"),
820     (Array(WORD, 256), "green"),
821     (Array(WORD, 256), "blue"),
822 ])
823
824 D3DBACKBUFFER_TYPE = Enum("D3DBACKBUFFER_TYPE", [
825     "D3DBACKBUFFER_TYPE_MONO",
826     "D3DBACKBUFFER_TYPE_LEFT",
827     "D3DBACKBUFFER_TYPE_RIGHT",
828 ])
829
830 D3DRESOURCETYPE = Enum("D3DRESOURCETYPE", [
831     "D3DRTYPE_SURFACE",
832     "D3DRTYPE_VOLUME",
833     "D3DRTYPE_TEXTURE",
834     "D3DRTYPE_VOLUMETEXTURE",
835     "D3DRTYPE_CUBETEXTURE",
836     "D3DRTYPE_VERTEXBUFFER",
837     "D3DRTYPE_INDEXBUFFER",
838 ])
839
840 D3DUSAGE = Flags(DWORD, [
841     "D3DUSAGE_RENDERTARGET",
842     "D3DUSAGE_DEPTHSTENCIL",
843     "D3DUSAGE_WRITEONLY",
844     "D3DUSAGE_SOFTWAREPROCESSING",
845     "D3DUSAGE_DONOTCLIP",
846     "D3DUSAGE_POINTS",
847     "D3DUSAGE_RTPATCHES",
848     "D3DUSAGE_NPATCHES",
849     "D3DUSAGE_DYNAMIC",
850     "D3DUSAGE_AUTOGENMIPMAP",
851     "D3DUSAGE_RESTRICTED_CONTENT",
852     "D3DUSAGE_RESTRICT_SHARED_RESOURCE",
853     "D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER",
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_NONSECURE",
863     "D3DUSAGE_TEXTAPI",
864 ])
865
866 D3DCUBEMAP_FACES = Enum("D3DCUBEMAP_FACES", [
867     "D3DCUBEMAP_FACE_POSITIVE_X",
868     "D3DCUBEMAP_FACE_NEGATIVE_X",
869     "D3DCUBEMAP_FACE_POSITIVE_Y",
870     "D3DCUBEMAP_FACE_NEGATIVE_Y",
871     "D3DCUBEMAP_FACE_POSITIVE_Z",
872     "D3DCUBEMAP_FACE_NEGATIVE_Z",
873 ])
874
875 D3DLOCK = Flags(DWORD, [
876     "D3DLOCK_READONLY",
877     "D3DLOCK_DISCARD",
878     "D3DLOCK_NOOVERWRITE",
879     "D3DLOCK_NOSYSLOCK",
880     "D3DLOCK_DONOTWAIT",
881     "D3DLOCK_NO_DIRTY_UPDATE",
882 ])
883
884 D3DVERTEXBUFFER_DESC = Struct("D3DVERTEXBUFFER_DESC", [
885     (D3DFORMAT, "Format"),
886     (D3DRESOURCETYPE, "Type"),
887     (D3DUSAGE, "Usage"),
888     (D3DPOOL, "Pool"),
889     (UINT, "Size"),
890     (DWORD, "FVF"),
891 ])
892
893 D3DINDEXBUFFER_DESC = Struct("D3DINDEXBUFFER_DESC", [
894     (D3DFORMAT, "Format"),
895     (D3DRESOURCETYPE, "Type"),
896     (D3DUSAGE, "Usage"),
897     (D3DPOOL, "Pool"),
898     (UINT, "Size"),
899 ])
900
901 D3DSURFACE_DESC = Struct("D3DSURFACE_DESC", [
902     (D3DFORMAT, "Format"),
903     (D3DRESOURCETYPE, "Type"),
904     (D3DUSAGE, "Usage"),
905     (D3DPOOL, "Pool"),
906     (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
907     (DWORD, "MultiSampleQuality"),
908     (UINT, "Width"),
909     (UINT, "Height"),
910 ])
911
912 D3DVOLUME_DESC = Struct("D3DVOLUME_DESC", [
913     (D3DFORMAT, "Format"),
914     (D3DRESOURCETYPE, "Type"),
915     (D3DUSAGE, "Usage"),
916     (D3DPOOL, "Pool"),
917     (UINT, "Width"),
918     (UINT, "Height"),
919     (UINT, "Depth"),
920 ])
921
922 D3DLOCKED_RECT = Struct("D3DLOCKED_RECT", [
923     (INT, "Pitch"),
924     (LinearPointer(Void, "_MappedSize"), "pBits"),
925 ])
926
927 D3DBOX = Struct("D3DBOX", [
928     (UINT, "Left"),
929     (UINT, "Top"),
930     (UINT, "Right"),
931     (UINT, "Bottom"),
932     (UINT, "Front"),
933     (UINT, "Back"),
934 ])
935
936 D3DLOCKED_BOX = Struct("D3DLOCKED_BOX", [
937     (INT, "RowPitch"),
938     (INT, "SlicePitch"),
939     (LinearPointer(Void, "_MappedSize"), "pBits"),
940 ])
941
942 D3DRANGE = Struct("D3DRANGE", [
943     (UINT, "Offset"),
944     (UINT, "Size"),
945 ])
946
947 D3DRECTPATCH_INFO = Struct("D3DRECTPATCH_INFO", [
948     (UINT, "StartVertexOffsetWidth"),
949     (UINT, "StartVertexOffsetHeight"),
950     (UINT, "Width"),
951     (UINT, "Height"),
952     (UINT, "Stride"),
953     (D3DBASISTYPE, "Basis"),
954     (D3DDEGREETYPE, "Degree"),
955 ])
956
957 D3DTRIPATCH_INFO = Struct("D3DTRIPATCH_INFO", [
958     (UINT, "StartVertexOffset"),
959     (UINT, "NumVertices"),
960     (D3DBASISTYPE, "Basis"),
961     (D3DDEGREETYPE, "Degree"),
962 ])
963
964 D3DADAPTER_IDENTIFIER9 = Struct("D3DADAPTER_IDENTIFIER9", [
965     (CString, "Driver"),
966     (CString, "Description"),
967     (CString, "DeviceName"),
968     (LARGE_INTEGER, "DriverVersion"),
969     (DWORD, "VendorId"),
970     (DWORD, "DeviceId"),
971     (DWORD, "SubSysId"),
972     (DWORD, "Revision"),
973     (GUID, "DeviceIdentifier"),
974     (DWORD, "WHQLLevel"),
975 ])
976
977 D3DRASTER_STATUS = Struct("D3DRASTER_STATUS", [
978     (BOOL, "InVBlank"),
979     (UINT, "ScanLine"),
980 ])
981
982 D3DQUERYTYPE = Enum("D3DQUERYTYPE", [
983     "D3DQUERYTYPE_VCACHE",
984     "D3DQUERYTYPE_RESOURCEMANAGER",
985     "D3DQUERYTYPE_VERTEXSTATS",
986     "D3DQUERYTYPE_EVENT",
987     "D3DQUERYTYPE_OCCLUSION",
988     "D3DQUERYTYPE_TIMESTAMP",
989     "D3DQUERYTYPE_TIMESTAMPDISJOINT",
990     "D3DQUERYTYPE_TIMESTAMPFREQ",
991     "D3DQUERYTYPE_PIPELINETIMINGS",
992     "D3DQUERYTYPE_INTERFACETIMINGS",
993     "D3DQUERYTYPE_VERTEXTIMINGS",
994     "D3DQUERYTYPE_PIXELTIMINGS",
995     "D3DQUERYTYPE_BANDWIDTHTIMINGS",
996     "D3DQUERYTYPE_CACHEUTILIZATION",
997 ])
998
999 D3DISSUE = Flags(DWORD, [
1000     "D3DISSUE_END",
1001     "D3DISSUE_BEGIN",
1002 ])
1003
1004 D3DGETDATA = Flags(DWORD, [
1005     "D3DGETDATA_FLUSH",
1006 ])
1007
1008 D3DRESOURCESTATS = Struct("D3DRESOURCESTATS", [
1009     (BOOL, "bThrashing"),
1010     (DWORD, "ApproxBytesDownloaded"),
1011     (DWORD, "NumEvicts"),
1012     (DWORD, "NumVidCreates"),
1013     (DWORD, "LastPri"),
1014     (DWORD, "NumUsed"),
1015     (DWORD, "NumUsedInVidMem"),
1016     (DWORD, "WorkingSet"),
1017     (DWORD, "WorkingSetBytes"),
1018     (DWORD, "TotalManaged"),
1019     (DWORD, "TotalBytes"),
1020 ])
1021
1022 D3DDEVINFO_RESOURCEMANAGER = Struct("D3DDEVINFO_RESOURCEMANAGER", [
1023     (Array(D3DRESOURCESTATS, "D3DRTYPECOUNT"), "stats"),
1024 ])
1025
1026 D3DDEVINFO_D3DVERTEXSTATS = Struct("D3DDEVINFO_D3DVERTEXSTATS", [
1027     (DWORD, "NumRenderedTriangles"),
1028     (DWORD, "NumExtraClippingTriangles"),
1029 ])
1030
1031 D3DDEVINFO_VCACHE = Struct("D3DDEVINFO_VCACHE", [
1032     (DWORD, "Pattern"),
1033     (DWORD, "OptMethod"),
1034     (DWORD, "CacheSize"),
1035     (DWORD, "MagicNumber"),
1036 ])
1037
1038 D3DDEVINFO_D3D9PIPELINETIMINGS = Struct("D3DDEVINFO_D3D9PIPELINETIMINGS", [
1039     (FLOAT, "VertexProcessingTimePercent"),
1040     (FLOAT, "PixelProcessingTimePercent"),
1041     (FLOAT, "OtherGPUProcessingTimePercent"),
1042     (FLOAT, "GPUIdleTimePercent"),
1043 ])
1044
1045 D3DDEVINFO_D3D9INTERFACETIMINGS = Struct("D3DDEVINFO_D3D9INTERFACETIMINGS", [
1046     (FLOAT, "WaitingForGPUToUseApplicationResourceTimePercent"),
1047     (FLOAT, "WaitingForGPUToAcceptMoreCommandsTimePercent"),
1048     (FLOAT, "WaitingForGPUToStayWithinLatencyTimePercent"),
1049     (FLOAT, "WaitingForGPUExclusiveResourceTimePercent"),
1050     (FLOAT, "WaitingForGPUOtherTimePercent"),
1051 ])
1052
1053 D3DDEVINFO_D3D9STAGETIMINGS = Struct("D3DDEVINFO_D3D9STAGETIMINGS", [
1054     (FLOAT, "MemoryProcessingPercent"),
1055     (FLOAT, "ComputationProcessingPercent"),
1056 ])
1057
1058 D3DDEVINFO_D3D9BANDWIDTHTIMINGS = Struct("D3DDEVINFO_D3D9BANDWIDTHTIMINGS", [
1059     (FLOAT, "MaxBandwidthUtilized"),
1060     (FLOAT, "FrontEndUploadMemoryUtilizedPercent"),
1061     (FLOAT, "VertexRateUtilizedPercent"),
1062     (FLOAT, "TriangleSetupRateUtilizedPercent"),
1063     (FLOAT, "FillRateUtilizedPercent"),
1064 ])
1065
1066 D3DDEVINFO_D3D9CACHEUTILIZATION = Struct("D3DDEVINFO_D3D9CACHEUTILIZATION", [
1067     (FLOAT, "TextureCacheHitRate"),
1068     (FLOAT, "PostTransformVertexCacheHitRate"),
1069 ])
1070
1071 D3DCOMPOSERECTSOP = Enum("D3DCOMPOSERECTSOP", [
1072     "D3DCOMPOSERECTS_COPY",
1073     "D3DCOMPOSERECTS_OR",
1074     "D3DCOMPOSERECTS_AND",
1075     "D3DCOMPOSERECTS_NEG",
1076 ])
1077
1078 D3DCOMPOSERECTDESC = Struct("D3DCOMPOSERECTDESC", [
1079     (USHORT, "X"),
1080     (USHORT, "Y"),
1081     (USHORT, "Width"),
1082     (USHORT, "Height"),
1083 ])
1084
1085 D3DCOMPOSERECTDESTINATION = Struct("D3DCOMPOSERECTDESTINATION", [
1086     (USHORT, "SrcRectIndex"),
1087     (USHORT, "Reserved"),
1088     (Short, "X"),
1089     (Short, "Y"),
1090 ])
1091
1092 D3DPRESENTSTATS = Struct("D3DPRESENTSTATS", [
1093     (UINT, "PresentCount"),
1094     (UINT, "PresentRefreshCount"),
1095     (UINT, "SyncRefreshCount"),
1096     (LARGE_INTEGER, "SyncQPCTime"),
1097     (LARGE_INTEGER, "SyncGPUTime"),
1098 ])
1099
1100 D3DSCANLINEORDERING = Enum("D3DSCANLINEORDERING", [
1101     "D3DSCANLINEORDERING_UNKNOWN",
1102     "D3DSCANLINEORDERING_PROGRESSIVE",
1103     "D3DSCANLINEORDERING_INTERLACED",
1104 ])
1105
1106 D3DDISPLAYMODEEX = Struct("D3DDISPLAYMODEEX", [
1107     (UINT, "Size"),
1108     (UINT, "Width"),
1109     (UINT, "Height"),
1110     (UINT, "RefreshRate"),
1111     (D3DFORMAT, "Format"),
1112     (D3DSCANLINEORDERING, "ScanLineOrdering"),
1113 ])
1114
1115 D3DDISPLAYMODEFILTER = Struct("D3DDISPLAYMODEFILTER", [
1116     (UINT, "Size"),
1117     (D3DFORMAT, "Format"),
1118     (D3DSCANLINEORDERING, "ScanLineOrdering"),
1119 ])
1120
1121 D3DDISPLAYROTATION = Enum("D3DDISPLAYROTATION", [
1122     "D3DDISPLAYROTATION_IDENTITY",
1123     "D3DDISPLAYROTATION_90",
1124     "D3DDISPLAYROTATION_180",
1125     "D3DDISPLAYROTATION_270",
1126 ])
1127
1128 D3D9_RESOURCE_PRIORITY = FakeEnum(DWORD, [
1129     "D3D9_RESOURCE_PRIORITY_MINIMUM",
1130     "D3D9_RESOURCE_PRIORITY_LOW",
1131     "D3D9_RESOURCE_PRIORITY_NORMAL",
1132     "D3D9_RESOURCE_PRIORITY_HIGH",
1133     "D3D9_RESOURCE_PRIORITY_MAXIMUM",
1134 ])
1135