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