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