1 #############################################################################
3 # Copyright 2008 Jose Fonseca
5 # This program is free software: you can redistribute it and/or modify it
6 # under the terms of the GNU Lesser General Public License as published
7 # by the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU Lesser General Public License for more details.
15 # You should have received a copy of the GNU Lesser General Public License
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #############################################################################
23 from d3d9types import *
25 D3DVS20CAPS = Flags(DWORD, [
26 "D3DVS20CAPS_PREDICATION",
29 D3DVSHADERCAPS2_0 = Struct("D3DVSHADERCAPS2_0", [
30 (D3DVS20CAPS, "Caps"),
31 (INT, "DynamicFlowControlDepth"),
33 (INT, "StaticFlowControlDepth"),
36 D3DPS20CAPS = Flags(DWORD, [
37 "D3DPS20CAPS_ARBITRARYSWIZZLE",
38 "D3DPS20CAPS_GRADIENTINSTRUCTIONS",
39 "D3DPS20CAPS_PREDICATION",
40 "D3DPS20CAPS_NODEPENDENTREADLIMIT",
41 "D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT",
44 D3DPSHADERCAPS2_0 = Struct("D3DPSHADERCAPS2_0", [
45 (D3DPS20CAPS, "Caps"),
46 (INT, "DynamicFlowControlDepth"),
48 (INT, "StaticFlowControlDepth"),
49 (INT, "NumInstructionSlots"),
52 D3DCAPS = Flags(DWORD, [
53 "D3DCAPS_READ_SCANLINE",
56 D3DCAPS2 = Flags(DWORD, [
57 "D3DCAPS2_FULLSCREENGAMMA",
58 "D3DCAPS2_CANCALIBRATEGAMMA",
60 "D3DCAPS2_CANMANAGERESOURCE",
61 "D3DCAPS2_DYNAMICTEXTURES",
62 "D3DCAPS2_CANAUTOGENMIPMAP",
63 "D3DCAPS2_CANSHARERESOURCE",
66 D3DCAPS3 = Flags(DWORD, [
68 "D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD",
69 "D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION",
70 "D3DCAPS3_COPY_TO_VIDMEM",
71 "D3DCAPS3_COPY_TO_SYSTEMMEM",
75 D3DPRESENT_INTERVAL = Flags(DWORD, [
76 "D3DPRESENT_INTERVAL_DEFAULT",
77 "D3DPRESENT_INTERVAL_ONE",
78 "D3DPRESENT_INTERVAL_TWO",
79 "D3DPRESENT_INTERVAL_THREE",
80 "D3DPRESENT_INTERVAL_FOUR",
81 "D3DPRESENT_INTERVAL_IMMEDIATE",
84 D3DCURSORCAPS = Flags(DWORD, [
85 "D3DCURSORCAPS_COLOR",
86 "D3DCURSORCAPS_LOWRES",
89 D3DDEVCAPS = Flags(DWORD, [
90 "D3DDEVCAPS_EXECUTESYSTEMMEMORY",
91 "D3DDEVCAPS_EXECUTEVIDEOMEMORY",
92 "D3DDEVCAPS_TLVERTEXSYSTEMMEMORY",
93 "D3DDEVCAPS_TLVERTEXVIDEOMEMORY",
94 "D3DDEVCAPS_TEXTURESYSTEMMEMORY",
95 "D3DDEVCAPS_TEXTUREVIDEOMEMORY",
96 "D3DDEVCAPS_DRAWPRIMTLVERTEX",
97 "D3DDEVCAPS_CANRENDERAFTERFLIP",
98 "D3DDEVCAPS_TEXTURENONLOCALVIDMEM",
99 "D3DDEVCAPS_DRAWPRIMITIVES2",
100 "D3DDEVCAPS_SEPARATETEXTUREMEMORIES",
101 "D3DDEVCAPS_DRAWPRIMITIVES2EX",
102 "D3DDEVCAPS_HWTRANSFORMANDLIGHT",
103 "D3DDEVCAPS_CANBLTSYSTONONLOCAL",
104 "D3DDEVCAPS_HWRASTERIZATION",
105 "D3DDEVCAPS_PUREDEVICE",
106 "D3DDEVCAPS_QUINTICRTPATCHES",
107 "D3DDEVCAPS_RTPATCHES",
108 "D3DDEVCAPS_RTPATCHHANDLEZERO",
109 "D3DDEVCAPS_NPATCHES",
112 D3DPMISCCAPS = Flags(DWORD, [
113 "D3DPMISCCAPS_MASKZ",
114 "D3DPMISCCAPS_CULLNONE",
115 "D3DPMISCCAPS_CULLCW",
116 "D3DPMISCCAPS_CULLCCW",
117 "D3DPMISCCAPS_COLORWRITEENABLE",
118 "D3DPMISCCAPS_CLIPPLANESCALEDPOINTS",
119 "D3DPMISCCAPS_CLIPTLVERTS",
120 "D3DPMISCCAPS_TSSARGTEMP",
121 "D3DPMISCCAPS_BLENDOP",
122 "D3DPMISCCAPS_NULLREFERENCE",
123 "D3DPMISCCAPS_INDEPENDENTWRITEMASKS",
124 "D3DPMISCCAPS_PERSTAGECONSTANT",
125 "D3DPMISCCAPS_FOGANDSPECULARALPHA",
126 "D3DPMISCCAPS_SEPARATEALPHABLEND",
127 "D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS",
128 "D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING",
129 "D3DPMISCCAPS_FOGVERTEXCLAMPED",
130 "D3DPMISCCAPS_POSTBLENDSRGBCONVERT",
133 D3DLINECAPS = Flags(DWORD, [
134 "D3DLINECAPS_TEXTURE",
137 "D3DLINECAPS_ALPHACMP",
139 "D3DLINECAPS_ANTIALIAS",
142 D3DPRASTERCAPS = Flags(DWORD, [
143 "D3DPRASTERCAPS_DITHER",
144 "D3DPRASTERCAPS_ZTEST",
145 "D3DPRASTERCAPS_FOGVERTEX",
146 "D3DPRASTERCAPS_FOGTABLE",
147 "D3DPRASTERCAPS_MIPMAPLODBIAS",
148 "D3DPRASTERCAPS_ZBUFFERLESSHSR",
149 "D3DPRASTERCAPS_FOGRANGE",
150 "D3DPRASTERCAPS_ANISOTROPY",
151 "D3DPRASTERCAPS_WBUFFER",
152 "D3DPRASTERCAPS_WFOG",
153 "D3DPRASTERCAPS_ZFOG",
154 "D3DPRASTERCAPS_COLORPERSPECTIVE",
155 "D3DPRASTERCAPS_SCISSORTEST",
156 "D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS",
157 "D3DPRASTERCAPS_DEPTHBIAS",
158 "D3DPRASTERCAPS_MULTISAMPLE_TOGGLE",
161 D3DPCMPCAPS = Flags(DWORD, [
165 "D3DPCMPCAPS_LESSEQUAL",
166 "D3DPCMPCAPS_GREATER",
167 "D3DPCMPCAPS_NOTEQUAL",
168 "D3DPCMPCAPS_GREATEREQUAL",
169 "D3DPCMPCAPS_ALWAYS",
172 D3DPBLENDCAPS = Flags(DWORD, [
173 "D3DPBLENDCAPS_ZERO",
175 "D3DPBLENDCAPS_SRCCOLOR",
176 "D3DPBLENDCAPS_INVSRCCOLOR",
177 "D3DPBLENDCAPS_SRCALPHA",
178 "D3DPBLENDCAPS_INVSRCALPHA",
179 "D3DPBLENDCAPS_DESTALPHA",
180 "D3DPBLENDCAPS_INVDESTALPHA",
181 "D3DPBLENDCAPS_DESTCOLOR",
182 "D3DPBLENDCAPS_INVDESTCOLOR",
183 "D3DPBLENDCAPS_SRCALPHASAT",
184 "D3DPBLENDCAPS_BOTHSRCALPHA",
185 "D3DPBLENDCAPS_BOTHINVSRCALPHA",
186 "D3DPBLENDCAPS_BLENDFACTOR",
187 "D3DPBLENDCAPS_SRCCOLOR2",
188 "D3DPBLENDCAPS_INVSRCCOLOR2",
191 D3DPSHADECAPS = Flags(DWORD, [
192 "D3DPSHADECAPS_COLORGOURAUDRGB",
193 "D3DPSHADECAPS_SPECULARGOURAUDRGB",
194 "D3DPSHADECAPS_ALPHAGOURAUDBLEND",
195 "D3DPSHADECAPS_FOGGOURAUD",
198 D3DPTEXTURECAPS = Flags(DWORD, [
199 "D3DPTEXTURECAPS_PERSPECTIVE",
200 "D3DPTEXTURECAPS_POW2",
201 "D3DPTEXTURECAPS_ALPHA",
202 "D3DPTEXTURECAPS_SQUAREONLY",
203 "D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE",
204 "D3DPTEXTURECAPS_ALPHAPALETTE",
205 "D3DPTEXTURECAPS_NONPOW2CONDITIONAL",
206 "D3DPTEXTURECAPS_PROJECTED",
207 "D3DPTEXTURECAPS_CUBEMAP",
208 "D3DPTEXTURECAPS_VOLUMEMAP",
209 "D3DPTEXTURECAPS_MIPMAP",
210 "D3DPTEXTURECAPS_MIPVOLUMEMAP",
211 "D3DPTEXTURECAPS_MIPCUBEMAP",
212 "D3DPTEXTURECAPS_CUBEMAP_POW2",
213 "D3DPTEXTURECAPS_VOLUMEMAP_POW2",
214 "D3DPTEXTURECAPS_NOPROJECTEDBUMPENV",
217 D3DPTFILTERCAPS = Flags(DWORD, [
218 "D3DPTFILTERCAPS_MINFPOINT",
219 "D3DPTFILTERCAPS_MINFLINEAR",
220 "D3DPTFILTERCAPS_MINFANISOTROPIC",
221 "D3DPTFILTERCAPS_MINFPYRAMIDALQUAD",
222 "D3DPTFILTERCAPS_MINFGAUSSIANQUAD",
223 "D3DPTFILTERCAPS_MIPFPOINT",
224 "D3DPTFILTERCAPS_MIPFLINEAR",
225 "D3DPTFILTERCAPS_CONVOLUTIONMONO",
226 "D3DPTFILTERCAPS_MAGFPOINT",
227 "D3DPTFILTERCAPS_MAGFLINEAR",
228 "D3DPTFILTERCAPS_MAGFANISOTROPIC",
229 "D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD",
230 "D3DPTFILTERCAPS_MAGFGAUSSIANQUAD",
233 D3DPTADDRESSCAPS = Flags(DWORD, [
234 "D3DPTADDRESSCAPS_WRAP",
235 "D3DPTADDRESSCAPS_MIRROR",
236 "D3DPTADDRESSCAPS_CLAMP",
237 "D3DPTADDRESSCAPS_BORDER",
238 "D3DPTADDRESSCAPS_INDEPENDENTUV",
239 "D3DPTADDRESSCAPS_MIRRORONCE",
242 D3DSTENCILCAPS = Flags(DWORD, [
243 "D3DSTENCILCAPS_KEEP",
244 "D3DSTENCILCAPS_ZERO",
245 "D3DSTENCILCAPS_REPLACE",
246 "D3DSTENCILCAPS_INCRSAT",
247 "D3DSTENCILCAPS_DECRSAT",
248 "D3DSTENCILCAPS_INVERT",
249 "D3DSTENCILCAPS_INCR",
250 "D3DSTENCILCAPS_DECR",
251 "D3DSTENCILCAPS_TWOSIDED",
254 D3DTEXOPCAPS = Flags(DWORD, [
255 "D3DTEXOPCAPS_DISABLE",
256 "D3DTEXOPCAPS_SELECTARG1",
257 "D3DTEXOPCAPS_SELECTARG2",
258 "D3DTEXOPCAPS_MODULATE",
259 "D3DTEXOPCAPS_MODULATE2X",
260 "D3DTEXOPCAPS_MODULATE4X",
262 "D3DTEXOPCAPS_ADDSIGNED",
263 "D3DTEXOPCAPS_ADDSIGNED2X",
264 "D3DTEXOPCAPS_SUBTRACT",
265 "D3DTEXOPCAPS_ADDSMOOTH",
266 "D3DTEXOPCAPS_BLENDDIFFUSEALPHA",
267 "D3DTEXOPCAPS_BLENDTEXTUREALPHA",
268 "D3DTEXOPCAPS_BLENDFACTORALPHA",
269 "D3DTEXOPCAPS_BLENDTEXTUREALPHAPM",
270 "D3DTEXOPCAPS_BLENDCURRENTALPHA",
271 "D3DTEXOPCAPS_PREMODULATE",
272 "D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR",
273 "D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA",
274 "D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR",
275 "D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA",
276 "D3DTEXOPCAPS_BUMPENVMAP",
277 "D3DTEXOPCAPS_BUMPENVMAPLUMINANCE",
278 "D3DTEXOPCAPS_DOTPRODUCT3",
279 "D3DTEXOPCAPS_MULTIPLYADD",
283 D3DFVFCAPS = Flags(DWORD, [
284 "D3DFVFCAPS_TEXCOORDCOUNTMASK",
285 "D3DFVFCAPS_DONOTSTRIPELEMENTS",
289 D3DVTXPCAPS = Flags(DWORD, [
290 "D3DVTXPCAPS_TEXGEN",
291 "D3DVTXPCAPS_MATERIALSOURCE7",
292 "D3DVTXPCAPS_DIRECTIONALLIGHTS",
293 "D3DVTXPCAPS_POSITIONALLIGHTS",
294 "D3DVTXPCAPS_LOCALVIEWER",
295 "D3DVTXPCAPS_TWEENING",
296 "D3DVTXPCAPS_TEXGEN_SPHEREMAP",
297 "D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER",
300 D3DDEVCAPS2 = Flags(DWORD, [
301 "D3DDEVCAPS2_STREAMOFFSET",
302 "D3DDEVCAPS2_DMAPNPATCH",
303 "D3DDEVCAPS2_ADAPTIVETESSRTPATCH",
304 "D3DDEVCAPS2_ADAPTIVETESSNPATCH",
305 "D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES",
306 "D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH",
307 "D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET",
310 D3DDTCAPS = Flags(DWORD, [
315 "D3DDTCAPS_USHORT2N",
316 "D3DDTCAPS_USHORT4N",
319 "D3DDTCAPS_FLOAT16_2",
320 "D3DDTCAPS_FLOAT16_4",
323 #D3DPS_VERSION = Enum("DWORD", [
324 # "D3DPS_VERSION(0,0)",
325 # "D3DPS_VERSION(1,0)",
326 # "D3DPS_VERSION(1,1)",
327 # "D3DPS_VERSION(1,2)",
328 # "D3DPS_VERSION(1,3)",
329 # "D3DPS_VERSION(1,4)",
330 # "D3DPS_VERSION(2,0)",
331 # "D3DPS_VERSION(3,0)",
333 D3DPS_VERSION = DWORD
335 #D3DVS_VERSION = Enum("DWORD", [
336 # "D3DVS_VERSION(0,0)",
337 # "D3DVS_VERSION(1,0)",
338 # "D3DVS_VERSION(1,1)",
339 # "D3DVS_VERSION(2,0)",
340 # "D3DVS_VERSION(3,0)",
342 D3DVS_VERSION = DWORD
344 D3DCAPS9 = Struct("D3DCAPS9", [
345 (D3DDEVTYPE, "DeviceType"),
346 (UINT, "AdapterOrdinal"),
350 (D3DPRESENT_INTERVAL, "PresentationIntervals"),
351 (D3DCURSORCAPS, "CursorCaps"),
352 (D3DDEVCAPS, "DevCaps"),
353 (D3DPMISCCAPS, "PrimitiveMiscCaps"),
354 (D3DPRASTERCAPS, "RasterCaps"),
355 (D3DPCMPCAPS, "ZCmpCaps"),
356 (D3DPBLENDCAPS, "SrcBlendCaps"),
357 (D3DPBLENDCAPS, "DestBlendCaps"),
358 (D3DPCMPCAPS, "AlphaCmpCaps"),
359 (D3DPSHADECAPS, "ShadeCaps"),
360 (D3DPTEXTURECAPS, "TextureCaps"),
361 (D3DPTFILTERCAPS, "TextureFilterCaps"),
362 (D3DPTFILTERCAPS, "CubeTextureFilterCaps"),
363 (D3DPTFILTERCAPS, "VolumeTextureFilterCaps"),
364 (D3DPTADDRESSCAPS, "TextureAddressCaps"),
365 (D3DPTADDRESSCAPS, "VolumeTextureAddressCaps"),
366 (D3DLINECAPS, "LineCaps"),
367 (DWORD, "MaxTextureWidth"),
368 (DWORD, "MaxTextureHeight"),
369 (DWORD, "MaxVolumeExtent"),
370 (DWORD, "MaxTextureRepeat"),
371 (DWORD, "MaxTextureAspectRatio"),
372 (DWORD, "MaxAnisotropy"),
373 (Float, "MaxVertexW"),
374 (Float, "GuardBandLeft"),
375 (Float, "GuardBandTop"),
376 (Float, "GuardBandRight"),
377 (Float, "GuardBandBottom"),
378 (Float, "ExtentsAdjust"),
379 (D3DSTENCILCAPS, "StencilCaps"),
380 (D3DFVFCAPS, "FVFCaps"),
381 (D3DTEXOPCAPS, "TextureOpCaps"),
382 (DWORD, "MaxTextureBlendStages"),
383 (DWORD, "MaxSimultaneousTextures"),
384 (D3DVTXPCAPS, "VertexProcessingCaps"),
385 (DWORD, "MaxActiveLights"),
386 (DWORD, "MaxUserClipPlanes"),
387 (DWORD, "MaxVertexBlendMatrices"),
388 (DWORD, "MaxVertexBlendMatrixIndex"),
389 (Float, "MaxPointSize"),
390 (DWORD, "MaxPrimitiveCount"),
391 (DWORD, "MaxVertexIndex"),
392 (DWORD, "MaxStreams"),
393 (DWORD, "MaxStreamStride"),
394 (D3DVS_VERSION, "VertexShaderVersion"),
395 (DWORD, "MaxVertexShaderConst"),
396 (D3DPS_VERSION, "PixelShaderVersion"),
397 (Float, "PixelShader1xMaxValue"),
398 (D3DDEVCAPS2, "DevCaps2"),
399 (Float, "MaxNpatchTessellationLevel"),
400 (DWORD, "Reserved5"),
401 (UINT, "MasterAdapterOrdinal"),
402 (UINT, "AdapterOrdinalInGroup"),
403 (UINT, "NumberOfAdaptersInGroup"),
404 (D3DDTCAPS, "DeclTypes"),
405 (DWORD, "NumSimultaneousRTs"),
406 (D3DPTFILTERCAPS, "StretchRectFilterCaps"),
407 (D3DVSHADERCAPS2_0, "VS20Caps"),
408 (D3DPSHADERCAPS2_0, "PS20Caps"),
409 (D3DPTFILTERCAPS, "VertexTextureFilterCaps"),
410 (DWORD, "MaxVShaderInstructionsExecuted"),
411 (DWORD, "MaxPShaderInstructionsExecuted"),
412 (DWORD, "MaxVertexShader30InstructionSlots"),
413 (DWORD, "MaxPixelShader30InstructionSlots"),