]> git.cworth.org Git - apitrace/blobdiff - specs/d3d8types.py
d3d8: Update specs to match d3d9.
[apitrace] / specs / d3d8types.py
index 9d400fe78baf35c9601edc698bbd0143ba9885ac..7843d59ddb483a1257db7d04c7e30d4738e0e7c9 100644 (file)
@@ -62,7 +62,7 @@ D3DVIEWPORT8 = Struct("D3DVIEWPORT8", [
     (Float, "MaxZ"),
 ])
 
-D3DCLIP = Flags(DWORD, [
+D3DCLIPPLANE = Flags(DWORD, [
     "D3DCLIPPLANE0",
     "D3DCLIPPLANE1",
     "D3DCLIPPLANE2",
@@ -247,85 +247,6 @@ D3DTS = Flags(DWORD, [
     "D3DTS_WORLD3",
 ])
 
-D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [
-    "D3DRS_ZENABLE",
-    "D3DRS_FILLMODE",
-    "D3DRS_SHADEMODE",
-    "D3DRS_LINEPATTERN",
-    "D3DRS_ZWRITEENABLE",
-    "D3DRS_ALPHATESTENABLE",
-    "D3DRS_LASTPIXEL",
-    "D3DRS_SRCBLEND",
-    "D3DRS_DESTBLEND",
-    "D3DRS_CULLMODE",
-    "D3DRS_ZFUNC",
-    "D3DRS_ALPHAREF",
-    "D3DRS_ALPHAFUNC",
-    "D3DRS_DITHERENABLE",
-    "D3DRS_ALPHABLENDENABLE",
-    "D3DRS_FOGENABLE",
-    "D3DRS_SPECULARENABLE",
-    "D3DRS_ZVISIBLE",
-    "D3DRS_FOGCOLOR",
-    "D3DRS_FOGTABLEMODE",
-    "D3DRS_FOGSTART",
-    "D3DRS_FOGEND",
-    "D3DRS_FOGDENSITY",
-    "D3DRS_EDGEANTIALIAS",
-    "D3DRS_ZBIAS",
-    "D3DRS_RANGEFOGENABLE",
-    "D3DRS_STENCILENABLE",
-    "D3DRS_STENCILFAIL",
-    "D3DRS_STENCILZFAIL",
-    "D3DRS_STENCILPASS",
-    "D3DRS_STENCILFUNC",
-    "D3DRS_STENCILREF",
-    "D3DRS_STENCILMASK",
-    "D3DRS_STENCILWRITEMASK",
-    "D3DRS_TEXTUREFACTOR",
-    "D3DRS_WRAP0",
-    "D3DRS_WRAP1",
-    "D3DRS_WRAP2",
-    "D3DRS_WRAP3",
-    "D3DRS_WRAP4",
-    "D3DRS_WRAP5",
-    "D3DRS_WRAP6",
-    "D3DRS_WRAP7",
-    "D3DRS_CLIPPING",
-    "D3DRS_LIGHTING",
-    "D3DRS_AMBIENT",
-    "D3DRS_FOGVERTEXMODE",
-    "D3DRS_COLORVERTEX",
-    "D3DRS_LOCALVIEWER",
-    "D3DRS_NORMALIZENORMALS",
-    "D3DRS_DIFFUSEMATERIALSOURCE",
-    "D3DRS_SPECULARMATERIALSOURCE",
-    "D3DRS_AMBIENTMATERIALSOURCE",
-    "D3DRS_EMISSIVEMATERIALSOURCE",
-    "D3DRS_VERTEXBLEND",
-    "D3DRS_CLIPPLANEENABLE",
-    "D3DRS_SOFTWAREVERTEXPROCESSING",
-    "D3DRS_POINTSIZE",
-    "D3DRS_POINTSIZE_MIN",
-    "D3DRS_POINTSPRITEENABLE",
-    "D3DRS_POINTSCALEENABLE",
-    "D3DRS_POINTSCALE_A",
-    "D3DRS_POINTSCALE_B",
-    "D3DRS_POINTSCALE_C",
-    "D3DRS_MULTISAMPLEANTIALIAS",
-    "D3DRS_MULTISAMPLEMASK",
-    "D3DRS_PATCHEDGESTYLE",
-    "D3DRS_PATCHSEGMENTS",
-    "D3DRS_DEBUGMONITORTOKEN",
-    "D3DRS_POINTSIZE_MAX",
-    "D3DRS_INDEXEDVERTEXBLENDENABLE",
-    "D3DRS_COLORWRITEENABLE",
-    "D3DRS_TWEENFACTOR",
-    "D3DRS_BLENDOP",
-    "D3DRS_POSITIONORDER",
-    "D3DRS_NORMALORDER",
-])
-
 D3DMATERIALCOLORSOURCE = Enum("D3DMATERIALCOLORSOURCE", [
     "D3DMCS_MATERIAL",
     "D3DMCS_COLOR1",
@@ -352,38 +273,118 @@ D3DCOLORWRITEENABLE = Flags(DWORD, [
     "D3DCOLORWRITEENABLE_ALPHA",
 ])
 
-D3DTEXTURESTAGESTATETYPE = Enum("D3DTEXTURESTAGESTATETYPE", [
-    "D3DTSS_COLOROP",
-    "D3DTSS_COLORARG1",
-    "D3DTSS_COLORARG2",
-    "D3DTSS_ALPHAOP",
-    "D3DTSS_ALPHAARG1",
-    "D3DTSS_ALPHAARG2",
-    "D3DTSS_BUMPENVMAT00",
-    "D3DTSS_BUMPENVMAT01",
-    "D3DTSS_BUMPENVMAT10",
-    "D3DTSS_BUMPENVMAT11",
-    "D3DTSS_TEXCOORDINDEX",
-    "D3DTSS_ADDRESSU",
-    "D3DTSS_ADDRESSV",
-    "D3DTSS_BORDERCOLOR",
-    "D3DTSS_MAGFILTER",
-    "D3DTSS_MINFILTER",
-    "D3DTSS_MIPFILTER",
-    "D3DTSS_MIPMAPLODBIAS",
-    "D3DTSS_MAXMIPLEVEL",
-    "D3DTSS_MAXANISOTROPY",
-    "D3DTSS_BUMPENVLSCALE",
-    "D3DTSS_BUMPENVLOFFSET",
-    "D3DTSS_TEXTURETRANSFORMFLAGS",
-    "D3DTSS_ADDRESSW",
-    "D3DTSS_COLORARG0",
-    "D3DTSS_ALPHAARG0",
-    "D3DTSS_RESULTARG",
-])
-
-D3DTSS = Flags(DWORD, [
-    "D3DTSS_TCI_PASSTHRU",
+D3DORDERTYPE = Enum("D3DORDERTYPE", [
+    "D3DORDER_LINEAR",
+    "D3DORDER_QUADRATIC",
+    "D3DORDER_CUBIC",
+    "D3DORDER_QUINTIC",
+])
+
+D3DPATCHEDGESTYLE = Enum("D3DPATCHEDGESTYLE", [
+    "D3DPATCHEDGE_DISCRETE",
+    "D3DPATCHEDGE_CONTINUOUS",
+])
+
+D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
+    "D3DVBF_DISABLE",
+    "D3DVBF_1WEIGHTS",
+    "D3DVBF_2WEIGHTS",
+    "D3DVBF_3WEIGHTS",
+    "D3DVBF_TWEENING",
+    "D3DVBF_0WEIGHTS",
+])
+
+D3DDEBUGMONITORTOKENS = Enum("D3DDEBUGMONITORTOKENS", [
+    "D3DDMT_ENABLE",
+    "D3DDMT_DISABLE",
+])
+
+# TODO: Convert these to/from actual floats
+FLOAT_AS_DWORD = DWORD
+
+D3DRENDERSTATETYPE, D3DRENDERSTATEVALUE = EnumPolymorphic("D3DRENDERSTATETYPE", "State", [
+    ("D3DRS_ZENABLE", D3DZBUFFERTYPE),
+    ("D3DRS_FILLMODE", D3DFILLMODE),
+    ("D3DRS_SHADEMODE", D3DSHADEMODE),
+    ("D3DRS_LINEPATTERN", DWORD), # D3DLINEPATTERN
+    ("D3DRS_ZWRITEENABLE", BOOL),
+    ("D3DRS_ALPHATESTENABLE", BOOL),
+    ("D3DRS_LASTPIXEL", BOOL),
+    ("D3DRS_SRCBLEND", D3DBLEND),
+    ("D3DRS_DESTBLEND", D3DBLEND),
+    ("D3DRS_CULLMODE", D3DCULL),
+    ("D3DRS_ZFUNC", D3DCMPFUNC),
+    ("D3DRS_ALPHAREF", DWORD),
+    ("D3DRS_ALPHAFUNC", D3DCMPFUNC),
+    ("D3DRS_DITHERENABLE", BOOL),
+    ("D3DRS_ALPHABLENDENABLE", BOOL),
+    ("D3DRS_FOGENABLE", BOOL),
+    ("D3DRS_SPECULARENABLE", BOOL),
+    ("D3DRS_ZVISIBLE", BOOL),
+    ("D3DRS_FOGCOLOR", D3DCOLOR),
+    ("D3DRS_FOGTABLEMODE", D3DFOGMODE),
+    ("D3DRS_FOGSTART", FLOAT_AS_DWORD),
+    ("D3DRS_FOGEND", FLOAT_AS_DWORD),
+    ("D3DRS_FOGDENSITY", FLOAT_AS_DWORD),
+    ("D3DRS_EDGEANTIALIAS", BOOL),
+    ("D3DRS_ZBIAS", LONG),
+    ("D3DRS_RANGEFOGENABLE", BOOL),
+    ("D3DRS_STENCILENABLE", BOOL),
+    ("D3DRS_STENCILFAIL", D3DSTENCILOP),
+    ("D3DRS_STENCILZFAIL", D3DSTENCILOP),
+    ("D3DRS_STENCILPASS", D3DSTENCILOP),
+    ("D3DRS_STENCILFUNC", D3DCMPFUNC),
+    ("D3DRS_STENCILREF", DWORD),
+    ("D3DRS_STENCILMASK", DWORD),
+    ("D3DRS_STENCILWRITEMASK", DWORD),
+    ("D3DRS_TEXTUREFACTOR", D3DCOLOR),
+    ("D3DRS_WRAP0", D3DWRAPCOORD),
+    ("D3DRS_WRAP1", D3DWRAPCOORD),
+    ("D3DRS_WRAP2", D3DWRAPCOORD),
+    ("D3DRS_WRAP3", D3DWRAPCOORD),
+    ("D3DRS_WRAP4", D3DWRAPCOORD),
+    ("D3DRS_WRAP5", D3DWRAPCOORD),
+    ("D3DRS_WRAP6", D3DWRAPCOORD),
+    ("D3DRS_WRAP7", D3DWRAPCOORD),
+    ("D3DRS_CLIPPING", BOOL),
+    ("D3DRS_LIGHTING", BOOL),
+    ("D3DRS_AMBIENT", D3DCOLOR),
+    ("D3DRS_FOGVERTEXMODE", D3DFOGMODE),
+    ("D3DRS_COLORVERTEX", BOOL),
+    ("D3DRS_LOCALVIEWER", BOOL),
+    ("D3DRS_NORMALIZENORMALS", BOOL),
+    ("D3DRS_DIFFUSEMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
+    ("D3DRS_SPECULARMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
+    ("D3DRS_AMBIENTMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
+    ("D3DRS_EMISSIVEMATERIALSOURCE", D3DMATERIALCOLORSOURCE),
+    ("D3DRS_VERTEXBLEND", D3DVERTEXBLENDFLAGS),
+    ("D3DRS_CLIPPLANEENABLE", D3DCLIPPLANE),
+    ("D3DRS_SOFTWAREVERTEXPROCESSING", BOOL),
+    ("D3DRS_POINTSIZE", FLOAT_AS_DWORD),
+    ("D3DRS_POINTSIZE_MIN", FLOAT_AS_DWORD),
+    ("D3DRS_POINTSPRITEENABLE", BOOL),
+    ("D3DRS_POINTSCALEENABLE", BOOL),
+    ("D3DRS_POINTSCALE_A", FLOAT_AS_DWORD),
+    ("D3DRS_POINTSCALE_B", FLOAT_AS_DWORD),
+    ("D3DRS_POINTSCALE_C", FLOAT_AS_DWORD),
+    ("D3DRS_MULTISAMPLEANTIALIAS", BOOL),
+    ("D3DRS_MULTISAMPLEMASK", DWORD),
+    ("D3DRS_PATCHEDGESTYLE", D3DPATCHEDGESTYLE),
+    ("D3DRS_PATCHSEGMENTS", DWORD),
+    ("D3DRS_DEBUGMONITORTOKEN", D3DDEBUGMONITORTOKENS),
+    ("D3DRS_POINTSIZE_MAX", FLOAT_AS_DWORD),
+    ("D3DRS_INDEXEDVERTEXBLENDENABLE", BOOL),
+    ("D3DRS_COLORWRITEENABLE", DWORD),
+    ("D3DRS_TWEENFACTOR", FLOAT_AS_DWORD),
+    ("D3DRS_BLENDOP", D3DBLENDOP),
+    ("D3DRS_POSITIONORDER", D3DORDERTYPE),
+    ("D3DRS_NORMALORDER", D3DORDERTYPE),
+
+    # XXX: D3DRENDERSTATE_WRAPBIAS + n
+], DWORD)
+
+D3DTSS_TCI = Flags(DWORD, [
+    #"D3DTSS_TCI_PASSTHRU", # 0
     "D3DTSS_TCI_CAMERASPACENORMAL",
     "D3DTSS_TCI_CAMERASPACEPOSITION",
     "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR",
@@ -418,16 +419,25 @@ D3DTEXTUREOP = Enum("D3DTEXTUREOP", [
     "D3DTOP_LERP",
 ])
 
-D3DTA = Flags(DWORD, [
-    "D3DTA_SELECTMASK",
+# XXX: Actually a mixture of enums and flags
+D3DTA = FakeEnum(DWORD, [
     "D3DTA_DIFFUSE",
     "D3DTA_CURRENT",
     "D3DTA_TEXTURE",
     "D3DTA_TFACTOR",
     "D3DTA_SPECULAR",
     "D3DTA_TEMP",
-    "D3DTA_COMPLEMENT",
-    "D3DTA_ALPHAREPLICATE",
+    #"D3DTA_COMPLEMENT",
+    #"D3DTA_ALPHAREPLICATE",
+])
+
+D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
+    "D3DTTFF_DISABLE",
+    "D3DTTFF_COUNT1",
+    "D3DTTFF_COUNT2",
+    "D3DTTFF_COUNT3",
+    "D3DTTFF_COUNT4",
+    "D3DTTFF_PROJECTED",
 ])
 
 D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [
@@ -439,13 +449,43 @@ D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [
     "D3DTEXF_GAUSSIANCUBIC",
 ])
 
+D3DTEXTURESTAGESTATETYPE, D3DTEXTURESTAGESTATEVALUE = EnumPolymorphic("D3DTEXTURESTAGESTATETYPE", "Type", [
+    ("D3DTSS_COLOROP", D3DTEXTUREOP),
+    ("D3DTSS_COLORARG1", D3DTA),
+    ("D3DTSS_COLORARG2", D3DTA),
+    ("D3DTSS_ALPHAOP", D3DTEXTUREOP),
+    ("D3DTSS_ALPHAARG1", D3DTA),
+    ("D3DTSS_ALPHAARG2", D3DTA),
+    ("D3DTSS_BUMPENVMAT00", FLOAT_AS_DWORD),
+    ("D3DTSS_BUMPENVMAT01", FLOAT_AS_DWORD),
+    ("D3DTSS_BUMPENVMAT10", FLOAT_AS_DWORD),
+    ("D3DTSS_BUMPENVMAT11", FLOAT_AS_DWORD),
+    ("D3DTSS_TEXCOORDINDEX", D3DTSS_TCI),
+    ("D3DTSS_ADDRESSU", D3DTEXTUREADDRESS),
+    ("D3DTSS_ADDRESSV", D3DTEXTUREADDRESS),
+    ("D3DTSS_BORDERCOLOR", D3DCOLOR),
+    ("D3DTSS_MAGFILTER", D3DTEXTUREFILTERTYPE),
+    ("D3DTSS_MINFILTER", D3DTEXTUREFILTERTYPE),
+    ("D3DTSS_MIPFILTER", D3DTEXTUREFILTERTYPE),
+    ("D3DTSS_MIPMAPLODBIAS", FLOAT_AS_DWORD),
+    ("D3DTSS_MAXMIPLEVEL", DWORD),
+    ("D3DTSS_MAXANISOTROPY", DWORD),
+    ("D3DTSS_BUMPENVLSCALE", FLOAT_AS_DWORD),
+    ("D3DTSS_BUMPENVLOFFSET", FLOAT_AS_DWORD),
+    ("D3DTSS_TEXTURETRANSFORMFLAGS", D3DTEXTURETRANSFORMFLAGS),
+    ("D3DTSS_ADDRESSW", D3DTEXTUREADDRESS),
+    ("D3DTSS_COLORARG0", D3DTA),
+    ("D3DTSS_ALPHAARG0", D3DTA),
+    ("D3DTSS_RESULTARG", D3DTA),
+], DWORD)
+
 D3DPV = Flags(DWORD, [
     "D3DPV_DONOTCOPYDATA",
 ])
 
+# XXX: Actually a mixture of enums and flags
 D3DFVF = Flags(DWORD, [
     "D3DFVF_RESERVED0",
-    "D3DFVF_POSITION_MASK",
     "D3DFVF_XYZ",
     "D3DFVF_XYZRHW",
     "D3DFVF_XYZB1",
@@ -457,37 +497,36 @@ D3DFVF = Flags(DWORD, [
     "D3DFVF_PSIZE",
     "D3DFVF_DIFFUSE",
     "D3DFVF_SPECULAR",
-    "D3DFVF_TEXCOUNT_MASK",
-    "D3DFVF_TEXCOUNT_SHIFT",
-    "D3DFVF_TEX0",
-    "D3DFVF_TEX1",
-    "D3DFVF_TEX2",
-    "D3DFVF_TEX3",
-    "D3DFVF_TEX4",
-    "D3DFVF_TEX5",
-    "D3DFVF_TEX6",
-    "D3DFVF_TEX7",
-    "D3DFVF_TEX8",
+    #"D3DFVF_TEX0",
+    #"D3DFVF_TEX1",
+    #"D3DFVF_TEX2",
+    #"D3DFVF_TEX3",
+    #"D3DFVF_TEX4",
+    #"D3DFVF_TEX5",
+    #"D3DFVF_TEX6",
+    #"D3DFVF_TEX7",
+    #"D3DFVF_TEX8",
     "D3DFVF_LASTBETA_UBYTE4",
     "D3DFVF_RESERVED2",
-    "D3DFVF_TEXCOORDSIZE3(0)",
-    "D3DFVF_TEXCOORDSIZE2(0)",
-    "D3DFVF_TEXCOORDSIZE4(0)",
-    "D3DFVF_TEXCOORDSIZE1(0)",
-    "D3DFVF_TEXCOORDSIZE3(1)",
-    "D3DFVF_TEXCOORDSIZE2(1)",
-    "D3DFVF_TEXCOORDSIZE4(1)",
-    "D3DFVF_TEXCOORDSIZE1(1)",
-    "D3DFVF_TEXCOORDSIZE3(2)",
-    "D3DFVF_TEXCOORDSIZE2(2)",
-    "D3DFVF_TEXCOORDSIZE4(2)",
-    "D3DFVF_TEXCOORDSIZE1(2)",
-    "D3DFVF_TEXCOORDSIZE3(3)",
-    "D3DFVF_TEXCOORDSIZE2(3)",
-    "D3DFVF_TEXCOORDSIZE4(3)",
-    "D3DFVF_TEXCOORDSIZE1(3)",
-])
-
+    #"D3DFVF_TEXCOORDSIZE1(0)",
+    #"D3DFVF_TEXCOORDSIZE2(0)",
+    #"D3DFVF_TEXCOORDSIZE3(0)",
+    #"D3DFVF_TEXCOORDSIZE4(0)",
+    #"D3DFVF_TEXCOORDSIZE1(1)",
+    #"D3DFVF_TEXCOORDSIZE2(1)",
+    #"D3DFVF_TEXCOORDSIZE3(1)",
+    #"D3DFVF_TEXCOORDSIZE4(1)",
+    #"D3DFVF_TEXCOORDSIZE1(2)",
+    #"D3DFVF_TEXCOORDSIZE2(2)",
+    #"D3DFVF_TEXCOORDSIZE3(2)",
+    #"D3DFVF_TEXCOORDSIZE4(2)",
+    #"D3DFVF_TEXCOORDSIZE1(3)",
+    #"D3DFVF_TEXCOORDSIZE2(3)",
+    #"D3DFVF_TEXCOORDSIZE3(3)",
+    #"D3DFVF_TEXCOORDSIZE4(3)",
+])
+
+# XXX
 D3DVSD_TOKENTYPE = Enum("D3DVSD_TOKENTYPE", [
     "D3DVSD_TOKEN_NOP",
     "D3DVSD_TOKEN_STREAM",
@@ -498,7 +537,8 @@ D3DVSD_TOKENTYPE = Enum("D3DVSD_TOKENTYPE", [
     "D3DVSD_TOKEN_END",
 ])
 
-D3DVSDT = Flags(DWORD, [
+# XXX
+D3DVSDT = FakeEnum(DWORD, [
     "D3DVSDT_FLOAT1",
     "D3DVSDT_FLOAT2",
     "D3DVSDT_FLOAT3",
@@ -528,181 +568,18 @@ D3DVSDT = Flags(DWORD, [
     "D3DSI_OPCODE_MASK",
 ])
 
-D3DSHADER_INSTRUCTION_OPCODE_TYPE = Enum("D3DSHADER_INSTRUCTION_OPCODE_TYPE", [
-    "D3DSIO_NOP",
-    "D3DSIO_MOV",
-    "D3DSIO_ADD",
-    "D3DSIO_SUB",
-    "D3DSIO_MAD",
-    "D3DSIO_MUL",
-    "D3DSIO_RCP",
-    "D3DSIO_RSQ",
-    "D3DSIO_DP3",
-    "D3DSIO_DP4",
-    "D3DSIO_MIN",
-    "D3DSIO_MAX",
-    "D3DSIO_SLT",
-    "D3DSIO_SGE",
-    "D3DSIO_EXP",
-    "D3DSIO_LOG",
-    "D3DSIO_LIT",
-    "D3DSIO_DST",
-    "D3DSIO_LRP",
-    "D3DSIO_FRC",
-    "D3DSIO_M4x4",
-    "D3DSIO_M4x3",
-    "D3DSIO_M3x4",
-    "D3DSIO_M3x3",
-    "D3DSIO_M3x2",
-    "D3DSIO_TEXCOORD",
-    "D3DSIO_TEXKILL",
-    "D3DSIO_TEX",
-    "D3DSIO_TEXBEM",
-    "D3DSIO_TEXBEML",
-    "D3DSIO_TEXREG2AR",
-    "D3DSIO_TEXREG2GB",
-    "D3DSIO_TEXM3x2PAD",
-    "D3DSIO_TEXM3x2TEX",
-    "D3DSIO_TEXM3x3PAD",
-    "D3DSIO_TEXM3x3TEX",
-    "D3DSIO_TEXM3x3DIFF",
-    "D3DSIO_TEXM3x3SPEC",
-    "D3DSIO_TEXM3x3VSPEC",
-    "D3DSIO_EXPP",
-    "D3DSIO_LOGP",
-    "D3DSIO_CND",
-    "D3DSIO_DEF",
-    "D3DSIO_TEXREG2RGB",
-    "D3DSIO_TEXDP3TEX",
-    "D3DSIO_TEXM3x2DEPTH",
-    "D3DSIO_TEXDP3",
-    "D3DSIO_TEXM3x3",
-    "D3DSIO_TEXDEPTH",
-    "D3DSIO_CMP",
-    "D3DSIO_BEM",
-    "D3DSIO_PHASE",
-    "D3DSIO_COMMENT",
-    "D3DSIO_END",
-])
-
-D3DSP = Flags(DWORD, [
-    "D3DSP_WRITEMASK_0",
-    "D3DSP_WRITEMASK_1",
-    "D3DSP_WRITEMASK_2",
-    "D3DSP_WRITEMASK_3",
-    "D3DSP_WRITEMASK_ALL",
-])
-
-D3DSHADER_PARAM_DSTMOD_TYPE = Enum("D3DSHADER_PARAM_DSTMOD_TYPE", [
-    "D3DSPDM_NONE",
-    "D3DSPDM_SATURATE",
-])
-
-D3DSHADER_PARAM_REGISTER_TYPE = Enum("D3DSHADER_PARAM_REGISTER_TYPE", [
-    "D3DSPR_TEMP",
-    "D3DSPR_INPUT",
-    "D3DSPR_CONST",
-    "D3DSPR_ADDR|D3DSPR_TEXTURE",
-    "D3DSPR_RASTOUT",
-    "D3DSPR_ATTROUT",
-    "D3DSPR_TEXCRDOUT",
-])
-
-D3DVS_RASTOUT_OFFSETS = Enum("D3DVS_RASTOUT_OFFSETS", [
-    "D3DSRO_POSITION",
-    "D3DSRO_FOG",
-    "D3DSRO_POINT_SIZE",
-])
-
-D3DVS_ADDRESSMODE_TYPE = Enum("D3DVS_ADDRESSMODE_TYPE", [
-    "D3DVS_ADDRMODE_ABSOLUTE",
-    "D3DVS_ADDRMODE_RELATIVE",
-])
-
-D3DVS = Flags(DWORD, [
-    "D3DVS_X_X",
-    "D3DVS_X_Y",
-    "D3DVS_X_Z",
-    "D3DVS_X_W",
-    "D3DVS_Y_X",
-    "D3DVS_Y_Y",
-    "D3DVS_Y_Z",
-    "D3DVS_Y_W",
-    "D3DVS_Z_X",
-    "D3DVS_Z_Y",
-    "D3DVS_Z_Z",
-    "D3DVS_Z_W",
-    "D3DVS_W_X",
-    "D3DVS_W_Y",
-    "D3DVS_W_Z",
-    "D3DVS_W_W",
-    "D3DVS_NOSWIZZLE",
-])
-
-D3DSP = Flags(DWORD, [
-    "D3DSP_NOSWIZZLE",
-    "D3DSP_REPLICATERED",
-    "D3DSP_REPLICATEGREEN",
-    "D3DSP_REPLICATEBLUE",
-    "D3DSP_REPLICATEALPHA",
-])
-
-D3DSHADER_PARAM_SRCMOD_TYPE = Enum("D3DSHADER_PARAM_SRCMOD_TYPE", [
-    "D3DSPSM_NONE",
-    "D3DSPSM_NEG",
-    "D3DSPSM_BIAS",
-    "D3DSPSM_BIASNEG",
-    "D3DSPSM_SIGN",
-    "D3DSPSM_SIGNNEG",
-    "D3DSPSM_COMP",
-    "D3DSPSM_X2",
-    "D3DSPSM_X2NEG",
-    "D3DSPSM_DZ",
-    "D3DSPSM_DW",
-])
-
 D3DBASISTYPE = Enum("D3DBASISTYPE", [
     "D3DBASIS_BEZIER",
     "D3DBASIS_BSPLINE",
     "D3DBASIS_INTERPOLATE",
 ])
 
-D3DORDERTYPE = Enum("D3DORDERTYPE", [
-    "D3DORDER_LINEAR",
-    "D3DORDER_QUADRATIC",
-    "D3DORDER_CUBIC",
-    "D3DORDER_QUINTIC",
-])
-
-D3DPATCHEDGESTYLE = Enum("D3DPATCHEDGESTYLE", [
-    "D3DPATCHEDGE_DISCRETE",
-    "D3DPATCHEDGE_CONTINUOUS",
-])
-
 D3DSTATEBLOCKTYPE = Enum("D3DSTATEBLOCKTYPE", [
     "D3DSBT_ALL",
     "D3DSBT_PIXELSTATE",
     "D3DSBT_VERTEXSTATE",
 ])
 
-D3DVERTEXBLENDFLAGS = Enum("D3DVERTEXBLENDFLAGS", [
-    "D3DVBF_DISABLE",
-    "D3DVBF_1WEIGHTS",
-    "D3DVBF_2WEIGHTS",
-    "D3DVBF_3WEIGHTS",
-    "D3DVBF_TWEENING",
-    "D3DVBF_0WEIGHTS",
-])
-
-D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [
-    "D3DTTFF_DISABLE",
-    "D3DTTFF_COUNT1",
-    "D3DTTFF_COUNT2",
-    "D3DTTFF_COUNT3",
-    "D3DTTFF_COUNT4",
-    "D3DTTFF_PROJECTED",
-])
-
 D3DDEVTYPE = Enum("D3DDEVTYPE", [
     "D3DDEVTYPE_HAL",
     "D3DDEVTYPE_REF",
@@ -781,11 +658,21 @@ D3DDISPLAYMODE = Struct("D3DDISPLAYMODE", [
     (D3DFORMAT, "Format"),
 ])
 
+D3DCREATE = Flags(DWORD, [
+    "D3DCREATE_FPU_PRESERVE",
+    "D3DCREATE_MULTITHREADED",
+    "D3DCREATE_PUREDEVICE",
+    "D3DCREATE_SOFTWARE_VERTEXPROCESSING",
+    "D3DCREATE_HARDWARE_VERTEXPROCESSING",
+    "D3DCREATE_MIXED_VERTEXPROCESSING",
+    "D3DCREATE_DISABLE_DRIVER_MANAGEMENT",
+])
+
 D3DDEVICE_CREATION_PARAMETERS = Struct("D3DDEVICE_CREATION_PARAMETERS", [
     (UINT, "AdapterOrdinal"),
     (D3DDEVTYPE, "DeviceType"),
     (HWND, "hFocusWindow"),
-    (DWORD, "BehaviorFlags"),
+    (D3DCREATE, "BehaviorFlags"),
 ])
 
 D3DSWAPEFFECT = Enum("D3DSWAPEFFECT", [
@@ -802,11 +689,24 @@ D3DPOOL = Enum("D3DPOOL", [
     "D3DPOOL_SCRATCH",
 ])
 
-D3DPRESENT = Flags(DWORD, [
+D3DPRESENT = FakeEnum(DWORD, [
     "D3DPRESENT_RATE_DEFAULT",
     "D3DPRESENT_RATE_UNLIMITED",
 ])
 
+D3DPRESENTFLAG = Flags(DWORD, [
+    "D3DPRESENTFLAG_LOCKABLE_BACKBUFFER",
+])
+
+D3DPRESENT_INTERVAL = Flags(DWORD, [
+    "D3DPRESENT_INTERVAL_DEFAULT", # 0
+    "D3DPRESENT_INTERVAL_ONE",
+    "D3DPRESENT_INTERVAL_TWO",
+    "D3DPRESENT_INTERVAL_THREE",
+    "D3DPRESENT_INTERVAL_FOUR",
+    "D3DPRESENT_INTERVAL_IMMEDIATE",
+])
+
 D3DPRESENT_PARAMETERS = Struct("D3DPRESENT_PARAMETERS", [
     (UINT, "BackBufferWidth"),
     (UINT, "BackBufferHeight"),
@@ -818,13 +718,9 @@ D3DPRESENT_PARAMETERS = Struct("D3DPRESENT_PARAMETERS", [
     (BOOL, "Windowed"),
     (BOOL, "EnableAutoDepthStencil"),
     (D3DFORMAT, "AutoDepthStencilFormat"),
-    (DWORD, "Flags"),
+    (D3DPRESENTFLAG, "Flags"),
     (UINT, "FullScreen_RefreshRateInHz"),
-    (UINT, "FullScreen_PresentationInterval"),
-])
-
-D3DPRESENTFLAG = Flags(DWORD, [
-    "D3DPRESENTFLAG_LOCKABLE_BACKBUFFER",
+    (D3DPRESENT_INTERVAL, "FullScreen_PresentationInterval"),
 ])
 
 D3DGAMMARAMP = Struct("D3DGAMMARAMP", [
@@ -881,7 +777,7 @@ D3DLOCK = Flags(DWORD, [
 D3DVERTEXBUFFER_DESC = Struct("D3DVERTEXBUFFER_DESC", [
     (D3DFORMAT, "Format"),
     (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
+    (D3DUSAGE, "Usage"),
     (D3DPOOL, "Pool"),
     (UINT, "Size"),
     (DWORD, "FVF"),
@@ -890,7 +786,7 @@ D3DVERTEXBUFFER_DESC = Struct("D3DVERTEXBUFFER_DESC", [
 D3DINDEXBUFFER_DESC = Struct("D3DINDEXBUFFER_DESC", [
     (D3DFORMAT, "Format"),
     (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
+    (D3DUSAGE, "Usage"),
     (D3DPOOL, "Pool"),
     (UINT, "Size"),
 ])
@@ -898,7 +794,7 @@ D3DINDEXBUFFER_DESC = Struct("D3DINDEXBUFFER_DESC", [
 D3DSURFACE_DESC = Struct("D3DSURFACE_DESC", [
     (D3DFORMAT, "Format"),
     (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
+    (D3DUSAGE, "Usage"),
     (D3DPOOL, "Pool"),
     (UINT, "Size"),
     (D3DMULTISAMPLE_TYPE, "MultiSampleType"),
@@ -909,7 +805,7 @@ D3DSURFACE_DESC = Struct("D3DSURFACE_DESC", [
 D3DVOLUME_DESC = Struct("D3DVOLUME_DESC", [
     (D3DFORMAT, "Format"),
     (D3DRESOURCETYPE, "Type"),
-    (DWORD, "Usage"),
+    (D3DUSAGE, "Usage"),
     (D3DPOOL, "Pool"),
     (UINT, "Size"),
     (UINT, "Width"),
@@ -919,7 +815,7 @@ D3DVOLUME_DESC = Struct("D3DVOLUME_DESC", [
 
 D3DLOCKED_RECT = Struct("D3DLOCKED_RECT", [
     (INT, "Pitch"),
-    (PVOID, "pBits"),
+    (LinearPointer(Void, "_MappedSize"), "pBits"),
 ])
 
 D3DBOX = Struct("D3DBOX", [
@@ -934,7 +830,7 @@ D3DBOX = Struct("D3DBOX", [
 D3DLOCKED_BOX = Struct("D3DLOCKED_BOX", [
     (INT, "RowPitch"),
     (INT, "SlicePitch"),
-    (PVOID, "pBits"),
+    (LinearPointer(Void, "_MappedSize"), "pBits"),
 ])
 
 D3DRANGE = Struct("D3DRANGE", [
@@ -976,12 +872,7 @@ D3DRASTER_STATUS = Struct("D3DRASTER_STATUS", [
     (UINT, "ScanLine"),
 ])
 
-D3DDEBUGMONITORTOKENS = Enum("D3DDEBUGMONITORTOKENS", [
-    "D3DDMT_ENABLE",
-    "D3DDMT_DISABLE",
-])
-
-D3DDEVINFOID = Flags(DWORD, [
+D3DDEVINFOID = FakeEnum(DWORD, [
     "D3DDEVINFOID_RESOURCEMANAGER",
     "D3DDEVINFOID_VERTEXSTATS",
 ])