]> git.cworth.org Git - apitrace/blob - specs/d3d8types.py
d3dtrace: Prevent clashes in method signature IDs.
[apitrace] / specs / d3d8types.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 """d3d8types.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 D3DVIEWPORT8 = Struct("D3DVIEWPORT8", [
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 D3DCLIPSTATUS8 = Struct("D3DCLIPSTATUS8", [
91     (DWORD, "ClipUnion"),
92     (DWORD, "ClipIntersection"),
93 ])
94
95 D3DMATERIAL8 = Struct("D3DMATERIAL8", [
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 D3DLIGHT8 = Struct("D3DLIGHT8", [
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 D3DLINEPATTERN = Struct("D3DLINEPATTERN", [
144     (WORD, "wRepeatFactor"),
145     (WORD, "wLinePattern"),
146 ])
147
148 D3DBLEND = Enum("D3DBLEND", [
149     "D3DBLEND_ZERO",
150     "D3DBLEND_ONE",
151     "D3DBLEND_SRCCOLOR",
152     "D3DBLEND_INVSRCCOLOR",
153     "D3DBLEND_SRCALPHA",
154     "D3DBLEND_INVSRCALPHA",
155     "D3DBLEND_DESTALPHA",
156     "D3DBLEND_INVDESTALPHA",
157     "D3DBLEND_DESTCOLOR",
158     "D3DBLEND_INVDESTCOLOR",
159     "D3DBLEND_SRCALPHASAT",
160     "D3DBLEND_BOTHSRCALPHA",
161     "D3DBLEND_BOTHINVSRCALPHA",
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 D3DWRAP = Flags(DWORD, [
257     "D3DWRAP_U",
258     "D3DWRAP_V",
259     "D3DWRAP_W",
260 ])
261
262 D3DWRAPCOORD = Flags(DWORD, [
263     "D3DWRAPCOORD_0",
264     "D3DWRAPCOORD_1",
265     "D3DWRAPCOORD_2",
266     "D3DWRAPCOORD_3",
267 ])
268
269 D3DCOLORWRITEENABLE = Flags(DWORD, [
270     "D3DCOLORWRITEENABLE_RED",
271     "D3DCOLORWRITEENABLE_GREEN",
272     "D3DCOLORWRITEENABLE_BLUE",
273     "D3DCOLORWRITEENABLE_ALPHA",
274 ])
275
276 D3DORDERTYPE = Enum("D3DORDERTYPE", [
277     "D3DORDER_LINEAR",
278     "D3DORDER_QUADRATIC",
279     "D3DORDER_CUBIC",
280     "D3DORDER_QUINTIC",
281 ])
282
283 D3DPATCHEDGESTYLE = Enum("D3DPATCHEDGESTYLE", [
284     "D3DPATCHEDGE_DISCRETE",
285     "D3DPATCHEDGE_CONTINUOUS",
286 ])
287
288 D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
289     "D3DVBF_DISABLE",
290     "D3DVBF_1WEIGHTS",
291     "D3DVBF_2WEIGHTS",
292     "D3DVBF_3WEIGHTS",
293     "D3DVBF_TWEENING",
294     "D3DVBF_0WEIGHTS",
295 ])
296
297 D3DDEBUGMONITORTOKENS = Enum("D3DDEBUGMONITORTOKENS", [
298     "D3DDMT_ENABLE",
299     "D3DDMT_DISABLE",
300 ])
301
302 # TODO: Convert these to/from actual floats
303 FLOAT_AS_DWORD = DWORD
304
305 D3DRENDERSTATETYPE, D3DRENDERSTATEVALUE = EnumPolymorphic("D3DRENDERSTATETYPE", "State", [
306     ("D3DRS_ZENABLE", D3DZBUFFERTYPE),
307     ("D3DRS_FILLMODE", D3DFILLMODE),
308     ("D3DRS_SHADEMODE", D3DSHADEMODE),
309     ("D3DRS_LINEPATTERN", DWORD), # D3DLINEPATTERN
310     ("D3DRS_ZWRITEENABLE", BOOL),
311     ("D3DRS_ALPHATESTENABLE", BOOL),
312     ("D3DRS_LASTPIXEL", BOOL),
313     ("D3DRS_SRCBLEND", D3DBLEND),
314     ("D3DRS_DESTBLEND", D3DBLEND),
315     ("D3DRS_CULLMODE", D3DCULL),
316     ("D3DRS_ZFUNC", D3DCMPFUNC),
317     ("D3DRS_ALPHAREF", DWORD),
318     ("D3DRS_ALPHAFUNC", D3DCMPFUNC),
319     ("D3DRS_DITHERENABLE", BOOL),
320     ("D3DRS_ALPHABLENDENABLE", BOOL),
321     ("D3DRS_FOGENABLE", BOOL),
322     ("D3DRS_SPECULARENABLE", BOOL),
323     ("D3DRS_ZVISIBLE", BOOL),
324     ("D3DRS_FOGCOLOR", D3DCOLOR),
325     ("D3DRS_FOGTABLEMODE", D3DFOGMODE),
326     ("D3DRS_FOGSTART", FLOAT_AS_DWORD),
327     ("D3DRS_FOGEND", FLOAT_AS_DWORD),
328     ("D3DRS_FOGDENSITY", FLOAT_AS_DWORD),
329     ("D3DRS_EDGEANTIALIAS", BOOL),
330     ("D3DRS_ZBIAS", LONG),
331     ("D3DRS_RANGEFOGENABLE", BOOL),
332     ("D3DRS_STENCILENABLE", BOOL),
333     ("D3DRS_STENCILFAIL", D3DSTENCILOP),
334     ("D3DRS_STENCILZFAIL", D3DSTENCILOP),
335     ("D3DRS_STENCILPASS", D3DSTENCILOP),
336     ("D3DRS_STENCILFUNC", D3DCMPFUNC),
337     ("D3DRS_STENCILREF", DWORD),
338     ("D3DRS_STENCILMASK", DWORD),
339     ("D3DRS_STENCILWRITEMASK", DWORD),
340     ("D3DRS_TEXTUREFACTOR", D3DCOLOR),
341     ("D3DRS_WRAP0", D3DWRAPCOORD),
342     ("D3DRS_WRAP1", D3DWRAPCOORD),
343     ("D3DRS_WRAP2", D3DWRAPCOORD),
344     ("D3DRS_WRAP3", D3DWRAPCOORD),
345     ("D3DRS_WRAP4", D3DWRAPCOORD),
346     ("D3DRS_WRAP5", D3DWRAPCOORD),
347     ("D3DRS_WRAP6", D3DWRAPCOORD),
348     ("D3DRS_WRAP7", D3DWRAPCOORD),
349     ("D3DRS_CLIPPING", BOOL),
350     ("D3DRS_LIGHTING", BOOL),
351     ("D3DRS_AMBIENT", D3DCOLOR),
352     ("D3DRS_FOGVERTEXMODE", D3DFOGMODE),
353     ("D3DRS_COLORVERTEX", BOOL),
354     ("D3DRS_LOCALVIEWER", BOOL),
355     ("D3DRS_NORMALIZENORMALS", BOOL),
356     ("D3DRS_DIFFUSEMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
357     ("D3DRS_SPECULARMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
358     ("D3DRS_AMBIENTMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
359     ("D3DRS_EMISSIVEMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
360     ("D3DRS_VERTEXBLEND", D3DVERTEXBLENDFLAGS),
361     ("D3DRS_CLIPPLANEENABLE", D3DCLIPPLANE),
362     ("D3DRS_SOFTWAREVERTEXPROCESSING", BOOL),
363     ("D3DRS_POINTSIZE", FLOAT_AS_DWORD),
364     ("D3DRS_POINTSIZE_MIN", FLOAT_AS_DWORD),
365     ("D3DRS_POINTSPRITEENABLE", BOOL),
366     ("D3DRS_POINTSCALEENABLE", BOOL),
367     ("D3DRS_POINTSCALE_A", FLOAT_AS_DWORD),
368     ("D3DRS_POINTSCALE_B", FLOAT_AS_DWORD),
369     ("D3DRS_POINTSCALE_C", FLOAT_AS_DWORD),
370     ("D3DRS_MULTISAMPLEANTIALIAS", BOOL),
371     ("D3DRS_MULTISAMPLEMASK", DWORD),
372     ("D3DRS_PATCHEDGESTYLE", D3DPATCHEDGESTYLE),
373     ("D3DRS_PATCHSEGMENTS", DWORD),
374     ("D3DRS_DEBUGMONITORTOKEN", D3DDEBUGMONITORTOKENS),
375     ("D3DRS_POINTSIZE_MAX", FLOAT_AS_DWORD),
376     ("D3DRS_INDEXEDVERTEXBLENDENABLE", BOOL),
377     ("D3DRS_COLORWRITEENABLE", DWORD),
378     ("D3DRS_TWEENFACTOR", FLOAT_AS_DWORD),
379     ("D3DRS_BLENDOP", D3DBLENDOP),
380     ("D3DRS_POSITIONORDER", D3DORDERTYPE),
381     ("D3DRS_NORMALORDER", D3DORDERTYPE),
382
383     # XXX: D3DRENDERSTATE_WRAPBIAS + n
384 ], DWORD)
385
386 D3DTSS_TCI = Flags(DWORD, [
387     #"D3DTSS_TCI_PASSTHRU", # 0
388     "D3DTSS_TCI_CAMERASPACENORMAL",
389     "D3DTSS_TCI_CAMERASPACEPOSITION",
390     "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
391 ])
392
393 D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
394     "D3DTOP_DISABLE",
395     "D3DTOP_SELECTARG1",
396     "D3DTOP_SELECTARG2",
397     "D3DTOP_MODULATE",
398     "D3DTOP_MODULATE2X",
399     "D3DTOP_MODULATE4X",
400     "D3DTOP_ADD",
401     "D3DTOP_ADDSIGNED",
402     "D3DTOP_ADDSIGNED2X",
403     "D3DTOP_SUBTRACT",
404     "D3DTOP_ADDSMOOTH",
405     "D3DTOP_BLENDDIFFUSEALPHA",
406     "D3DTOP_BLENDTEXTUREALPHA",
407     "D3DTOP_BLENDFACTORALPHA",
408     "D3DTOP_BLENDTEXTUREALPHAPM",
409     "D3DTOP_BLENDCURRENTALPHA",
410     "D3DTOP_PREMODULATE",
411     "D3DTOP_MODULATEALPHA_ADDCOLOR",
412     "D3DTOP_MODULATECOLOR_ADDALPHA",
413     "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
414     "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
415     "D3DTOP_BUMPENVMAP",
416     "D3DTOP_BUMPENVMAPLUMINANCE",
417     "D3DTOP_DOTPRODUCT3",
418     "D3DTOP_MULTIPLYADD",
419     "D3DTOP_LERP",
420 ])
421
422 # XXX: Actually a mixture of enums and flags
423 D3DTA = FakeEnum(DWORD, [
424     "D3DTA_DIFFUSE",
425     "D3DTA_CURRENT",
426     "D3DTA_TEXTURE",
427     "D3DTA_TFACTOR",
428     "D3DTA_SPECULAR",
429     "D3DTA_TEMP",
430     #"D3DTA_COMPLEMENT",
431     #"D3DTA_ALPHAREPLICATE",
432 ])
433
434 D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
435     "D3DTTFF_DISABLE",
436     "D3DTTFF_COUNT1",
437     "D3DTTFF_COUNT2",
438     "D3DTTFF_COUNT3",
439     "D3DTTFF_COUNT4",
440     "D3DTTFF_PROJECTED",
441 ])
442
443 D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [
444     "D3DTEXF_NONE",
445     "D3DTEXF_POINT",
446     "D3DTEXF_LINEAR",
447     "D3DTEXF_ANISOTROPIC",
448     "D3DTEXF_FLATCUBIC",
449     "D3DTEXF_GAUSSIANCUBIC",
450 ])
451
452 D3DTEXTURESTAGESTATETYPE, D3DTEXTURESTAGESTATEVALUE = EnumPolymorphic("D3DTEXTURESTAGESTATETYPE", "Type", [
453     ("D3DTSS_COLOROP", D3DTEXTUREOP),
454     ("D3DTSS_COLORARG1", D3DTA),
455     ("D3DTSS_COLORARG2", D3DTA),
456     ("D3DTSS_ALPHAOP", D3DTEXTUREOP),
457     ("D3DTSS_ALPHAARG1", D3DTA),
458     ("D3DTSS_ALPHAARG2", D3DTA),
459     ("D3DTSS_BUMPENVMAT00", FLOAT_AS_DWORD),
460     ("D3DTSS_BUMPENVMAT01", FLOAT_AS_DWORD),
461     ("D3DTSS_BUMPENVMAT10", FLOAT_AS_DWORD),
462     ("D3DTSS_BUMPENVMAT11", FLOAT_AS_DWORD),
463     ("D3DTSS_TEXCOORDINDEX", D3DTSS_TCI),
464     ("D3DTSS_ADDRESSU", D3DTEXTUREADDRESS),
465     ("D3DTSS_ADDRESSV", D3DTEXTUREADDRESS),
466     ("D3DTSS_BORDERCOLOR", D3DCOLOR),
467     ("D3DTSS_MAGFILTER", D3DTEXTUREFILTERTYPE),
468     ("D3DTSS_MINFILTER", D3DTEXTUREFILTERTYPE),
469     ("D3DTSS_MIPFILTER", D3DTEXTUREFILTERTYPE),
470     ("D3DTSS_MIPMAPLODBIAS", FLOAT_AS_DWORD),
471     ("D3DTSS_MAXMIPLEVEL", DWORD),
472     ("D3DTSS_MAXANISOTROPY", DWORD),
473     ("D3DTSS_BUMPENVLSCALE", FLOAT_AS_DWORD),
474     ("D3DTSS_BUMPENVLOFFSET", FLOAT_AS_DWORD),
475     ("D3DTSS_TEXTURETRANSFORMFLAGS", D3DTEXTURETRANSFORMFLAGS),
476     ("D3DTSS_ADDRESSW", D3DTEXTUREADDRESS),
477     ("D3DTSS_COLORARG0", D3DTA),
478     ("D3DTSS_ALPHAARG0", D3DTA),
479     ("D3DTSS_RESULTARG", D3DTA),
480 ], DWORD)
481
482 D3DPV = Flags(DWORD, [
483     "D3DPV_DONOTCOPYDATA",
484 ])
485
486 # XXX: Actually a mixture of enums and flags
487 D3DFVF = Flags(DWORD, [
488     "D3DFVF_RESERVED0",
489     "D3DFVF_XYZ",
490     "D3DFVF_XYZRHW",
491     "D3DFVF_XYZB1",
492     "D3DFVF_XYZB2",
493     "D3DFVF_XYZB3",
494     "D3DFVF_XYZB4",
495     "D3DFVF_XYZB5",
496     "D3DFVF_NORMAL",
497     "D3DFVF_PSIZE",
498     "D3DFVF_DIFFUSE",
499     "D3DFVF_SPECULAR",
500     #"D3DFVF_TEX0",
501     #"D3DFVF_TEX1",
502     #"D3DFVF_TEX2",
503     #"D3DFVF_TEX3",
504     #"D3DFVF_TEX4",
505     #"D3DFVF_TEX5",
506     #"D3DFVF_TEX6",
507     #"D3DFVF_TEX7",
508     #"D3DFVF_TEX8",
509     "D3DFVF_LASTBETA_UBYTE4",
510     "D3DFVF_RESERVED2",
511     #"D3DFVF_TEXCOORDSIZE1(0)",
512     #"D3DFVF_TEXCOORDSIZE2(0)",
513     #"D3DFVF_TEXCOORDSIZE3(0)",
514     #"D3DFVF_TEXCOORDSIZE4(0)",
515     #"D3DFVF_TEXCOORDSIZE1(1)",
516     #"D3DFVF_TEXCOORDSIZE2(1)",
517     #"D3DFVF_TEXCOORDSIZE3(1)",
518     #"D3DFVF_TEXCOORDSIZE4(1)",
519     #"D3DFVF_TEXCOORDSIZE1(2)",
520     #"D3DFVF_TEXCOORDSIZE2(2)",
521     #"D3DFVF_TEXCOORDSIZE3(2)",
522     #"D3DFVF_TEXCOORDSIZE4(2)",
523     #"D3DFVF_TEXCOORDSIZE1(3)",
524     #"D3DFVF_TEXCOORDSIZE2(3)",
525     #"D3DFVF_TEXCOORDSIZE3(3)",
526     #"D3DFVF_TEXCOORDSIZE4(3)",
527 ])
528
529 # XXX
530 D3DVSD_TOKENTYPE = Enum("D3DVSD_TOKENTYPE", [
531     "D3DVSD_TOKEN_NOP",
532     "D3DVSD_TOKEN_STREAM",
533     "D3DVSD_TOKEN_STREAMDATA",
534     "D3DVSD_TOKEN_TESSELLATOR",
535     "D3DVSD_TOKEN_CONSTMEM",
536     "D3DVSD_TOKEN_EXT",
537     "D3DVSD_TOKEN_END",
538 ])
539
540 # XXX
541 D3DVSDT = FakeEnum(DWORD, [
542     "D3DVSDT_FLOAT1",
543     "D3DVSDT_FLOAT2",
544     "D3DVSDT_FLOAT3",
545     "D3DVSDT_FLOAT4",
546     "D3DVSDT_D3DCOLOR",
547     "D3DVSDT_UBYTE4",
548     "D3DVSDT_SHORT2",
549     "D3DVSDT_SHORT4",
550     "D3DVSDE_POSITION",
551     "D3DVSDE_BLENDWEIGHT",
552     "D3DVSDE_BLENDINDICES",
553     "D3DVSDE_NORMAL",
554     "D3DVSDE_PSIZE",
555     "D3DVSDE_DIFFUSE",
556     "D3DVSDE_SPECULAR",
557     "D3DVSDE_TEXCOORD0",
558     "D3DVSDE_TEXCOORD1",
559     "D3DVSDE_TEXCOORD2",
560     "D3DVSDE_TEXCOORD3",
561     "D3DVSDE_TEXCOORD4",
562     "D3DVSDE_TEXCOORD5",
563     "D3DVSDE_TEXCOORD6",
564     "D3DVSDE_TEXCOORD7",
565     "D3DVSDE_POSITION2",
566     "D3DVSDE_NORMAL2",
567     "D3DDP_MAXTEXCOORD",
568     "D3DSI_OPCODE_MASK",
569 ])
570
571 D3DBASISTYPE = Enum("D3DBASISTYPE", [
572     "D3DBASIS_BEZIER",
573     "D3DBASIS_BSPLINE",
574     "D3DBASIS_INTERPOLATE",
575 ])
576
577 D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
578     "D3DSBT_ALL",
579     "D3DSBT_PIXELSTATE",
580     "D3DSBT_VERTEXSTATE",
581 ])
582
583 D3DDEVTYPE = Enum("D3DDEVTYPE", [
584     "D3DDEVTYPE_HAL",
585     "D3DDEVTYPE_REF",
586     "D3DDEVTYPE_SW",
587 ])
588
589 D3DMULTISAMPLE_TYPE = Enum("D3DMULTISAMPLE_TYPE", [
590     "D3DMULTISAMPLE_NONE",
591     "D3DMULTISAMPLE_2_SAMPLES",
592     "D3DMULTISAMPLE_3_SAMPLES",
593     "D3DMULTISAMPLE_4_SAMPLES",
594     "D3DMULTISAMPLE_5_SAMPLES",
595     "D3DMULTISAMPLE_6_SAMPLES",
596     "D3DMULTISAMPLE_7_SAMPLES",
597     "D3DMULTISAMPLE_8_SAMPLES",
598     "D3DMULTISAMPLE_9_SAMPLES",
599     "D3DMULTISAMPLE_10_SAMPLES",
600     "D3DMULTISAMPLE_11_SAMPLES",
601     "D3DMULTISAMPLE_12_SAMPLES",
602     "D3DMULTISAMPLE_13_SAMPLES",
603     "D3DMULTISAMPLE_14_SAMPLES",
604     "D3DMULTISAMPLE_15_SAMPLES",
605     "D3DMULTISAMPLE_16_SAMPLES",
606 ])
607
608 D3DFORMAT = Enum("D3DFORMAT", [
609     "D3DFMT_UNKNOWN",
610     "D3DFMT_R8G8B8",
611     "D3DFMT_A8R8G8B8",
612     "D3DFMT_X8R8G8B8",
613     "D3DFMT_R5G6B5",
614     "D3DFMT_X1R5G5B5",
615     "D3DFMT_A1R5G5B5",
616     "D3DFMT_A4R4G4B4",
617     "D3DFMT_R3G3B2",
618     "D3DFMT_A8",
619     "D3DFMT_A8R3G3B2",
620     "D3DFMT_X4R4G4B4",
621     "D3DFMT_A2B10G10R10",
622     "D3DFMT_G16R16",
623     "D3DFMT_A8P8",
624     "D3DFMT_P8",
625     "D3DFMT_L8",
626     "D3DFMT_A8L8",
627     "D3DFMT_A4L4",
628     "D3DFMT_V8U8",
629     "D3DFMT_L6V5U5",
630     "D3DFMT_X8L8V8U8",
631     "D3DFMT_Q8W8V8U8",
632     "D3DFMT_V16U16",
633     "D3DFMT_W11V11U10",
634     "D3DFMT_A2W10V10U10",
635     "D3DFMT_UYVY",
636     "D3DFMT_YUY2",
637     "D3DFMT_DXT1",
638     "D3DFMT_DXT2",
639     "D3DFMT_DXT3",
640     "D3DFMT_DXT4",
641     "D3DFMT_DXT5",
642     "D3DFMT_D16_LOCKABLE",
643     "D3DFMT_D32",
644     "D3DFMT_D15S1",
645     "D3DFMT_D24S8",
646     "D3DFMT_D16",
647     "D3DFMT_D24X8",
648     "D3DFMT_D24X4S4",
649     "D3DFMT_VERTEXDATA",
650     "D3DFMT_INDEX16",
651     "D3DFMT_INDEX32",
652 ])
653
654 D3DDISPLAYMODE = Struct("D3DDISPLAYMODE", [
655     (UINT, "Width"),
656     (UINT, "Height"),
657     (UINT, "RefreshRate"),
658     (D3DFORMAT, "Format"),
659 ])
660
661 D3DCREATE = Flags(DWORD, [
662     "D3DCREATE_FPU_PRESERVE",
663     "D3DCREATE_MULTITHREADED",
664     "D3DCREATE_PUREDEVICE",
665     "D3DCREATE_SOFTWARE_VERTEXPROCESSING",
666     "D3DCREATE_HARDWARE_VERTEXPROCESSING",
667     "D3DCREATE_MIXED_VERTEXPROCESSING",
668     "D3DCREATE_DISABLE_DRIVER_MANAGEMENT",
669 ])
670
671 D3DDEVICE_CREATION_PARAMETERS = Struct("D3DDEVICE_CREATION_PARAMETERS", [
672     (UINT, "AdapterOrdinal"),
673     (D3DDEVTYPE, "DeviceType"),
674     (HWND, "hFocusWindow"),
675     (D3DCREATE, "BehaviorFlags"),
676 ])
677
678 D3DSWAPEFFECT = Enum("D3DSWAPEFFECT", [
679     "D3DSWAPEFFECT_DISCARD",
680     "D3DSWAPEFFECT_FLIP",
681     "D3DSWAPEFFECT_COPY",
682     "D3DSWAPEFFECT_COPY_VSYNC",
683 ])
684
685 D3DPOOL = Enum("D3DPOOL", [
686     "D3DPOOL_DEFAULT",
687     "D3DPOOL_MANAGED",
688     "D3DPOOL_SYSTEMMEM",
689     "D3DPOOL_SCRATCH",
690 ])
691
692 D3DPRESENT = FakeEnum(DWORD, [
693     "D3DPRESENT_RATE_DEFAULT",
694     "D3DPRESENT_RATE_UNLIMITED",
695 ])
696
697 D3DPRESENTFLAG = Flags(DWORD, [
698     "D3DPRESENTFLAG_LOCKABLE_BACKBUFFER",
699 ])
700
701 D3DPRESENT_INTERVAL = Flags(DWORD, [
702     "D3DPRESENT_INTERVAL_DEFAULT", # 0
703     "D3DPRESENT_INTERVAL_ONE",
704     "D3DPRESENT_INTERVAL_TWO",
705     "D3DPRESENT_INTERVAL_THREE",
706     "D3DPRESENT_INTERVAL_FOUR",
707     "D3DPRESENT_INTERVAL_IMMEDIATE",
708 ])
709
710 D3DPRESENT_PARAMETERS = Struct("D3DPRESENT_PARAMETERS", [
711     (UINT, "BackBufferWidth"),
712     (UINT, "BackBufferHeight"),
713     (D3DFORMAT, "BackBufferFormat"),
714     (UINT, "BackBufferCount"),
715     (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
716     (D3DSWAPEFFECT, "SwapEffect"),
717     (HWND, "hDeviceWindow"),
718     (BOOL, "Windowed"),
719     (BOOL, "EnableAutoDepthStencil"),
720     (D3DFORMAT, "AutoDepthStencilFormat"),
721     (D3DPRESENTFLAG, "Flags"),
722     (UINT, "FullScreen_RefreshRateInHz"),
723     (D3DPRESENT_INTERVAL, "FullScreen_PresentationInterval"),
724 ])
725
726 D3DGAMMARAMP = Struct("D3DGAMMARAMP", [
727     (Array(WORD, 256), "red"),
728     (Array(WORD, 256), "green"),
729     (Array(WORD, 256), "blue"),
730 ])
731
732 D3DBACKBUFFER_TYPE = Enum("D3DBACKBUFFER_TYPE", [
733     "D3DBACKBUFFER_TYPE_MONO",
734     "D3DBACKBUFFER_TYPE_LEFT",
735     "D3DBACKBUFFER_TYPE_RIGHT",
736 ])
737
738 D3DRESOURCETYPE = Enum("D3DRESOURCETYPE", [
739     "D3DRTYPE_SURFACE",
740     "D3DRTYPE_VOLUME",
741     "D3DRTYPE_TEXTURE",
742     "D3DRTYPE_VOLUMETEXTURE",
743     "D3DRTYPE_CUBETEXTURE",
744     "D3DRTYPE_VERTEXBUFFER",
745     "D3DRTYPE_INDEXBUFFER",
746 ])
747
748 D3DUSAGE = Flags(DWORD, [
749     "D3DUSAGE_RENDERTARGET",
750     "D3DUSAGE_DEPTHSTENCIL",
751     "D3DUSAGE_WRITEONLY",
752     "D3DUSAGE_SOFTWAREPROCESSING",
753     "D3DUSAGE_DONOTCLIP",
754     "D3DUSAGE_POINTS",
755     "D3DUSAGE_RTPATCHES",
756     "D3DUSAGE_NPATCHES",
757     "D3DUSAGE_DYNAMIC",
758 ])
759
760 D3DCUBEMAP_FACES = Enum("D3DCUBEMAP_FACES", [
761     "D3DCUBEMAP_FACE_POSITIVE_X",
762     "D3DCUBEMAP_FACE_NEGATIVE_X",
763     "D3DCUBEMAP_FACE_POSITIVE_Y",
764     "D3DCUBEMAP_FACE_NEGATIVE_Y",
765     "D3DCUBEMAP_FACE_POSITIVE_Z",
766     "D3DCUBEMAP_FACE_NEGATIVE_Z",
767 ])
768
769 D3DLOCK = Flags(DWORD, [
770     "D3DLOCK_READONLY",
771     "D3DLOCK_DISCARD",
772     "D3DLOCK_NOOVERWRITE",
773     "D3DLOCK_NOSYSLOCK",
774     "D3DLOCK_NO_DIRTY_UPDATE",
775 ])
776
777 D3DVERTEXBUFFER_DESC = Struct("D3DVERTEXBUFFER_DESC", [
778     (D3DFORMAT, "Format"),
779     (D3DRESOURCETYPE, "Type"),
780     (D3DUSAGE, "Usage"),
781     (D3DPOOL, "Pool"),
782     (UINT, "Size"),
783     (DWORD, "FVF"),
784 ])
785
786 D3DINDEXBUFFER_DESC = Struct("D3DINDEXBUFFER_DESC", [
787     (D3DFORMAT, "Format"),
788     (D3DRESOURCETYPE, "Type"),
789     (D3DUSAGE, "Usage"),
790     (D3DPOOL, "Pool"),
791     (UINT, "Size"),
792 ])
793
794 D3DSURFACE_DESC = Struct("D3DSURFACE_DESC", [
795     (D3DFORMAT, "Format"),
796     (D3DRESOURCETYPE, "Type"),
797     (D3DUSAGE, "Usage"),
798     (D3DPOOL, "Pool"),
799     (UINT, "Size"),
800     (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
801     (UINT, "Width"),
802     (UINT, "Height"),
803 ])
804
805 D3DVOLUME_DESC = Struct("D3DVOLUME_DESC", [
806     (D3DFORMAT, "Format"),
807     (D3DRESOURCETYPE, "Type"),
808     (D3DUSAGE, "Usage"),
809     (D3DPOOL, "Pool"),
810     (UINT, "Size"),
811     (UINT, "Width"),
812     (UINT, "Height"),
813     (UINT, "Depth"),
814 ])
815
816 D3DLOCKED_RECT = Struct("D3DLOCKED_RECT", [
817     (INT, "Pitch"),
818     (LinearPointer(Void, "_MappedSize"), "pBits"),
819 ])
820
821 D3DBOX = Struct("D3DBOX", [
822     (UINT, "Left"),
823     (UINT, "Top"),
824     (UINT, "Right"),
825     (UINT, "Bottom"),
826     (UINT, "Front"),
827     (UINT, "Back"),
828 ])
829
830 D3DLOCKED_BOX = Struct("D3DLOCKED_BOX", [
831     (INT, "RowPitch"),
832     (INT, "SlicePitch"),
833     (LinearPointer(Void, "_MappedSize"), "pBits"),
834 ])
835
836 D3DRANGE = Struct("D3DRANGE", [
837     (UINT, "Offset"),
838     (UINT, "Size"),
839 ])
840
841 D3DRECTPATCH_INFO = Struct("D3DRECTPATCH_INFO", [
842     (UINT, "StartVertexOffsetWidth"),
843     (UINT, "StartVertexOffsetHeight"),
844     (UINT, "Width"),
845     (UINT, "Height"),
846     (UINT, "Stride"),
847     (D3DBASISTYPE, "Basis"),
848     (D3DORDERTYPE, "Order"),
849 ])
850
851 D3DTRIPATCH_INFO = Struct("D3DTRIPATCH_INFO", [
852     (UINT, "StartVertexOffset"),
853     (UINT, "NumVertices"),
854     (D3DBASISTYPE, "Basis"),
855     (D3DORDERTYPE, "Order"),
856 ])
857
858 D3DADAPTER_IDENTIFIER8 = Struct("D3DADAPTER_IDENTIFIER8", [
859     (CString, "Driver"),
860     (CString, "Description"),
861     (LARGE_INTEGER, "DriverVersion"),
862     (DWORD, "VendorId"),
863     (DWORD, "DeviceId"),
864     (DWORD, "SubSysId"),
865     (DWORD, "Revision"),
866     (GUID, "DeviceIdentifier"),
867     (DWORD, "WHQLLevel"),
868 ])
869
870 D3DRASTER_STATUS = Struct("D3DRASTER_STATUS", [
871     (BOOL, "InVBlank"),
872     (UINT, "ScanLine"),
873 ])
874
875 D3DDEVINFOID = FakeEnum(DWORD, [
876     "D3DDEVINFOID_RESOURCEMANAGER",
877     "D3DDEVINFOID_VERTEXSTATS",
878 ])
879
880 D3DRESOURCESTATS = Struct("D3DRESOURCESTATS", [
881     (BOOL, "bThrashing"),
882     (DWORD, "ApproxBytesDownloaded"),
883     (DWORD, "NumEvicts"),
884     (DWORD, "NumVidCreates"),
885     (DWORD, "LastPri"),
886     (DWORD, "NumUsed"),
887     (DWORD, "NumUsedInVidMem"),
888     (DWORD, "WorkingSet"),
889     (DWORD, "WorkingSetBytes"),
890     (DWORD, "TotalManaged"),
891     (DWORD, "TotalBytes"),
892 ])
893
894 D3DDEVINFO_RESOURCEMANAGER = Struct("D3DDEVINFO_RESOURCEMANAGER", [
895     (Array(D3DRESOURCESTATS, "D3DRTYPECOUNT"), "stats"),
896 ])
897
898 D3DDEVINFO_D3DVERTEXSTATS = Struct("D3DDEVINFO_D3DVERTEXSTATS", [
899     (DWORD, "NumRenderedTriangles"),
900     (DWORD, "NumExtraClippingTriangles"),
901 ])
902