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