From f541754558ae0c910b3fc59e81b814a3c4a390c8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Fri, 28 Oct 2011 00:15:09 +0100 Subject: [PATCH] More tweaks/cleanups to D3D9 spec. --- d3d9trace.py | 11 +++ specs/d3d9.py | 2 +- specs/d3d9types.py | 220 ++------------------------------------------- 3 files changed, 20 insertions(+), 213 deletions(-) diff --git a/d3d9trace.py b/d3d9trace.py index 5b83c03..e6bf000 100644 --- a/d3d9trace.py +++ b/d3d9trace.py @@ -46,6 +46,17 @@ if __name__ == '__main__': print '#include "d3d9imports.hpp"' print '#include "d3dshader.hpp"' print + print ''' +static inline size_t +_declCount(const D3DVERTEXELEMENT9 *pVertexElements) { + size_t count = 0; + if (pVertexElements) { + while (pVertexElements[count++].Stream != 0xff) + ; + } + return count; +} +''' tracer = D3D9Tracer('d3d9.dll') tracer.trace_api(d3d9) diff --git a/specs/d3d9.py b/specs/d3d9.py index ad20ef1..fb662f7 100644 --- a/specs/d3d9.py +++ b/specs/d3d9.py @@ -254,7 +254,7 @@ IDirect3DDevice9.methods += [ Method(HRESULT, "DrawPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]), Method(HRESULT, "DrawIndexedPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "MinVertexIndex"), (UINT, "NumVertices"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pIndexData"), (D3DFORMAT, "IndexDataFormat"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]), Method(HRESULT, "ProcessVertices", [(UINT, "SrcStartIndex"), (UINT, "DestIndex"), (UINT, "VertexCount"), (PDIRECT3DVERTEXBUFFER9, "pDestBuffer"), (PDIRECT3DVERTEXDECLARATION9, "pVertexDecl"), (D3DPV, "Flags")]), - Method(HRESULT, "CreateVertexDeclaration", [(ConstPointer(D3DVERTEXELEMENT9), "pVertexElements"), Out(Pointer(PDIRECT3DVERTEXDECLARATION9), "ppDecl")]), + Method(HRESULT, "CreateVertexDeclaration", [(Array(Const(D3DVERTEXELEMENT9), "_declCount(pVertexElements)"), "pVertexElements"), Out(Pointer(PDIRECT3DVERTEXDECLARATION9), "ppDecl")]), Method(HRESULT, "SetVertexDeclaration", [(PDIRECT3DVERTEXDECLARATION9, "pDecl")]), Method(HRESULT, "GetVertexDeclaration", [Out(Pointer(PDIRECT3DVERTEXDECLARATION9), "ppDecl")]), Method(HRESULT, "SetFVF", [(D3DFVF, "FVF")]), diff --git a/specs/d3d9types.py b/specs/d3d9types.py index b99fa90..cc9ac65 100644 --- a/specs/d3d9types.py +++ b/specs/d3d9types.py @@ -1,5 +1,6 @@ ########################################################################## # +# Copyright 2011 Jose Fonseca # Copyright 2008-2009 VMware, Inc. # All Rights Reserved. # @@ -408,7 +409,7 @@ D3DRENDERSTATETYPE = Enum("D3DRENDERSTATETYPE", [ ]) D3DTSS_TCI = Flags(DWORD, [ - #"D3DTSS_TCI_PASSTHRU", 0 + #"D3DTSS_TCI_PASSTHRU", # 0 "D3DTSS_TCI_CAMERASPACENORMAL", "D3DTSS_TCI_CAMERASPACEPOSITION", "D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR", @@ -571,7 +572,7 @@ D3DFVF = Flags(DWORD, [ #"D3DFVF_TEXCOORDSIZE4(3)", ]) -D3DDECLUSAGE = Enum("D3DDECLUSAGE", [ +D3DDECLUSAGE = FakeEnum(BYTE, [ "D3DDECLUSAGE_POSITION", "D3DDECLUSAGE_BLENDWEIGHT", "D3DDECLUSAGE_BLENDINDICES", @@ -588,7 +589,7 @@ D3DDECLUSAGE = Enum("D3DDECLUSAGE", [ "D3DDECLUSAGE_SAMPLE", ]) -D3DDECLMETHOD = Enum("D3DDECLMETHOD", [ +D3DDECLMETHOD = FakeEnum(BYTE, [ "D3DDECLMETHOD_DEFAULT", "D3DDECLMETHOD_PARTIALU", "D3DDECLMETHOD_PARTIALV", @@ -598,7 +599,7 @@ D3DDECLMETHOD = Enum("D3DDECLMETHOD", [ "D3DDECLMETHOD_LOOKUPPRESAMPLED", ]) -D3DDECLTYPE = Enum("D3DDECLTYPE", [ +D3DDECLTYPE = FakeEnum(BYTE, [ "D3DDECLTYPE_FLOAT1", "D3DDECLTYPE_FLOAT2", "D3DDECLTYPE_FLOAT3", @@ -622,222 +623,17 @@ D3DDECLTYPE = Enum("D3DDECLTYPE", [ D3DVERTEXELEMENT9 = Struct("D3DVERTEXELEMENT9", [ (WORD, "Stream"), (WORD, "Offset"), - (BYTE, "Type"), - (BYTE, "Method"), - (BYTE, "Usage"), + (D3DDECLTYPE, "Type"), # BYTE + (D3DDECLMETHOD, "Method"), # BYTE + (D3DDECLUSAGE, "Usage"), # BYTE (BYTE, "UsageIndex"), ]) -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_CALL", - "D3DSIO_CALLNZ", - "D3DSIO_LOOP", - "D3DSIO_RET", - "D3DSIO_ENDLOOP", - "D3DSIO_LABEL", - "D3DSIO_DCL", - "D3DSIO_POW", - "D3DSIO_CRS", - "D3DSIO_SGN", - "D3DSIO_ABS", - "D3DSIO_NRM", - "D3DSIO_SINCOS", - "D3DSIO_REP", - "D3DSIO_ENDREP", - "D3DSIO_IF", - "D3DSIO_IFC", - "D3DSIO_ELSE", - "D3DSIO_ENDIF", - "D3DSIO_BREAK", - "D3DSIO_BREAKC", - "D3DSIO_MOVA", - "D3DSIO_DEFB", - "D3DSIO_DEFI", - "D3DSIO_TEXCOORD", - "D3DSIO_TEXKILL", - "D3DSIO_TEX", - "D3DSIO_TEXBEM", - "D3DSIO_TEXBEML", - "D3DSIO_TEXREG2AR", - "D3DSIO_TEXREG2GB", - "D3DSIO_TEXM3x2PAD", - "D3DSIO_TEXM3x2TEX", - "D3DSIO_TEXM3x3PAD", - "D3DSIO_TEXM3x3TEX", - "D3DSIO_RESERVED0", - "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_DP2ADD", - "D3DSIO_DSX", - "D3DSIO_DSY", - "D3DSIO_TEXLDD", - "D3DSIO_SETP", - "D3DSIO_TEXLDL", - "D3DSIO_BREAKP", - "D3DSIO_PHASE", - "D3DSIO_COMMENT", - "D3DSIO_END", -]) - -D3DSHADER_COMPARISON = Enum("D3DSHADER_COMPARISON", [ - "D3DSPC_RESERVED0", - "D3DSPC_GT", - "D3DSPC_EQ", - "D3DSPC_GE", - "D3DSPC_LT", - "D3DSPC_NE", - "D3DSPC_LE", - "D3DSPC_RESERVED1", -]) - -D3DSAMPLER_TEXTURE_TYPE = Enum("D3DSAMPLER_TEXTURE_TYPE", [ - "D3DSTT_UNKNOWN", - "D3DSTT_2D", - "D3DSTT_CUBE", - "D3DSTT_VOLUME", -]) - -D3DSP = Flags(DWORD, [ - "D3DSP_WRITEMASK_0", - "D3DSP_WRITEMASK_1", - "D3DSP_WRITEMASK_2", - "D3DSP_WRITEMASK_3", - "D3DSP_WRITEMASK_ALL", -]) - -D3DSHADER_PARAM_DSTMOD_TYPE = Flags(DWORD, [ - "D3DSPDM_NONE", - "D3DSPDM_SATURATE", - "D3DSPDM_PARTIALPRECISION", - "D3DSPDM_MSAMPCENTROID", -]) - -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|D3DSPR_OUTPUT", - "D3DSPR_CONSTINT", - "D3DSPR_COLOROUT", - "D3DSPR_DEPTHOUT", - "D3DSPR_SAMPLER", - "D3DSPR_CONST2", - "D3DSPR_CONST3", - "D3DSPR_CONST4", - "D3DSPR_CONSTBOOL", - "D3DSPR_LOOP", - "D3DSPR_TEMPFLOAT16", - "D3DSPR_MISCTYPE", - "D3DSPR_LABEL", - "D3DSPR_PREDICATE", -]) - -D3DSHADER_MISCTYPE_OFFSETS = Enum("D3DSHADER_MISCTYPE_OFFSETS", [ - "D3DSMO_POSITION", - "D3DSMO_FACE", -]) - -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", -]) - D3DSHADER_ADDRESSMODE_TYPE = Enum("D3DSHADER_ADDRESSMODE_TYPE", [ "D3DSHADER_ADDRMODE_ABSOLUTE", "D3DSHADER_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", - "D3DSPSM_ABS", - "D3DSPSM_ABSNEG", - "D3DSPSM_NOT", -]) - D3DBASISTYPE = Enum("D3DBASISTYPE", [ "D3DBASIS_BEZIER", "D3DBASIS_BSPLINE", -- 2.43.0