]> git.cworth.org Git - apitrace/blob - specs/d3dtypes.py
Use skiplist-based FastCallSet within trace::CallSet
[apitrace] / specs / d3dtypes.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 """d3dtypes.h"""
27
28 from winapi import *
29
30 D3DVALUE = Float
31 LPD3DVALUE = Pointer(D3DVALUE)
32
33 D3DFIXED = LONG
34
35 LPD3DVALIDATECALLBACK = Opaque("LPD3DVALIDATECALLBACK")
36 LPD3DENUMTEXTUREFORMATSCALLBACK = Opaque("LPD3DENUMTEXTUREFORMATSCALLBACK")
37 LPD3DENUMPIXELFORMATSCALLBACK = Opaque("LPD3DENUMPIXELFORMATSCALLBACK")
38
39 D3DCOLOR = Alias("D3DCOLOR", DWORD)
40
41 D3DVECTOR = Struct("D3DVECTOR", [
42     (D3DVALUE, "x"),
43     (D3DVALUE, "y"),
44     (D3DVALUE, "z"),
45 ])
46 LPD3DVECTOR = Pointer(D3DVECTOR)
47
48 D3DCOLORVALUE = Struct("D3DCOLORVALUE", [
49     (D3DVALUE, "r"),
50     (D3DVALUE, "g"),
51     (D3DVALUE, "b"),
52     (D3DVALUE, "a"),
53 ])
54 LPD3DCOLORVALUE = Pointer(D3DCOLORVALUE)
55
56 D3DRECT = Struct("D3DRECT", [
57     (LONG, "x1"),
58     (LONG, "y1"),
59     (LONG, "x2"),
60     (LONG, "y2"),
61 ])
62 LPD3DRECT = Pointer(D3DRECT)
63
64 D3DMATERIALHANDLE = DWORD
65 LPD3DMATERIALHANDLE = Pointer(D3DMATERIALHANDLE)
66
67 D3DTEXTUREHANDLE = DWORD
68 LPD3DTEXTUREHANDLE = Pointer(D3DTEXTUREHANDLE)
69
70 D3DMATRIXHANDLE = DWORD
71 LPD3DMATRIXHANDLE = Pointer(D3DMATRIXHANDLE)
72
73 D3DHVERTEX = Struct("D3DHVERTEX", [
74     (DWORD, "dwFlags"),
75     (D3DVALUE, "hx"),
76     (D3DVALUE, "hy"),
77     (D3DVALUE, "hz"),
78 ])
79 LPD3DHVERTEX = Pointer(D3DHVERTEX)
80
81 D3DTLVERTEX = Struct("D3DTLVERTEX", [
82     (D3DVALUE, "sx"),
83     (D3DVALUE, "sy"),
84     (D3DVALUE, "sz"),
85     (D3DVALUE, "rhw"),
86     (D3DCOLOR, "color"),
87     (D3DCOLOR, "specular"),
88     (D3DVALUE, "tu"),
89     (D3DVALUE, "tv"),
90 ])
91 LPD3DTLVERTEX = Pointer(D3DTLVERTEX)
92
93 D3DLVERTEX = Struct("D3DLVERTEX", [
94     (D3DVALUE, "x"),
95     (D3DVALUE, "y"),
96     (D3DVALUE, "z"),
97     (DWORD, "dwReserved"),
98     (D3DCOLOR, "color"),
99     (D3DCOLOR, "specular"),
100     (D3DVALUE, "tu"),
101     (D3DVALUE, "tv"),
102 ])
103 LPD3DLVERTEX = Pointer(D3DLVERTEX)
104
105 D3DVERTEX = Struct("D3DVERTEX", [
106     (D3DVALUE, "x"),
107     (D3DVALUE, "y"),
108     (D3DVALUE, "z"),
109     (D3DVALUE, "nx"),
110     (D3DVALUE, "ny"),
111     (D3DVALUE, "nz"),
112     (D3DVALUE, "tu"),
113     (D3DVALUE, "tv"),
114 ])
115 LPD3DVERTEX = Pointer(D3DVERTEX)
116
117 D3DMATRIX = Struct("D3DMATRIX", [
118     (D3DVALUE, "_%u" % index) for index in [
119          11, 12, 13, 14,
120          21, 22, 23, 24,
121          31, 32, 33, 34,
122          41, 42, 43, 44
123     ]
124 ])
125 LPD3DMATRIX = Alias("LPD3DMATRIX", Pointer(D3DMATRIX))
126
127 D3DVIEWPORT = Struct("D3DVIEWPORT", [
128     (DWORD, "dwSize"),
129     (DWORD, "dwX"),
130     (DWORD, "dwY"),
131     (DWORD, "dwWidth"),
132     (DWORD, "dwHeight"),
133     (D3DVALUE, "dvScaleX"),
134     (D3DVALUE, "dvScaleY"),
135     (D3DVALUE, "dvMaxX"),
136     (D3DVALUE, "dvMaxY"),
137     (D3DVALUE, "dvMinZ"),
138     (D3DVALUE, "dvMaxZ"),
139 ])
140 LPD3DVIEWPORT = Pointer(D3DVIEWPORT)
141
142 D3DVIEWPORT2 = Struct("D3DVIEWPORT2", [
143     (DWORD, "dwSize"),
144     (DWORD, "dwX"),
145     (DWORD, "dwY"),
146     (DWORD, "dwWidth"),
147     (DWORD, "dwHeight"),
148     (D3DVALUE, "dvClipX"),
149     (D3DVALUE, "dvClipY"),
150     (D3DVALUE, "dvClipWidth"),
151     (D3DVALUE, "dvClipHeight"),
152     (D3DVALUE, "dvMinZ"),
153     (D3DVALUE, "dvMaxZ"),
154 ])
155 LPD3DVIEWPORT2 = Pointer(D3DVIEWPORT2)
156
157 D3DVIEWPORT7 = Struct("D3DVIEWPORT7", [
158     (DWORD, "dwX"),
159     (DWORD, "dwY"),
160     (DWORD, "dwWidth"),
161     (DWORD, "dwHeight"),
162     (D3DVALUE, "dvMinZ"),
163     (D3DVALUE, "dvMaxZ"),
164 ])
165 LPD3DVIEWPORT7 = Pointer(D3DVIEWPORT7)
166
167 D3DCLIP = Flags(DWORD, [
168     "D3DCLIP_LEFT",
169     "D3DCLIP_RIGHT",
170     "D3DCLIP_TOP",
171     "D3DCLIP_BOTTOM",
172     "D3DCLIP_FRONT",
173     "D3DCLIP_BACK",
174     "D3DCLIP_GEN0",
175     "D3DCLIP_GEN1",
176     "D3DCLIP_GEN2",
177     "D3DCLIP_GEN3",
178     "D3DCLIP_GEN4",
179     "D3DCLIP_GEN5",
180 ])
181
182 D3DSTATUS = Flags(DWORD, [
183     "D3DSTATUS_DEFAULT",
184     "D3DSTATUS_CLIPUNIONALL",
185     "D3DSTATUS_CLIPUNIONLEFT",
186     "D3DSTATUS_CLIPUNIONRIGHT",
187     "D3DSTATUS_CLIPUNIONTOP",
188     "D3DSTATUS_CLIPUNIONBOTTOM",
189     "D3DSTATUS_CLIPUNIONFRONT",
190     "D3DSTATUS_CLIPUNIONBACK",
191     "D3DSTATUS_CLIPUNIONGEN0",
192     "D3DSTATUS_CLIPUNIONGEN1",
193     "D3DSTATUS_CLIPUNIONGEN2",
194     "D3DSTATUS_CLIPUNIONGEN3",
195     "D3DSTATUS_CLIPUNIONGEN4",
196     "D3DSTATUS_CLIPUNIONGEN5",
197     "D3DSTATUS_CLIPINTERSECTIONALL",
198     "D3DSTATUS_CLIPINTERSECTIONLEFT",
199     "D3DSTATUS_CLIPINTERSECTIONRIGHT",
200     "D3DSTATUS_CLIPINTERSECTIONTOP",
201     "D3DSTATUS_CLIPINTERSECTIONBOTTOM",
202     "D3DSTATUS_CLIPINTERSECTIONFRONT",
203     "D3DSTATUS_CLIPINTERSECTIONBACK",
204     "D3DSTATUS_CLIPINTERSECTIONGEN0",
205     "D3DSTATUS_CLIPINTERSECTIONGEN1",
206     "D3DSTATUS_CLIPINTERSECTIONGEN2",
207     "D3DSTATUS_CLIPINTERSECTIONGEN3",
208     "D3DSTATUS_CLIPINTERSECTIONGEN4",
209     "D3DSTATUS_CLIPINTERSECTIONGEN5",
210     "D3DSTATUS_ZNOTVISIBLE",
211 ])
212
213 D3DTRANSFORM = Flags(DWORD, [
214     "D3DTRANSFORM_CLIPPED",
215     "D3DTRANSFORM_UNCLIPPED",
216 ])
217
218 D3DTRANSFORMDATA = Struct("D3DTRANSFORMDATA", [
219     (DWORD, "dwSize"),
220     (LPVOID, "lpIn"),
221     (DWORD, "dwInSize"),
222     (LPVOID, "lpOut"),
223     (DWORD, "dwOutSize"),
224     (LPD3DHVERTEX, "lpHOut"),
225     (DWORD, "dwClip"),
226     (DWORD, "dwClipIntersection"),
227     (DWORD, "dwClipUnion"),
228     (D3DRECT, "drExtent"),
229 ])
230 LPD3DTRANSFORMDATA = Pointer(D3DTRANSFORMDATA)
231
232 D3DLIGHTINGELEMENT = Struct("D3DLIGHTINGELEMENT", [
233     (D3DVECTOR, "dvPosition"),
234     (D3DVECTOR, "dvNormal"),
235 ])
236 LPD3DLIGHTINGELEMENT = Pointer(D3DLIGHTINGELEMENT)
237
238 D3DMATERIAL = Struct("D3DMATERIAL", [
239     (DWORD, "dwSize"),
240     (D3DCOLORVALUE, "diffuse"),
241     (D3DCOLORVALUE, "ambient"),
242     (D3DCOLORVALUE, "specular"),
243     (D3DCOLORVALUE, "emissive"),
244     (D3DVALUE, "power"),
245     (D3DTEXTUREHANDLE, "hTexture"),
246     (DWORD, "dwRampSize"),
247 ])
248 LPD3DMATERIAL = Pointer(D3DMATERIAL)
249
250 D3DMATERIAL7 = Struct("D3DMATERIAL7", [
251     (D3DCOLORVALUE, "diffuse"),
252     (D3DCOLORVALUE, "ambient"),
253     (D3DCOLORVALUE, "specular"),
254     (D3DCOLORVALUE, "emissive"),
255     (D3DVALUE, "power"),
256 ])
257 LPD3DMATERIAL7 = Pointer(D3DMATERIAL7)
258
259 D3DLIGHTTYPE = Enum("D3DLIGHTTYPE", [
260     "D3DLIGHT_POINT",
261     "D3DLIGHT_SPOT",
262     "D3DLIGHT_DIRECTIONAL",
263     "D3DLIGHT_PARALLELPOINT",
264     "D3DLIGHT_GLSPOT",
265 ])
266
267 D3DLIGHT = Struct("D3DLIGHT", [
268     (DWORD, "dwSize"),
269     (D3DLIGHTTYPE, "dltType"),
270     (D3DCOLORVALUE, "dcvColor"),
271     (D3DVECTOR, "dvPosition"),
272     (D3DVECTOR, "dvDirection"),
273     (D3DVALUE, "dvRange"),
274     (D3DVALUE, "dvFalloff"),
275     (D3DVALUE, "dvAttenuation0"),
276     (D3DVALUE, "dvAttenuation1"),
277     (D3DVALUE, "dvAttenuation2"),
278     (D3DVALUE, "dvTheta"),
279     (D3DVALUE, "dvPhi"),
280 ])
281 LPD3DLIGHT = Pointer(D3DLIGHT)
282
283 D3DLIGHT7 = Struct("D3DLIGHT7", [
284     (D3DLIGHTTYPE, "dltType"),
285     (D3DCOLORVALUE, "dcvDiffuse"),
286     (D3DCOLORVALUE, "dcvSpecular"),
287     (D3DCOLORVALUE, "dcvAmbient"),
288     (D3DVECTOR, "dvPosition"),
289     (D3DVECTOR, "dvDirection"),
290     (D3DVALUE, "dvRange"),
291     (D3DVALUE, "dvFalloff"),
292     (D3DVALUE, "dvAttenuation0"),
293     (D3DVALUE, "dvAttenuation1"),
294     (D3DVALUE, "dvAttenuation2"),
295     (D3DVALUE, "dvTheta"),
296     (D3DVALUE, "dvPhi"),
297 ])
298 LPD3DLIGHT7 = Pointer(D3DLIGHT7)
299
300 D3DLIGHTFLAGS = Flags(DWORD, [
301     "D3DLIGHT_ACTIVE",
302     "D3DLIGHT_NO_SPECULAR",
303     "D3DLIGHT_ALL",
304 ])
305
306 D3DLIGHT2 = Struct("D3DLIGHT2", [
307     (DWORD, "dwSize"),
308     (D3DLIGHTTYPE, "dltType"),
309     (D3DCOLORVALUE, "dcvColor"),
310     (D3DVECTOR, "dvPosition"),
311     (D3DVECTOR, "dvDirection"),
312     (D3DVALUE, "dvRange"),
313     (D3DVALUE, "dvFalloff"),
314     (D3DVALUE, "dvAttenuation0"),
315     (D3DVALUE, "dvAttenuation1"),
316     (D3DVALUE, "dvAttenuation2"),
317     (D3DVALUE, "dvTheta"),
318     (D3DVALUE, "dvPhi"),
319     (DWORD, "dwFlags"),
320 ])
321 LPD3DLIGHT2 = Pointer(D3DLIGHT2)
322
323 D3DLIGHTDATA = Struct("D3DLIGHTDATA", [
324     (DWORD, "dwSize"),
325     (LPD3DLIGHTINGELEMENT, "lpIn"),
326     (DWORD, "dwInSize"),
327     (LPD3DTLVERTEX, "lpOut"),
328     (DWORD, "dwOutSize"),
329 ])
330 LPD3DLIGHTDATA = Pointer(D3DLIGHTDATA)
331
332 D3DCOLOR = Flags(DWORD, [
333     "D3DCOLOR_MONO",
334     "D3DCOLOR_RGB",
335 ])
336
337 D3DCOLORMODEL = DWORD
338
339 D3DCLEAR = Flags(DWORD, [
340     "D3DCLEAR_TARGET",
341     "D3DCLEAR_ZBUFFER",
342     "D3DCLEAR_STENCIL",
343 ])
344
345 D3DOPCODE = Enum("D3DOPCODE", [
346     "D3DOP_POINT",
347     "D3DOP_LINE",
348     "D3DOP_TRIANGLE",
349     "D3DOP_MATRIXLOAD",
350     "D3DOP_MATRIXMULTIPLY",
351     "D3DOP_STATETRANSFORM",
352     "D3DOP_STATELIGHT",
353     "D3DOP_STATERENDER",
354     "D3DOP_PROCESSVERTICES",
355     "D3DOP_TEXTURELOAD",
356     "D3DOP_EXIT",
357     "D3DOP_BRANCHFORWARD",
358     "D3DOP_SPAN",
359     "D3DOP_SETSTATUS",
360 ])
361
362 D3DINSTRUCTION = Struct("D3DINSTRUCTION", [
363     (BYTE, "bOpcode"),
364     (BYTE, "bSize"),
365     (WORD, "wCount"),
366 ])
367
368 D3DTEXTURELOAD = Struct("D3DTEXTURELOAD", [
369     (D3DTEXTUREHANDLE, "hDestTexture"),
370     (D3DTEXTUREHANDLE, "hSrcTexture"),
371 ])
372
373 D3DPICKRECORD = Struct("D3DPICKRECORD", [
374     (BYTE, "bOpcode"),
375     (BYTE, "bPad"),
376     (DWORD, "dwOffset"),
377     (D3DVALUE, "dvZ"),
378 ])
379 LPD3DPICKRECORD = Pointer(D3DPICKRECORD)
380
381 D3DSHADEMODE = Enum("D3DSHADEMODE", [
382     "D3DSHADE_FLAT",
383     "D3DSHADE_GOURAUD",
384     "D3DSHADE_PHONG",
385 ])
386
387 D3DFILLMODE = Enum("D3DFILLMODE", [
388     "D3DFILL_POINT",
389     "D3DFILL_WIREFRAME",
390     "D3DFILL_SOLID",
391 ])
392
393 D3DLINEPATTERN = Struct("D3DLINEPATTERN", [
394     (WORD, "wRepeatFactor"),
395     (WORD, "wLinePattern"),
396 ])
397
398 D3DTEXTUREFILTER = Enum("D3DTEXTUREFILTER", [
399     "D3DFILTER_NEAREST",
400     "D3DFILTER_LINEAR",
401     "D3DFILTER_MIPNEAREST",
402     "D3DFILTER_MIPLINEAR",
403     "D3DFILTER_LINEARMIPNEAREST",
404     "D3DFILTER_LINEARMIPLINEAR",
405 ])
406
407 D3DBLEND = Enum("D3DBLEND", [
408     "D3DBLEND_ZERO",
409     "D3DBLEND_ONE",
410     "D3DBLEND_SRCCOLOR",
411     "D3DBLEND_INVSRCCOLOR",
412     "D3DBLEND_SRCALPHA",
413     "D3DBLEND_INVSRCALPHA",
414     "D3DBLEND_DESTALPHA",
415     "D3DBLEND_INVDESTALPHA",
416     "D3DBLEND_DESTCOLOR",
417     "D3DBLEND_INVDESTCOLOR",
418     "D3DBLEND_SRCALPHASAT",
419     "D3DBLEND_BOTHSRCALPHA",
420     "D3DBLEND_BOTHINVSRCALPHA",
421 ])
422
423 D3DTEXTUREBLEND = Enum("D3DTEXTUREBLEND", [
424     "D3DTBLEND_DECAL",
425     "D3DTBLEND_MODULATE",
426     "D3DTBLEND_DECALALPHA",
427     "D3DTBLEND_MODULATEALPHA",
428     "D3DTBLEND_DECALMASK",
429     "D3DTBLEND_MODULATEMASK",
430     "D3DTBLEND_COPY",
431     "D3DTBLEND_ADD",
432 ])
433
434 D3DTEXTUREADDRESS = Enum("D3DTEXTUREADDRESS", [
435     "D3DTADDRESS_WRAP",
436     "D3DTADDRESS_MIRROR",
437     "D3DTADDRESS_CLAMP",
438     "D3DTADDRESS_BORDER",
439 ])
440
441 D3DCULL = Enum("D3DCULL", [
442     "D3DCULL_NONE",
443     "D3DCULL_CW",
444     "D3DCULL_CCW",
445 ])
446
447 D3DCMPFUNC = Enum("D3DCMPFUNC", [
448     "D3DCMP_NEVER",
449     "D3DCMP_LESS",
450     "D3DCMP_EQUAL",
451     "D3DCMP_LESSEQUAL",
452     "D3DCMP_GREATER",
453     "D3DCMP_NOTEQUAL",
454     "D3DCMP_GREATEREQUAL",
455     "D3DCMP_ALWAYS",
456 ])
457
458 D3DSTENCILOP = Enum("D3DSTENCILOP", [
459     "D3DSTENCILOP_KEEP",
460     "D3DSTENCILOP_ZERO",
461     "D3DSTENCILOP_REPLACE",
462     "D3DSTENCILOP_INCRSAT",
463     "D3DSTENCILOP_DECRSAT",
464     "D3DSTENCILOP_INVERT",
465     "D3DSTENCILOP_INCR",
466     "D3DSTENCILOP_DECR",
467 ])
468
469 D3DFOGMODE = Enum("D3DFOGMODE", [
470     "D3DFOG_NONE",
471     "D3DFOG_EXP",
472     "D3DFOG_EXP2",
473     "D3DFOG_LINEAR",
474 ])
475
476 D3DZBUFFERTYPE = Enum("D3DZBUFFERTYPE", [
477     "D3DZB_FALSE",
478     "D3DZB_TRUE",
479     "D3DZB_USEW",
480 ])
481
482 D3DANTIALIASMODE = Enum("D3DANTIALIASMODE", [
483     "D3DANTIALIAS_NONE",
484     "D3DANTIALIAS_SORTDEPENDENT",
485     "D3DANTIALIAS_SORTINDEPENDENT",
486 ])
487
488 D3DVERTEXTYPE = Enum("D3DVERTEXTYPE", [
489     "D3DVT_VERTEX",
490     "D3DVT_LVERTEX",
491     "D3DVT_TLVERTEX",
492 ])
493
494 D3DPRIMITIVETYPE = Enum("D3DPRIMITIVETYPE", [
495     "D3DPT_POINTLIST",
496     "D3DPT_LINELIST",
497     "D3DPT_LINESTRIP",
498     "D3DPT_TRIANGLELIST",
499     "D3DPT_TRIANGLESTRIP",
500     "D3DPT_TRIANGLEFAN",
501 ])
502
503 D3DTRANSFORMSTATETYPE = Enum("D3DTRANSFORMSTATETYPE", [
504     "D3DTRANSFORMSTATE_WORLD",
505     "D3DTRANSFORMSTATE_VIEW",
506     "D3DTRANSFORMSTATE_PROJECTION",
507     "D3DTRANSFORMSTATE_WORLD1",
508     "D3DTRANSFORMSTATE_WORLD2",
509     "D3DTRANSFORMSTATE_WORLD3",
510     "D3DTRANSFORMSTATE_TEXTURE0",
511     "D3DTRANSFORMSTATE_TEXTURE1",
512     "D3DTRANSFORMSTATE_TEXTURE2",
513     "D3DTRANSFORMSTATE_TEXTURE3",
514     "D3DTRANSFORMSTATE_TEXTURE4",
515     "D3DTRANSFORMSTATE_TEXTURE5",
516     "D3DTRANSFORMSTATE_TEXTURE6",
517     "D3DTRANSFORMSTATE_TEXTURE7",
518 ])
519
520 D3DLIGHTSTATETYPE = Enum("D3DLIGHTSTATETYPE", [
521     "D3DLIGHTSTATE_MATERIAL",
522     "D3DLIGHTSTATE_AMBIENT",
523     "D3DLIGHTSTATE_COLORMODEL",
524     "D3DLIGHTSTATE_FOGMODE",
525     "D3DLIGHTSTATE_FOGSTART",
526     "D3DLIGHTSTATE_FOGEND",
527     "D3DLIGHTSTATE_FOGDENSITY",
528     "D3DLIGHTSTATE_COLORVERTEX",
529 ])
530
531 D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [
532     "D3DMCS_MATERIAL",
533     "D3DMCS_COLOR1",
534     "D3DMCS_COLOR2",
535 ])
536
537 D3DWRAPCOORD = Flags(DWORD, [
538     "D3DWRAPCOORD_0",
539     "D3DWRAPCOORD_1",
540     "D3DWRAPCOORD_2",
541     "D3DWRAPCOORD_3",
542 ])
543
544 D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [
545     "D3DRENDERSTATE_ANTIALIAS",
546     "D3DRENDERSTATE_TEXTUREPERSPECTIVE",
547     "D3DRENDERSTATE_ZENABLE",
548     "D3DRENDERSTATE_FILLMODE",
549     "D3DRENDERSTATE_SHADEMODE",
550     "D3DRENDERSTATE_LINEPATTERN",
551     "D3DRENDERSTATE_ZWRITEENABLE",
552     "D3DRENDERSTATE_ALPHATESTENABLE",
553     "D3DRENDERSTATE_LASTPIXEL",
554     "D3DRENDERSTATE_SRCBLEND",
555     "D3DRENDERSTATE_DESTBLEND",
556     "D3DRENDERSTATE_CULLMODE",
557     "D3DRENDERSTATE_ZFUNC",
558     "D3DRENDERSTATE_ALPHAREF",
559     "D3DRENDERSTATE_ALPHAFUNC",
560     "D3DRENDERSTATE_DITHERENABLE",
561     "D3DRENDERSTATE_ALPHABLENDENABLE",
562     "D3DRENDERSTATE_FOGENABLE",
563     "D3DRENDERSTATE_SPECULARENABLE",
564     "D3DRENDERSTATE_ZVISIBLE",
565     "D3DRENDERSTATE_STIPPLEDALPHA",
566     "D3DRENDERSTATE_FOGCOLOR",
567     "D3DRENDERSTATE_FOGTABLEMODE",
568     "D3DRENDERSTATE_FOGSTART",
569     "D3DRENDERSTATE_FOGEND",
570     "D3DRENDERSTATE_FOGDENSITY",
571     "D3DRENDERSTATE_EDGEANTIALIAS",
572     "D3DRENDERSTATE_COLORKEYENABLE",
573     "D3DRENDERSTATE_ZBIAS",
574     "D3DRENDERSTATE_RANGEFOGENABLE",
575     "D3DRENDERSTATE_STENCILENABLE",
576     "D3DRENDERSTATE_STENCILFAIL",
577     "D3DRENDERSTATE_STENCILZFAIL",
578     "D3DRENDERSTATE_STENCILPASS",
579     "D3DRENDERSTATE_STENCILFUNC",
580     "D3DRENDERSTATE_STENCILREF",
581     "D3DRENDERSTATE_STENCILMASK",
582     "D3DRENDERSTATE_STENCILWRITEMASK",
583     "D3DRENDERSTATE_TEXTUREFACTOR",
584     "D3DRENDERSTATE_WRAP0",
585     "D3DRENDERSTATE_WRAP1",
586     "D3DRENDERSTATE_WRAP2",
587     "D3DRENDERSTATE_WRAP3",
588     "D3DRENDERSTATE_WRAP4",
589     "D3DRENDERSTATE_WRAP5",
590     "D3DRENDERSTATE_WRAP6",
591     "D3DRENDERSTATE_WRAP7",
592     "D3DRENDERSTATE_CLIPPING",
593     "D3DRENDERSTATE_LIGHTING",
594     "D3DRENDERSTATE_EXTENTS",
595     "D3DRENDERSTATE_AMBIENT",
596     "D3DRENDERSTATE_FOGVERTEXMODE",
597     "D3DRENDERSTATE_COLORVERTEX",
598     "D3DRENDERSTATE_LOCALVIEWER",
599     "D3DRENDERSTATE_NORMALIZENORMALS",
600     "D3DRENDERSTATE_COLORKEYBLENDENABLE",
601     "D3DRENDERSTATE_DIFFUSEMATERIALSOURCE",
602     "D3DRENDERSTATE_SPECULARMATERIALSOURCE",
603     "D3DRENDERSTATE_AMBIENTMATERIALSOURCE",
604     "D3DRENDERSTATE_EMISSIVEMATERIALSOURCE",
605     "D3DRENDERSTATE_VERTEXBLEND",
606     "D3DRENDERSTATE_CLIPPLANEENABLE",
607     "D3DRENDERSTATE_TEXTUREHANDLE",
608     "D3DRENDERSTATE_TEXTUREADDRESS",
609     "D3DRENDERSTATE_WRAPU",
610     "D3DRENDERSTATE_WRAPV",
611     "D3DRENDERSTATE_MONOENABLE",
612     "D3DRENDERSTATE_ROP2",
613     "D3DRENDERSTATE_PLANEMASK",
614     "D3DRENDERSTATE_TEXTUREMAG",
615     "D3DRENDERSTATE_TEXTUREMIN",
616     "D3DRENDERSTATE_TEXTUREMAPBLEND",
617     "D3DRENDERSTATE_SUBPIXEL",
618     "D3DRENDERSTATE_SUBPIXELX",
619     "D3DRENDERSTATE_STIPPLEENABLE",
620     "D3DRENDERSTATE_BORDERCOLOR",
621     "D3DRENDERSTATE_TEXTUREADDRESSU",
622     "D3DRENDERSTATE_TEXTUREADDRESSV",
623     "D3DRENDERSTATE_MIPMAPLODBIAS",
624     "D3DRENDERSTATE_ANISOTROPY",
625     "D3DRENDERSTATE_FLUSHBATCH",
626     "D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT",
627     "D3DRENDERSTATE_STIPPLEPATTERN00",
628     "D3DRENDERSTATE_STIPPLEPATTERN01",
629     "D3DRENDERSTATE_STIPPLEPATTERN02",
630     "D3DRENDERSTATE_STIPPLEPATTERN03",
631     "D3DRENDERSTATE_STIPPLEPATTERN04",
632     "D3DRENDERSTATE_STIPPLEPATTERN05",
633     "D3DRENDERSTATE_STIPPLEPATTERN06",
634     "D3DRENDERSTATE_STIPPLEPATTERN07",
635     "D3DRENDERSTATE_STIPPLEPATTERN08",
636     "D3DRENDERSTATE_STIPPLEPATTERN09",
637     "D3DRENDERSTATE_STIPPLEPATTERN10",
638     "D3DRENDERSTATE_STIPPLEPATTERN11",
639     "D3DRENDERSTATE_STIPPLEPATTERN12",
640     "D3DRENDERSTATE_STIPPLEPATTERN13",
641     "D3DRENDERSTATE_STIPPLEPATTERN14",
642     "D3DRENDERSTATE_STIPPLEPATTERN15",
643     "D3DRENDERSTATE_STIPPLEPATTERN16",
644     "D3DRENDERSTATE_STIPPLEPATTERN17",
645     "D3DRENDERSTATE_STIPPLEPATTERN18",
646     "D3DRENDERSTATE_STIPPLEPATTERN19",
647     "D3DRENDERSTATE_STIPPLEPATTERN20",
648     "D3DRENDERSTATE_STIPPLEPATTERN21",
649     "D3DRENDERSTATE_STIPPLEPATTERN22",
650     "D3DRENDERSTATE_STIPPLEPATTERN23",
651     "D3DRENDERSTATE_STIPPLEPATTERN24",
652     "D3DRENDERSTATE_STIPPLEPATTERN25",
653     "D3DRENDERSTATE_STIPPLEPATTERN26",
654     "D3DRENDERSTATE_STIPPLEPATTERN27",
655     "D3DRENDERSTATE_STIPPLEPATTERN28",
656     "D3DRENDERSTATE_STIPPLEPATTERN29",
657     "D3DRENDERSTATE_STIPPLEPATTERN30",
658     "D3DRENDERSTATE_STIPPLEPATTERN31",
659 ])
660
661 D3DSTATE = Struct("D3DSTATE", [
662     (D3DTRANSFORMSTATETYPE, "dtstTransformStateType"),
663     (D3DLIGHTSTATETYPE, "dlstLightStateType"),
664     (D3DRENDERSTATETYPE, "drstRenderStateType"),
665     (Array(DWORD, 1), "dwArg"),
666     (Array(D3DVALUE, 1), "dvArg"),
667 ])
668
669 D3DMATRIXLOAD = Struct("D3DMATRIXLOAD", [
670     (D3DMATRIXHANDLE, "hDestMatrix"),
671     (D3DMATRIXHANDLE, "hSrcMatrix"),
672 ])
673
674 D3DMATRIXMULTIPLY = Struct("D3DMATRIXMULTIPLY", [
675     (D3DMATRIXHANDLE, "hDestMatrix"),
676     (D3DMATRIXHANDLE, "hSrcMatrix1"),
677     (D3DMATRIXHANDLE, "hSrcMatrix2"),
678 ])
679
680 D3DPROCESSVERTICES = Struct("D3DPROCESSVERTICES", [
681     (DWORD, "dwFlags"),
682     (WORD, "wStart"),
683     (WORD, "wDest"),
684     (DWORD, "dwCount"),
685     (DWORD, "dwReserved"),
686 ])
687
688 D3DPROCESSVERTICES = Flags(DWORD, [
689     "D3DPROCESSVERTICES_TRANSFORMLIGHT",
690     "D3DPROCESSVERTICES_TRANSFORM",
691     "D3DPROCESSVERTICES_COPY",
692     "D3DPROCESSVERTICES_OPMASK",
693     "D3DPROCESSVERTICES_UPDATEEXTENTS",
694     "D3DPROCESSVERTICES_NOCOLOR",
695 ])
696
697 D3DTEXTURESTAGESTATETYPE = Enum("D3DTEXTURESTAGESTATETYPE", [
698     "D3DTSS_COLOROP",
699     "D3DTSS_COLORARG1",
700     "D3DTSS_COLORARG2",
701     "D3DTSS_ALPHAOP",
702     "D3DTSS_ALPHAARG1",
703     "D3DTSS_ALPHAARG2",
704     "D3DTSS_BUMPENVMAT00",
705     "D3DTSS_BUMPENVMAT01",
706     "D3DTSS_BUMPENVMAT10",
707     "D3DTSS_BUMPENVMAT11",
708     "D3DTSS_TEXCOORDINDEX",
709     "D3DTSS_ADDRESS",
710     "D3DTSS_ADDRESSU",
711     "D3DTSS_ADDRESSV",
712     "D3DTSS_BORDERCOLOR",
713     "D3DTSS_MAGFILTER",
714     "D3DTSS_MINFILTER",
715     "D3DTSS_MIPFILTER",
716     "D3DTSS_MIPMAPLODBIAS",
717     "D3DTSS_MAXMIPLEVEL",
718     "D3DTSS_MAXANISOTROPY",
719     "D3DTSS_BUMPENVLSCALE",
720     "D3DTSS_BUMPENVLOFFSET",
721     "D3DTSS_TEXTURETRANSFORMFLAGS",
722 ])
723
724 D3DTSS_TCI = Flags(DWORD, [
725     "D3DTSS_TCI_PASSTHRU",
726     "D3DTSS_TCI_CAMERASPACENORMAL",
727     "D3DTSS_TCI_CAMERASPACEPOSITION",
728     "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
729 ])
730
731 D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
732     "D3DTOP_DISABLE",
733     "D3DTOP_SELECTARG1",
734     "D3DTOP_SELECTARG2",
735     "D3DTOP_MODULATE",
736     "D3DTOP_MODULATE2X",
737     "D3DTOP_MODULATE4X",
738     "D3DTOP_ADD",
739     "D3DTOP_ADDSIGNED",
740     "D3DTOP_ADDSIGNED2X",
741     "D3DTOP_SUBTRACT",
742     "D3DTOP_ADDSMOOTH",
743     "D3DTOP_BLENDDIFFUSEALPHA",
744     "D3DTOP_BLENDTEXTUREALPHA",
745     "D3DTOP_BLENDFACTORALPHA",
746     "D3DTOP_BLENDTEXTUREALPHAPM",
747     "D3DTOP_BLENDCURRENTALPHA",
748     "D3DTOP_PREMODULATE",
749     "D3DTOP_MODULATEALPHA_ADDCOLOR",
750     "D3DTOP_MODULATECOLOR_ADDALPHA",
751     "D3DTOP_MODULATEINVALPHA_ADDCOLOR",
752     "D3DTOP_MODULATEINVCOLOR_ADDALPHA",
753     "D3DTOP_BUMPENVMAP",
754     "D3DTOP_BUMPENVMAPLUMINANCE",
755     "D3DTOP_DOTPRODUCT3",
756 ])
757
758 # XXX: Actually a mixture of enums and flags
759 D3DTA = FakeEnum(DWORD, [
760     "D3DTA_DIFFUSE",
761     "D3DTA_CURRENT",
762     "D3DTA_TEXTURE",
763     "D3DTA_TFACTOR",
764     "D3DTA_SPECULAR",
765     #"D3DTA_COMPLEMENT",
766     #"D3DTA_ALPHAREPLICATE",
767 ])
768
769 D3DTEXTUREMAGFILTER = Enum("D3DTEXTUREMAGFILTER", [
770     "D3DTFG_POINT",
771     "D3DTFG_LINEAR",
772     "D3DTFG_FLATCUBIC",
773     "D3DTFG_GAUSSIANCUBIC",
774     "D3DTFG_ANISOTROPIC",
775 ])
776
777 D3DTEXTUREMINFILTER = Enum("D3DTEXTUREMINFILTER", [
778     "D3DTFN_POINT",
779     "D3DTFN_LINEAR",
780     "D3DTFN_ANISOTROPIC",
781 ])
782
783 D3DTEXTUREMIPFILTER = Enum("D3DTEXTUREMIPFILTER", [
784     "D3DTFP_NONE",
785     "D3DTFP_POINT",
786     "D3DTFP_LINEAR",
787 ])
788
789 D3DTRIFLAG = Flags(DWORD, [
790     "D3DTRIFLAG_START",
791     "D3DTRIFLAG_STARTFLAT(len)",
792     "D3DTRIFLAG_ODD",
793     "D3DTRIFLAG_EVEN",
794     "D3DTRIFLAG_EDGEENABLETRIANGLE",
795     "D3DTRIFLAG_EDGEENABLE1",
796     "D3DTRIFLAG_EDGEENABLE2",
797     "D3DTRIFLAG_EDGEENABLE3",
798 ])
799
800 D3DTRIANGLE = Struct("D3DTRIANGLE", [
801     (WORD, "v1"),
802     (WORD, "v2"),
803     (WORD, "v3"),
804     (WORD, "wFlags"),
805 ])
806
807 D3DLINE = Struct("D3DLINE", [
808     (WORD, "v1"),
809     (WORD, "v2"),
810 ])
811
812 D3DSPAN = Struct("D3DSPAN", [
813     (WORD, "wCount"),
814     (WORD, "wFirst"),
815 ])
816
817 D3DPOINT = Struct("D3DPOINT", [
818     (WORD, "wCount"),
819     (WORD, "wFirst"),
820 ])
821
822 D3DBRANCH = Struct("D3DBRANCH", [
823     (DWORD, "dwMask"),
824     (DWORD, "dwValue"),
825     (BOOL, "bNegate"),
826     (DWORD, "dwOffset"),
827 ])
828
829 D3DSTATUS = Struct("D3DSTATUS", [
830     (DWORD, "dwFlags"),
831     (DWORD, "dwStatus"),
832     (D3DRECT, "drExtent"),
833 ])
834
835 D3DSETSTATUS = Flags(DWORD, [
836     "D3DSETSTATUS_STATUS",
837     "D3DSETSTATUS_EXTENTS",
838     "D3DSETSTATUS_ALL",
839 ])
840
841 D3DCLIPSTATUS = Struct("D3DCLIPSTATUS", [
842     (DWORD, "dwFlags"),
843     (DWORD, "dwStatus"),
844     (Float, "minx"),
845     (Float, "maxx"),
846     (Float, "miny"),
847     (Float, "maxy"),
848     (Float, "minz"),
849     (Float, "maxz"),
850 ])
851 LPD3DCLIPSTATUS = Pointer(D3DCLIPSTATUS)
852
853 D3DCLIPSTATUS = Flags(DWORD, [
854     "D3DCLIPSTATUS_STATUS",
855     "D3DCLIPSTATUS_EXTENTS2",
856     "D3DCLIPSTATUS_EXTENTS3",
857 ])
858
859 D3DSTATS = Struct("D3DSTATS", [
860     (DWORD, "dwSize"),
861     (DWORD, "dwTrianglesDrawn"),
862     (DWORD, "dwLinesDrawn"),
863     (DWORD, "dwPointsDrawn"),
864     (DWORD, "dwSpansDrawn"),
865     (DWORD, "dwVerticesProcessed"),
866 ])
867 LPD3DSTATS = Pointer(D3DSTATS)
868
869 D3DEXECUTE = Flags(DWORD, [
870     "D3DEXECUTE_CLIPPED",
871     "D3DEXECUTE_UNCLIPPED",
872 ])
873
874 D3DEXECUTEDATA = Struct("D3DEXECUTEDATA", [
875     (DWORD, "dwSize"),
876     (DWORD, "dwVertexOffset"),
877     (DWORD, "dwVertexCount"),
878     (DWORD, "dwInstructionOffset"),
879     (DWORD, "dwInstructionLength"),
880     (DWORD, "dwHVertexOffset"),
881     (D3DSTATUS, "dsStatus"),
882 ])
883 LPD3DEXECUTEDATA = Pointer(D3DEXECUTEDATA)
884
885 D3DPAL = Flags(DWORD, [
886     "D3DPAL_FREE",
887     "D3DPAL_READONLY",
888     "D3DPAL_RESERVED",
889 ])
890
891 D3DVERTEXBUFFERDESC = Struct("D3DVERTEXBUFFERDESC", [
892     (DWORD, "dwSize"),
893     (DWORD, "dwCaps"),
894     (DWORD, "dwFVF"),
895     (DWORD, "dwNumVertices"),
896 ])
897 LPD3DVERTEXBUFFERDESC = Pointer(D3DVERTEXBUFFERDESC)
898
899 D3DVBCAPS = Flags(DWORD, [
900     "D3DVBCAPS_SYSTEMMEMORY",
901     "D3DVBCAPS_WRITEONLY",
902     "D3DVBCAPS_OPTIMIZED",
903     "D3DVBCAPS_DONOTCLIP",
904 ])
905
906 D3DVOP = Flags(DWORD, [
907     "D3DVOP_LIGHT",
908     "D3DVOP_TRANSFORM",
909     "D3DVOP_CLIP",
910     "D3DVOP_EXTENTS",
911 ])
912
913 D3DPV = Flags(DWORD, [
914     "D3DPV_DONOTCOPYDATA",
915 ])
916
917 D3DFVF = Flags(DWORD, [
918     "D3DFVF_RESERVED0",
919     "D3DFVF_XYZ",
920     "D3DFVF_XYZRHW",
921     "D3DFVF_XYZB1",
922     "D3DFVF_XYZB2",
923     "D3DFVF_XYZB3",
924     "D3DFVF_XYZB4",
925     "D3DFVF_XYZB5",
926     "D3DFVF_NORMAL",
927     "D3DFVF_RESERVED1",
928     "D3DFVF_DIFFUSE",
929     "D3DFVF_SPECULAR",
930     #"D3DFVF_TEX0",
931     #"D3DFVF_TEX1",
932     #"D3DFVF_TEX2",
933     #"D3DFVF_TEX3",
934     #"D3DFVF_TEX4",
935     #"D3DFVF_TEX5",
936     #"D3DFVF_TEX6",
937     #"D3DFVF_TEX7",
938     #"D3DFVF_TEX8",
939     "D3DFVF_RESERVED2",
940     #"D3DFVF_TEXCOORDSIZE1(0)",
941     #"D3DFVF_TEXCOORDSIZE2(0)",
942     #"D3DFVF_TEXCOORDSIZE3(0)",
943     #"D3DFVF_TEXCOORDSIZE4(0)",
944     #"D3DFVF_TEXCOORDSIZE1(1)",
945     #"D3DFVF_TEXCOORDSIZE2(1)",
946     #"D3DFVF_TEXCOORDSIZE3(1)",
947     #"D3DFVF_TEXCOORDSIZE4(1)",
948     #"D3DFVF_TEXCOORDSIZE1(2)",
949     #"D3DFVF_TEXCOORDSIZE2(2)",
950     #"D3DFVF_TEXCOORDSIZE3(2)",
951     #"D3DFVF_TEXCOORDSIZE4(2)",
952     #"D3DFVF_TEXCOORDSIZE1(3)",
953     #"D3DFVF_TEXCOORDSIZE2(3)",
954     #"D3DFVF_TEXCOORDSIZE3(3)",
955     #"D3DFVF_TEXCOORDSIZE4(3)",
956 ])
957
958 D3DDP_PTRSTRIDE = Struct("D3DDP_PTRSTRIDE", [
959     (LPVOID, "lpvData"),
960     (DWORD, "dwStride"),
961 ])
962
963 D3DDRAWPRIMITIVESTRIDEDDATA = Struct("D3DDRAWPRIMITIVESTRIDEDDATA", [
964     (D3DDP_PTRSTRIDE, "position"),
965     (D3DDP_PTRSTRIDE, "normal"),
966     (D3DDP_PTRSTRIDE, "diffuse"),
967     (D3DDP_PTRSTRIDE, "specular"),
968     (Array(D3DDP_PTRSTRIDE, "D3DDP_MAXTEXCOORD"), "textureCoords"),
969 ])
970 LPD3DDRAWPRIMITIVESTRIDEDDATA = Pointer(D3DDRAWPRIMITIVESTRIDEDDATA)
971
972 D3DVIS = Flags(DWORD, [
973     "D3DVIS_INSIDE_FRUSTUM",
974     "D3DVIS_INTERSECT_FRUSTUM",
975     "D3DVIS_OUTSIDE_FRUSTUM",
976     "D3DVIS_INSIDE_LEFT",
977     "D3DVIS_INTERSECT_LEFT",
978     "D3DVIS_OUTSIDE_LEFT",
979     "D3DVIS_INSIDE_RIGHT",
980     "D3DVIS_INTERSECT_RIGHT",
981     "D3DVIS_OUTSIDE_RIGHT",
982     "D3DVIS_INSIDE_TOP",
983     "D3DVIS_INTERSECT_TOP",
984     "D3DVIS_OUTSIDE_TOP",
985     "D3DVIS_INSIDE_BOTTOM",
986     "D3DVIS_INTERSECT_BOTTOM",
987     "D3DVIS_OUTSIDE_BOTTOM",
988     "D3DVIS_INSIDE_NEAR",
989     "D3DVIS_INTERSECT_NEAR",
990     "D3DVIS_OUTSIDE_NEAR",
991     "D3DVIS_INSIDE_FAR",
992     "D3DVIS_INTERSECT_FAR",
993     "D3DVIS_OUTSIDE_FAR",
994     "D3DVIS_MASK_FRUSTUM",
995     "D3DVIS_MASK_LEFT",
996     "D3DVIS_MASK_RIGHT",
997     "D3DVIS_MASK_TOP",
998     "D3DVIS_MASK_BOTTOM",
999     "D3DVIS_MASK_NEAR",
1000     "D3DVIS_MASK_FAR",
1001 ])
1002
1003 D3DDEVINFOID = Flags(DWORD, [
1004     "D3DDEVINFOID_TEXTUREMANAGER",
1005     "D3DDEVINFOID_D3DTEXTUREMANAGER",
1006     "D3DDEVINFOID_TEXTURING",
1007 ])
1008
1009 D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
1010     "D3DSBT_ALL",
1011     "D3DSBT_PIXELSTATE",
1012     "D3DSBT_VERTEXSTATE",
1013 ])
1014
1015 D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
1016     "D3DVBLEND_DISABLE",
1017     "D3DVBLEND_1WEIGHT",
1018     "D3DVBLEND_2WEIGHTS",
1019     "D3DVBLEND_3WEIGHTS",
1020 ])
1021
1022 D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
1023     "D3DTTFF_DISABLE",
1024     "D3DTTFF_COUNT1",
1025     "D3DTTFF_COUNT2",
1026     "D3DTTFF_COUNT3",
1027     "D3DTTFF_COUNT4",
1028     "D3DTTFF_PROJECTED",
1029 ])