From: José Fonseca Date: Sun, 18 Nov 2012 09:21:48 +0000 (+0000) Subject: d3d8: Update specs to match d3d9. X-Git-Url: https://git.cworth.org/git?p=apitrace;a=commitdiff_plain;h=cccdffb093041c7dd507e3d523103a0c623c6ddd d3d8: Update specs to match d3d9. And vice versa. --- diff --git a/helpers/d3d9size.hpp b/helpers/d3d9size.hpp index 69b2222..04f5e59 100644 --- a/helpers/d3d9size.hpp +++ b/helpers/d3d9size.hpp @@ -34,159 +34,19 @@ #define _D3D9SIZE_HPP_ -/* We purposedly don't include any D3D header, so that this header can be used - * with all D3D versions. */ - -#include - -#include "os.hpp" - - -static inline size_t -_vertexCount(D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount) -{ - switch (PrimitiveType) { - case D3DPT_POINTLIST: - return PrimitiveCount; - case D3DPT_LINELIST: - return PrimitiveCount*2; - case D3DPT_LINESTRIP: - return PrimitiveCount + 1; - case D3DPT_TRIANGLELIST: - return PrimitiveCount * 3; - case D3DPT_TRIANGLESTRIP: - return PrimitiveCount + 2; - case D3DPT_TRIANGLEFAN: - return PrimitiveCount + 1; - default: - os::log("apitrace: warning: %s: unknown D3DPRIMITIVETYPE %u\n", __FUNCTION__, PrimitiveType); - return 0; - } -} - - -static inline size_t -_vertexDataSize(D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, UINT VertexStride) { - return _vertexCount(PrimitiveType, PrimitiveCount) * VertexStride; -} +#include "d3dcommonsize.hpp" static inline size_t -_indexDataSize(D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, D3DFORMAT IndexDataFormat) { - UINT IndexStride; - switch (IndexDataFormat) { - case D3DFMT_INDEX16: - IndexStride = 2; - break; - case D3DFMT_INDEX32: - IndexStride = 4; - break; - default: - os::log("apitrace: warning: %s: unexpected index D3DFORMAT %u\n", __FUNCTION__, IndexDataFormat); - return 0; - } - return _vertexCount(PrimitiveType, PrimitiveCount) * IndexStride; -} - - -#if DIRECT3D_VERSION >= 0x0800 - -/* - * Return the number of tokens for a given shader. - */ -static inline size_t -_shaderSize(const DWORD *pFunction) -{ - DWORD dwLength = 0; - - while (true) { - DWORD dwToken = pFunction[dwLength++]; - - switch (dwToken & D3DSI_OPCODE_MASK) { - case D3DSIO_COMMENT: - dwLength += (dwToken & D3DSI_COMMENTSIZE_MASK) >> D3DSI_COMMENTSIZE_SHIFT; - break; - - case D3DSIO_END: - if (dwToken != D3DSIO_END) { - os::log("apitrace: warning: %s: malformed END token\n", __FUNCTION__); - } - return dwLength * sizeof *pFunction; - } - } -} - - -static size_t -_getLockSize(D3DFORMAT Format, UINT Width, UINT Height, INT RowPitch, UINT Depth = 1, INT SlicePitch = 0) { - if (Width == 0 || Height == 0 || Depth == 0) { - return 0; +_declCount(const D3DVERTEXELEMENT9 *pVertexElements) { + size_t count = 0; + if (pVertexElements) { + while (pVertexElements[count++].Stream != 0xff) + ; } - - if (RowPitch < 0) { - os::log("apitrace: warning: %s: negative row pitch %i\n", __FUNCTION__, RowPitch); - return 0; - } - - if (SlicePitch < 0) { - os::log("apitrace: warning: %s: negative slice pitch %i\n", __FUNCTION__, SlicePitch); - return 0; - } - - switch ((DWORD)Format) { - case D3DFMT_DXT1: - case D3DFMT_DXT2: - case D3DFMT_DXT3: - case D3DFMT_DXT4: - case D3DFMT_DXT5: - Width = (Width + 3) / 4; - Height = (Height + 3) / 4; - break; - - case D3DFMT_ATI1N: - case D3DFMT_ATI2N: - /* - * Because these are unsupported formats, RowPitch is not set to the - * number of bytes between row of blocks, but instead in such way that - * Height * RowPitch will match the expected size. - */ - break; - - case D3DFMT_UYVY: - case D3DFMT_R8G8_B8G8: - case D3DFMT_YUY2: - case D3DFMT_G8R8_G8B8: - Width = (Width + 1) / 2; - break; - - case D3DFMT_NV12: - return (Height + ((Height + 1) / 2)) * RowPitch; - - case D3DFMT_NULL: - return 0; - - default: - break; - } - - (void)Width; - - size_t size = Height * RowPitch; - - if (Depth > 1) { - size += (Depth - 1) * SlicePitch; - } - - return size; + return count; } - -#endif /* DIRECT3D_VERSION >= 0x0800 */ - - -#if DIRECT3D_VERSION >= 0x0900 - - static inline void _getMapInfo(IDirect3DVertexBuffer9 *pBuffer, UINT OffsetToLock, UINT SizeToLock, void ** ppbData, void * & pLockedData, size_t & MappedSize) { @@ -373,7 +233,4 @@ _getMapInfo(IDirect3DVolumeTexture9 *pTexture, UINT Level, const D3DLOCKED_BOX * } -#endif /* DIRECT3D_VERSION >= 0x0900 */ - - #endif /* _D3D9SIZE_HPP_ */ diff --git a/specs/d3d8.py b/specs/d3d8.py index c835fc5..a6094c2 100644 --- a/specs/d3d8.py +++ b/specs/d3d8.py @@ -29,6 +29,30 @@ from winapi import * from d3d8types import * from d3d8caps import * + +D3DSHADER8 = Blob(Const(DWORD), "_shaderSize(pFunction)") + +D3DSPD = Flags(DWORD, [ + "D3DSPD_IUNKNOWN", +]) + +D3DADAPTER = FakeEnum(UINT, [ + "D3DADAPTER_DEFAULT", +]) + +D3DENUM = FakeEnum(DWORD, [ + "D3DENUM_NO_WHQL_LEVEL", +]) + +D3DSGR = Flags(DWORD, [ + "D3DSGR_NO_CALIBRATION", + "D3DSGR_CALIBRATE", +]) + +D3DCURSOR = Flags(DWORD, [ + "D3DCURSOR_IMMEDIATE_UPDATE", +]) + HRESULT = MAKE_HRESULT(ok = "D3D_OK", errors = [ "D3DERR_WRONGTEXTUREFORMAT", "D3DERR_UNSUPPORTEDCOLOROPERATION", @@ -53,20 +77,6 @@ HRESULT = MAKE_HRESULT(ok = "D3D_OK", errors = [ "D3DERR_DRIVERINVALIDCALL", ]) -D3DADAPTER = FakeEnum(UINT, [ - "D3DADAPTER_DEFAULT", -]) - -D3DCREATE = Flags(DWORD, [ - "D3DCREATE_FPU_PRESERVE", - "D3DCREATE_MULTITHREADED", - "D3DCREATE_PUREDEVICE", - "D3DCREATE_SOFTWARE_VERTEXPROCESSING", - "D3DCREATE_HARDWARE_VERTEXPROCESSING", - "D3DCREATE_MIXED_VERTEXPROCESSING", - "D3DCREATE_DISABLE_DRIVER_MANAGEMENT", -]) - IDirect3D8 = Interface("IDirect3D8", IUnknown) IDirect3DDevice8 = Interface("IDirect3DDevice8", IUnknown) IDirect3DSwapChain8 = Interface("IDirect3DSwapChain8", IUnknown) @@ -94,47 +104,47 @@ PDIRECT3DSURFACE8 = ObjPointer(IDirect3DSurface8) PDIRECT3DVOLUME8 = ObjPointer(IDirect3DVolume8) IDirect3D8.methods += [ - StdMethod(HRESULT, "RegisterSoftwareDevice", [(OpaquePointer(Void), "pInitializeFunction")]), - StdMethod(UINT, "GetAdapterCount", []), - StdMethod(HRESULT, "GetAdapterIdentifier", [(D3DADAPTER, "Adapter"), (DWORD, "Flags"), Out(Pointer(D3DADAPTER_IDENTIFIER8), "pIdentifier")]), - StdMethod(UINT, "GetAdapterModeCount", [(D3DADAPTER, "Adapter")]), - StdMethod(HRESULT, "EnumAdapterModes", [(D3DADAPTER, "Adapter"), (UINT, "Mode"), Out(Pointer(D3DDISPLAYMODE), "pMode")]), - StdMethod(HRESULT, "GetAdapterDisplayMode", [(D3DADAPTER, "Adapter"), Out(Pointer(D3DDISPLAYMODE), "pMode")]), - StdMethod(HRESULT, "CheckDeviceType", [(D3DADAPTER, "Adapter"), (D3DDEVTYPE, "CheckType"), (D3DFORMAT, "DisplayFormat"), (D3DFORMAT, "BackBufferFormat"), (BOOL, "Windowed")]), - StdMethod(HRESULT, "CheckDeviceFormat", [(D3DADAPTER, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (DWORD, "Usage"), (D3DRESOURCETYPE, "RType"), (D3DFORMAT, "CheckFormat")]), - StdMethod(HRESULT, "CheckDeviceMultiSampleType", [(D3DADAPTER, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "SurfaceFormat"), (BOOL, "Windowed"), (D3DMULTISAMPLE_TYPE, "MultiSampleType")]), - StdMethod(HRESULT, "CheckDepthStencilMatch", [(D3DADAPTER, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (D3DFORMAT, "RenderTargetFormat"), (D3DFORMAT, "DepthStencilFormat")]), - StdMethod(HRESULT, "GetDeviceCaps", [(D3DADAPTER, "Adapter"), (D3DDEVTYPE, "DeviceType"), Out(Pointer(D3DCAPS8), "pCaps")]), - StdMethod(HMONITOR, "GetAdapterMonitor", [(D3DADAPTER, "Adapter")]), + StdMethod(HRESULT, "RegisterSoftwareDevice", [(OpaquePointer(Void), "pInitializeFunction")], sideeffects=False), + StdMethod(UINT, "GetAdapterCount", [], sideeffects=False), + StdMethod(HRESULT, "GetAdapterIdentifier", [(D3DADAPTER, "Adapter"), (D3DENUM, "Flags"), Out(Pointer(D3DADAPTER_IDENTIFIER8), "pIdentifier")], sideeffects=False), + StdMethod(UINT, "GetAdapterModeCount", [(D3DADAPTER, "Adapter")], sideeffects=False), + StdMethod(HRESULT, "EnumAdapterModes", [(D3DADAPTER, "Adapter"), (UINT, "Mode"), Out(Pointer(D3DDISPLAYMODE), "pMode")], sideeffects=False), + StdMethod(HRESULT, "GetAdapterDisplayMode", [(D3DADAPTER, "Adapter"), Out(Pointer(D3DDISPLAYMODE), "pMode")], sideeffects=False), + StdMethod(HRESULT, "CheckDeviceType", [(D3DADAPTER, "Adapter"), (D3DDEVTYPE, "CheckType"), (D3DFORMAT, "DisplayFormat"), (D3DFORMAT, "BackBufferFormat"), (BOOL, "Windowed")], sideeffects=False), + StdMethod(HRESULT, "CheckDeviceFormat", [(D3DADAPTER, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (D3DUSAGE, "Usage"), (D3DRESOURCETYPE, "RType"), (D3DFORMAT, "CheckFormat")], sideeffects=False), + StdMethod(HRESULT, "CheckDeviceMultiSampleType", [(D3DADAPTER, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "SurfaceFormat"), (BOOL, "Windowed"), (D3DMULTISAMPLE_TYPE, "MultiSampleType")], sideeffects=False), + StdMethod(HRESULT, "CheckDepthStencilMatch", [(D3DADAPTER, "Adapter"), (D3DDEVTYPE, "DeviceType"), (D3DFORMAT, "AdapterFormat"), (D3DFORMAT, "RenderTargetFormat"), (D3DFORMAT, "DepthStencilFormat")], sideeffects=False), + StdMethod(HRESULT, "GetDeviceCaps", [(D3DADAPTER, "Adapter"), (D3DDEVTYPE, "DeviceType"), Out(Pointer(D3DCAPS8), "pCaps")], sideeffects=False), + StdMethod(HMONITOR, "GetAdapterMonitor", [(D3DADAPTER, "Adapter")], sideeffects=False), StdMethod(HRESULT, "CreateDevice", [(D3DADAPTER, "Adapter"), (D3DDEVTYPE, "DeviceType"), (HWND, "hFocusWindow"), (D3DCREATE, "BehaviorFlags"), Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(PDIRECT3DDEVICE8), "ppReturnedDeviceInterface")]), ] IDirect3DDevice8.methods += [ StdMethod(HRESULT, "TestCooperativeLevel", []), - StdMethod(UINT, "GetAvailableTextureMem", []), + StdMethod(UINT, "GetAvailableTextureMem", [], sideeffects=False), StdMethod(HRESULT, "ResourceManagerDiscardBytes", [(DWORD, "Bytes")]), StdMethod(HRESULT, "GetDirect3D", [Out(Pointer(PDIRECT3D8), "ppD3D8")]), - StdMethod(HRESULT, "GetDeviceCaps", [Out(Pointer(D3DCAPS8), "pCaps")]), - StdMethod(HRESULT, "GetDisplayMode", [Out(Pointer(D3DDISPLAYMODE), "pMode")]), - StdMethod(HRESULT, "GetCreationParameters", [Out(Pointer(D3DDEVICE_CREATION_PARAMETERS), "pParameters")]), + StdMethod(HRESULT, "GetDeviceCaps", [Out(Pointer(D3DCAPS8), "pCaps")], sideeffects=False), + StdMethod(HRESULT, "GetDisplayMode", [Out(Pointer(D3DDISPLAYMODE), "pMode")], sideeffects=False), + StdMethod(HRESULT, "GetCreationParameters", [Out(Pointer(D3DDEVICE_CREATION_PARAMETERS), "pParameters")], sideeffects=False), StdMethod(HRESULT, "SetCursorProperties", [(UINT, "XHotSpot"), (UINT, "YHotSpot"), (PDIRECT3DSURFACE8, "pCursorBitmap")]), # XXX: There are different signatures of # IDirect3DDevice8::SetCursorPosition depending on the DXSDK version - StdMethod(Void, "SetCursorPosition", [(UINT, "XScreenSpace"), (UINT, "YScreenSpace"), (DWORD, "Flags")]), - StdMethod(Void, "SetCursorPosition", [(Int, "X"), (Int, "Y"), (DWORD, "Flags")]), + StdMethod(Void, "SetCursorPosition", [(UINT, "XScreenSpace"), (UINT, "YScreenSpace"), (D3DCURSOR, "Flags")]), + StdMethod(Void, "SetCursorPosition", [(Int, "X"), (Int, "Y"), (D3DCURSOR, "Flags")]), StdMethod(BOOL, "ShowCursor", [(BOOL, "bShow")]), StdMethod(HRESULT, "CreateAdditionalSwapChain", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(PDIRECT3DSWAPCHAIN8), "pSwapChain")]), StdMethod(HRESULT, "Reset", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters")]), StdMethod(HRESULT, "Present", [(ConstPointer(RECT), "pSourceRect"), (ConstPointer(RECT), "pDestRect"), (HWND, "hDestWindowOverride"), (ConstPointer(RGNDATA), "pDirtyRegion")]), StdMethod(HRESULT, "GetBackBuffer", [(UINT, "BackBuffer"), (D3DBACKBUFFER_TYPE, "Type"), Out(Pointer(PDIRECT3DSURFACE8), "ppBackBuffer")]), - StdMethod(HRESULT, "GetRasterStatus", [Out(Pointer(D3DRASTER_STATUS), "pRasterStatus")]), - StdMethod(Void, "SetGammaRamp", [(DWORD, "Flags"), (ConstPointer(D3DGAMMARAMP), "pRamp")]), - StdMethod(Void, "GetGammaRamp", [Out(Pointer(D3DGAMMARAMP), "pRamp")]), - StdMethod(HRESULT, "CreateTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Levels"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DTEXTURE8), "ppTexture")]), - StdMethod(HRESULT, "CreateVolumeTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Depth"), (UINT, "Levels"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVOLUMETEXTURE8), "ppVolumeTexture")]), - StdMethod(HRESULT, "CreateCubeTexture", [(UINT, "EdgeLength"), (UINT, "Levels"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DCUBETEXTURE8), "ppCubeTexture")]), - StdMethod(HRESULT, "CreateVertexBuffer", [(UINT, "Length"), (DWORD, "Usage"), (DWORD, "FVF"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVERTEXBUFFER8), "ppVertexBuffer")]), - StdMethod(HRESULT, "CreateIndexBuffer", [(UINT, "Length"), (DWORD, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DINDEXBUFFER8), "ppIndexBuffer")]), + StdMethod(HRESULT, "GetRasterStatus", [Out(Pointer(D3DRASTER_STATUS), "pRasterStatus")], sideeffects=False), + StdMethod(Void, "SetGammaRamp", [(D3DSGR, "Flags"), (ConstPointer(D3DGAMMARAMP), "pRamp")]), + StdMethod(Void, "GetGammaRamp", [Out(Pointer(D3DGAMMARAMP), "pRamp")], sideeffects=False), + StdMethod(HRESULT, "CreateTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Levels"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DTEXTURE8), "ppTexture")]), + StdMethod(HRESULT, "CreateVolumeTexture", [(UINT, "Width"), (UINT, "Height"), (UINT, "Depth"), (UINT, "Levels"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVOLUMETEXTURE8), "ppVolumeTexture")]), + StdMethod(HRESULT, "CreateCubeTexture", [(UINT, "EdgeLength"), (UINT, "Levels"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DCUBETEXTURE8), "ppCubeTexture")]), + StdMethod(HRESULT, "CreateVertexBuffer", [(UINT, "Length"), (D3DUSAGE, "Usage"), (D3DFVF, "FVF"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DVERTEXBUFFER8), "ppVertexBuffer")]), + StdMethod(HRESULT, "CreateIndexBuffer", [(UINT, "Length"), (D3DUSAGE, "Usage"), (D3DFORMAT, "Format"), (D3DPOOL, "Pool"), Out(Pointer(PDIRECT3DINDEXBUFFER8), "ppIndexBuffer")]), StdMethod(HRESULT, "CreateRenderTarget", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), (BOOL, "Lockable"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurface")]), StdMethod(HRESULT, "CreateDepthStencilSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), (D3DMULTISAMPLE_TYPE, "MultiSample"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurface")]), StdMethod(HRESULT, "CreateImageSurface", [(UINT, "Width"), (UINT, "Height"), (D3DFORMAT, "Format"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurface")]), @@ -148,20 +158,20 @@ IDirect3DDevice8.methods += [ StdMethod(HRESULT, "EndScene", []), StdMethod(HRESULT, "Clear", [(DWORD, "Count"), (ConstPointer(D3DRECT), "pRects"), (D3DCLEAR, "Flags"), (D3DCOLOR, "Color"), (Float, "Z"), (DWORD, "Stencil")]), StdMethod(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]), - StdMethod(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "State"), Out(Pointer(D3DMATRIX), "pMatrix")]), + StdMethod(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "State"), Out(Pointer(D3DMATRIX), "pMatrix")], sideeffects=False), StdMethod(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]), StdMethod(HRESULT, "SetViewport", [(ConstPointer(D3DVIEWPORT8), "pViewport")]), - StdMethod(HRESULT, "GetViewport", [Out(Pointer(D3DVIEWPORT8), "pViewport")]), + StdMethod(HRESULT, "GetViewport", [Out(Pointer(D3DVIEWPORT8), "pViewport")], sideeffects=False), StdMethod(HRESULT, "SetMaterial", [(ConstPointer(D3DMATERIAL8), "pMaterial")]), - StdMethod(HRESULT, "GetMaterial", [Out(Pointer(D3DMATERIAL8), "pMaterial")]), + StdMethod(HRESULT, "GetMaterial", [Out(Pointer(D3DMATERIAL8), "pMaterial")], sideeffects=False), StdMethod(HRESULT, "SetLight", [(DWORD, "Index"), (ConstPointer(D3DLIGHT8), "pLight")]), - StdMethod(HRESULT, "GetLight", [(DWORD, "Index"), Out(Pointer(D3DLIGHT8), "pLight")]), + StdMethod(HRESULT, "GetLight", [(DWORD, "Index"), Out(Pointer(D3DLIGHT8), "pLight")], sideeffects=False), StdMethod(HRESULT, "LightEnable", [(DWORD, "Index"), (BOOL, "Enable")]), - StdMethod(HRESULT, "GetLightEnable", [(DWORD, "Index"), Out(Pointer(BOOL), "pEnable")]), + StdMethod(HRESULT, "GetLightEnable", [(DWORD, "Index"), Out(Pointer(BOOL), "pEnable")], sideeffects=False), StdMethod(HRESULT, "SetClipPlane", [(DWORD, "Index"), (ConstPointer(Float), "pPlane")]), - StdMethod(HRESULT, "GetClipPlane", [(DWORD, "Index"), Out(Pointer(Float), "pPlane")]), - StdMethod(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "State"), (DWORD, "Value")]), - StdMethod(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "State"), Out(Pointer(DWORD), "pValue")]), + StdMethod(HRESULT, "GetClipPlane", [(DWORD, "Index"), Out(Pointer(Float), "pPlane")], sideeffects=False), + StdMethod(HRESULT, "SetRenderState", [(D3DRENDERSTATETYPE, "State"), (D3DRENDERSTATEVALUE, "Value")]), + StdMethod(HRESULT, "GetRenderState", [(D3DRENDERSTATETYPE, "State"), Out(Pointer(D3DRENDERSTATEVALUE), "pValue")], sideeffects=False), StdMethod(HRESULT, "BeginStateBlock", []), StdMethod(HRESULT, "EndStateBlock", [Out(Pointer(DWORD), "pToken")]), StdMethod(HRESULT, "ApplyStateBlock", [(DWORD, "Token")]), @@ -169,41 +179,41 @@ IDirect3DDevice8.methods += [ StdMethod(HRESULT, "DeleteStateBlock", [(DWORD, "Token")]), StdMethod(HRESULT, "CreateStateBlock", [(D3DSTATEBLOCKTYPE, "Type"), Out(Pointer(DWORD), "pToken")]), StdMethod(HRESULT, "SetClipStatus", [(ConstPointer(D3DCLIPSTATUS8), "pClipStatus")]), - StdMethod(HRESULT, "GetClipStatus", [Out(Pointer(D3DCLIPSTATUS8), "pClipStatus")]), + StdMethod(HRESULT, "GetClipStatus", [Out(Pointer(D3DCLIPSTATUS8), "pClipStatus")], sideeffects=False), StdMethod(HRESULT, "GetTexture", [(DWORD, "Stage"), Out(Pointer(PDIRECT3DBASETEXTURE8), "ppTexture")]), StdMethod(HRESULT, "SetTexture", [(DWORD, "Stage"), (PDIRECT3DBASETEXTURE8, "pTexture")]), - StdMethod(HRESULT, "GetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), Out(Pointer(DWORD), "pValue")]), - StdMethod(HRESULT, "SetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), (DWORD, "Value")]), + StdMethod(HRESULT, "GetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), Out(Pointer(D3DTEXTURESTAGESTATEVALUE), "pValue")], sideeffects=False), + StdMethod(HRESULT, "SetTextureStageState", [(DWORD, "Stage"), (D3DTEXTURESTAGESTATETYPE, "Type"), (D3DTEXTURESTAGESTATEVALUE, "Value")]), StdMethod(HRESULT, "ValidateDevice", [Out(Pointer(DWORD), "pNumPasses")]), - StdMethod(HRESULT, "GetInfo", [(DWORD, "DevInfoID"), Out(OpaquePointer(Void), "pDevInfoStruct"), (DWORD, "DevInfoStructSize")]), + StdMethod(HRESULT, "GetInfo", [(D3DDEVINFOID, "DevInfoID"), Out(OpaqueBlob(Void, "DevInfoStructSize"), "pDevInfoStruct"), (DWORD, "DevInfoStructSize")], sideeffects=False), StdMethod(HRESULT, "SetPaletteEntries", [(UINT, "PaletteNumber"), (ConstPointer(PALETTEENTRY), "pEntries")]), - StdMethod(HRESULT, "GetPaletteEntries", [(UINT, "PaletteNumber"), Out(Pointer(PALETTEENTRY), "pEntries")]), + StdMethod(HRESULT, "GetPaletteEntries", [(UINT, "PaletteNumber"), Out(Pointer(PALETTEENTRY), "pEntries")], sideeffects=False), StdMethod(HRESULT, "SetCurrentTexturePalette", [(UINT, "PaletteNumber")]), - StdMethod(HRESULT, "GetCurrentTexturePalette", [Out(Pointer(UINT), "PaletteNumber")]), + StdMethod(HRESULT, "GetCurrentTexturePalette", [Out(Pointer(UINT), "PaletteNumber")], sideeffects=False), StdMethod(HRESULT, "DrawPrimitive", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "StartVertex"), (UINT, "PrimitiveCount")]), StdMethod(HRESULT, "DrawIndexedPrimitive", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "minIndex"), (UINT, "NumVertices"), (UINT, "startIndex"), (UINT, "primCount")]), - StdMethod(HRESULT, "DrawPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]), - StdMethod(HRESULT, "DrawIndexedPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "MinVertexIndex"), (UINT, "NumVertexIndices"), (UINT, "PrimitiveCount"), (OpaquePointer(Const(Void)), "pIndexData"), (D3DFORMAT, "IndexDataFormat"), (OpaquePointer(Const(Void)), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]), - StdMethod(HRESULT, "ProcessVertices", [(UINT, "SrcStartIndex"), (UINT, "DestIndex"), (UINT, "VertexCount"), (PDIRECT3DVERTEXBUFFER8, "pDestBuffer"), (DWORD, "Flags")]), - StdMethod(HRESULT, "CreateVertexShader", [(ConstPointer(DWORD), "pDeclaration"), (ConstPointer(DWORD), "pFunction"), Out(Pointer(DWORD), "pHandle"), (DWORD, "Usage")]), + StdMethod(HRESULT, "DrawPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "PrimitiveCount"), (Blob(Const(Void), "_vertexDataSize(PrimitiveType, PrimitiveCount, VertexStreamZeroStride)"), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]), + StdMethod(HRESULT, "DrawIndexedPrimitiveUP", [(D3DPRIMITIVETYPE, "PrimitiveType"), (UINT, "MinVertexIndex"), (UINT, "NumVertexIndices"), (UINT, "PrimitiveCount"), (Blob(Const(Void), "_indexDataSize(PrimitiveType, PrimitiveCount, IndexDataFormat)"), "pIndexData"), (D3DFORMAT, "IndexDataFormat"), (Blob(Const(Void), "NumVertexIndices*VertexStreamZeroStride"), "pVertexStreamZeroData"), (UINT, "VertexStreamZeroStride")]), + StdMethod(HRESULT, "ProcessVertices", [(UINT, "SrcStartIndex"), (UINT, "DestIndex"), (UINT, "VertexCount"), (PDIRECT3DVERTEXBUFFER8, "pDestBuffer"), (D3DPV, "Flags")]), + StdMethod(HRESULT, "CreateVertexShader", [(Array(Const(DWORD), "_declCount(pDeclaration)"), "pDeclaration"), (D3DSHADER8, "pFunction"), Out(Pointer(DWORD), "pHandle"), (D3DUSAGE, "Usage")]), StdMethod(HRESULT, "SetVertexShader", [(DWORD, "Handle")]), - StdMethod(HRESULT, "GetVertexShader", [Out(Pointer(DWORD), "pHandle")]), + StdMethod(HRESULT, "GetVertexShader", [Out(Pointer(DWORD), "pHandle")], sideeffects=False), StdMethod(HRESULT, "DeleteVertexShader", [(DWORD, "Handle")]), - StdMethod(HRESULT, "SetVertexShaderConstant", [(DWORD, "Register"), (OpaquePointer(Const(Void)), "pConstantData"), (DWORD, "ConstantCount")]), - StdMethod(HRESULT, "GetVertexShaderConstant", [(DWORD, "Register"), Out(OpaquePointer(Void), "pConstantData"), (DWORD, "ConstantCount")]), - StdMethod(HRESULT, "GetVertexShaderDeclaration", [(DWORD, "Handle"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]), - StdMethod(HRESULT, "GetVertexShaderFunction", [(DWORD, "Handle"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]), + StdMethod(HRESULT, "SetVertexShaderConstant", [(DWORD, "Register"), (Blob(Const(Void), "ConstantCount*4*sizeof(float)"), "pConstantData"), (DWORD, "ConstantCount")]), + StdMethod(HRESULT, "GetVertexShaderConstant", [(DWORD, "Register"), Out(OpaqueBlob(Void, "ConstantCount*4*sizeof(float)"), "pConstantData"), (DWORD, "ConstantCount")], sideeffects=False), + StdMethod(HRESULT, "GetVertexShaderDeclaration", [(DWORD, "Handle"), Out(OpaqueBlob(Void, "*pSizeOfData"), "pData"), Out(Pointer(DWORD), "pSizeOfData")]), + StdMethod(HRESULT, "GetVertexShaderFunction", [(DWORD, "Handle"), Out(OpaqueBlob(Void, "*pSizeOfData"), "pData"), Out(Pointer(DWORD), "pSizeOfData")]), StdMethod(HRESULT, "SetStreamSource", [(UINT, "StreamNumber"), (PDIRECT3DVERTEXBUFFER8, "pStreamData"), (UINT, "Stride")]), StdMethod(HRESULT, "GetStreamSource", [(UINT, "StreamNumber"), Out(Pointer(PDIRECT3DVERTEXBUFFER8), "ppStreamData"), Out(Pointer(UINT), "pStride")]), StdMethod(HRESULT, "SetIndices", [(PDIRECT3DINDEXBUFFER8, "pIndexData"), (UINT, "BaseVertexIndex")]), StdMethod(HRESULT, "GetIndices", [Out(Pointer(PDIRECT3DINDEXBUFFER8), "ppIndexData"), Out(Pointer(UINT), "pBaseVertexIndex")]), - StdMethod(HRESULT, "CreatePixelShader", [(ConstPointer(DWORD), "pFunction"), Out(Pointer(DWORD), "pHandle")]), + StdMethod(HRESULT, "CreatePixelShader", [(D3DSHADER8, "pFunction"), Out(Pointer(DWORD), "pHandle")]), StdMethod(HRESULT, "SetPixelShader", [(DWORD, "Handle")]), - StdMethod(HRESULT, "GetPixelShader", [Out(Pointer(DWORD), "pHandle")]), + StdMethod(HRESULT, "GetPixelShader", [Out(Pointer(DWORD), "pHandle")], sideeffects=False), StdMethod(HRESULT, "DeletePixelShader", [(DWORD, "Handle")]), - StdMethod(HRESULT, "SetPixelShaderConstant", [(DWORD, "Register"), (OpaquePointer(Const(Void)), "pConstantData"), (DWORD, "ConstantCount")]), - StdMethod(HRESULT, "GetPixelShaderConstant", [(DWORD, "Register"), Out(OpaquePointer(Void), "pConstantData"), (DWORD, "ConstantCount")]), - StdMethod(HRESULT, "GetPixelShaderFunction", [(DWORD, "Handle"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]), + StdMethod(HRESULT, "SetPixelShaderConstant", [(DWORD, "Register"), (Blob(Const(Void), "ConstantCount*4*sizeof(float)"), "pConstantData"), (DWORD, "ConstantCount")]), + StdMethod(HRESULT, "GetPixelShaderConstant", [(DWORD, "Register"), Out(OpaqueBlob(Void, "ConstantCount*4*sizeof(float)"), "pConstantData"), (DWORD, "ConstantCount")], sideeffects=False), + StdMethod(HRESULT, "GetPixelShaderFunction", [(DWORD, "Handle"), Out(OpaqueBlob(Void, "*pSizeOfData"), "pData"), Out(Pointer(DWORD), "pSizeOfData")], sideeffects=False), StdMethod(HRESULT, "DrawRectPatch", [(UINT, "Handle"), (ConstPointer(Float), "pNumSegs"), (ConstPointer(D3DRECTPATCH_INFO), "pRectPatchInfo")]), StdMethod(HRESULT, "DrawTriPatch", [(UINT, "Handle"), (ConstPointer(Float), "pNumSegs"), (ConstPointer(D3DTRIPATCH_INFO), "pTriPatchInfo")]), StdMethod(HRESULT, "DeletePatch", [(UINT, "Handle")]), @@ -216,76 +226,76 @@ IDirect3DSwapChain8.methods += [ IDirect3DResource8.methods += [ StdMethod(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE8), "ppDevice")]), - StdMethod(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (DWORD, "Flags")]), - StdMethod(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]), - StdMethod(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]), + StdMethod(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaqueBlob(Const(Void), "SizeOfData"), "pData"), (DWORD, "SizeOfData"), (D3DSPD, "Flags")], sideeffects=False), + StdMethod(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaqueBlob(Void, "*pSizeOfData"), "pData"), Out(Pointer(DWORD), "pSizeOfData")], sideeffects=False), + StdMethod(HRESULT, "FreePrivateData", [(REFGUID, "refguid")], sideeffects=False), StdMethod(DWORD, "SetPriority", [(DWORD, "PriorityNew")]), - StdMethod(DWORD, "GetPriority", []), + StdMethod(DWORD, "GetPriority", [], sideeffects=False), StdMethod(Void, "PreLoad", []), - StdMethod(D3DRESOURCETYPE, "GetType", []), + StdMethod(D3DRESOURCETYPE, "GetType", [], sideeffects=False), ] IDirect3DBaseTexture8.methods += [ StdMethod(DWORD, "SetLOD", [(DWORD, "LODNew")]), - StdMethod(DWORD, "GetLOD", []), - StdMethod(DWORD, "GetLevelCount", []), + StdMethod(DWORD, "GetLOD", [], sideeffects=False), + StdMethod(DWORD, "GetLevelCount", [], sideeffects=False), ] IDirect3DTexture8.methods += [ - StdMethod(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")]), + StdMethod(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")], sideeffects=False), StdMethod(HRESULT, "GetSurfaceLevel", [(UINT, "Level"), Out(Pointer(PDIRECT3DSURFACE8), "ppSurfaceLevel")]), - StdMethod(HRESULT, "LockRect", [(UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (DWORD, "Flags")]), + StdMethod(HRESULT, "LockRect", [(UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (D3DLOCK, "Flags")]), StdMethod(HRESULT, "UnlockRect", [(UINT, "Level")]), StdMethod(HRESULT, "AddDirtyRect", [(ConstPointer(RECT), "pDirtyRect")]), ] IDirect3DVolumeTexture8.methods += [ - StdMethod(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DVOLUME_DESC), "pDesc")]), + StdMethod(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DVOLUME_DESC), "pDesc")], sideeffects=False), StdMethod(HRESULT, "GetVolumeLevel", [(UINT, "Level"), Out(Pointer(PDIRECT3DVOLUME8), "ppVolumeLevel")]), - StdMethod(HRESULT, "LockBox", [(UINT, "Level"), Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (DWORD, "Flags")]), + StdMethod(HRESULT, "LockBox", [(UINT, "Level"), Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (D3DLOCK, "Flags")]), StdMethod(HRESULT, "UnlockBox", [(UINT, "Level")]), StdMethod(HRESULT, "AddDirtyBox", [(ConstPointer(D3DBOX), "pDirtyBox")]), ] IDirect3DCubeTexture8.methods += [ - StdMethod(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")]), + StdMethod(HRESULT, "GetLevelDesc", [(UINT, "Level"), Out(Pointer(D3DSURFACE_DESC), "pDesc")], sideeffects=False), StdMethod(HRESULT, "GetCubeMapSurface", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level"), Out(Pointer(PDIRECT3DSURFACE8), "ppCubeMapSurface")]), - StdMethod(HRESULT, "LockRect", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (DWORD, "Flags")]), + StdMethod(HRESULT, "LockRect", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level"), Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (D3DLOCK, "Flags")]), StdMethod(HRESULT, "UnlockRect", [(D3DCUBEMAP_FACES, "FaceType"), (UINT, "Level")]), StdMethod(HRESULT, "AddDirtyRect", [(D3DCUBEMAP_FACES, "FaceType"), (ConstPointer(RECT), "pDirtyRect")]), ] IDirect3DVertexBuffer8.methods += [ - StdMethod(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(Pointer(BYTE)), "ppbData"), (DWORD, "Flags")]), + StdMethod(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(LinearPointer(BYTE, "_MappedSize")), "ppbData"), (D3DLOCK, "Flags")]), StdMethod(HRESULT, "Unlock", []), - StdMethod(HRESULT, "GetDesc", [Out(Pointer(D3DVERTEXBUFFER_DESC), "pDesc")]), + StdMethod(HRESULT, "GetDesc", [Out(Pointer(D3DVERTEXBUFFER_DESC), "pDesc")], sideeffects=False), ] IDirect3DIndexBuffer8.methods += [ - StdMethod(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(Pointer(BYTE)), "ppbData"), (DWORD, "Flags")]), + StdMethod(HRESULT, "Lock", [(UINT, "OffsetToLock"), (UINT, "SizeToLock"), Out(Pointer(LinearPointer(BYTE, "_MappedSize")), "ppbData"), (D3DLOCK, "Flags")]), StdMethod(HRESULT, "Unlock", []), - StdMethod(HRESULT, "GetDesc", [Out(Pointer(D3DINDEXBUFFER_DESC), "pDesc")]), + StdMethod(HRESULT, "GetDesc", [Out(Pointer(D3DINDEXBUFFER_DESC), "pDesc")], sideeffects=False), ] IDirect3DSurface8.methods += [ StdMethod(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE8), "ppDevice")]), - StdMethod(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (DWORD, "Flags")]), - StdMethod(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]), - StdMethod(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]), + StdMethod(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaqueBlob(Const(Void), "SizeOfData"), "pData"), (DWORD, "SizeOfData"), (D3DSPD, "Flags")], sideeffects=False), + StdMethod(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaqueBlob(Void, "*pSizeOfData"), "pData"), Out(Pointer(DWORD), "pSizeOfData")], sideeffects=False), + StdMethod(HRESULT, "FreePrivateData", [(REFGUID, "refguid")], sideeffects=False), StdMethod(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppContainer")]), - StdMethod(HRESULT, "GetDesc", [Out(Pointer(D3DSURFACE_DESC), "pDesc")]), - StdMethod(HRESULT, "LockRect", [Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (DWORD, "Flags")]), + StdMethod(HRESULT, "GetDesc", [Out(Pointer(D3DSURFACE_DESC), "pDesc")], sideeffects=False), + StdMethod(HRESULT, "LockRect", [Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (D3DLOCK, "Flags")]), StdMethod(HRESULT, "UnlockRect", []), ] IDirect3DVolume8.methods += [ StdMethod(HRESULT, "GetDevice", [Out(Pointer(PDIRECT3DDEVICE8), "ppDevice")]), - StdMethod(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaquePointer(Const(Void)), "pData"), (DWORD, "SizeOfData"), (DWORD, "Flags")]), - StdMethod(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaquePointer(Void), "pData"), Out(Pointer(DWORD), "pSizeOfData")]), - StdMethod(HRESULT, "FreePrivateData", [(REFGUID, "refguid")]), + StdMethod(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaqueBlob(Const(Void), "SizeOfData"), "pData"), (DWORD, "SizeOfData"), (D3DSPD, "Flags")], sideeffects=False), + StdMethod(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaqueBlob(Void, "*pSizeOfData"), "pData"), Out(Pointer(DWORD), "pSizeOfData")], sideeffects=False), + StdMethod(HRESULT, "FreePrivateData", [(REFGUID, "refguid")], sideeffects=False), StdMethod(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppContainer")]), - StdMethod(HRESULT, "GetDesc", [Out(Pointer(D3DVOLUME_DESC), "pDesc")]), - StdMethod(HRESULT, "LockBox", [Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (DWORD, "Flags")]), + StdMethod(HRESULT, "GetDesc", [Out(Pointer(D3DVOLUME_DESC), "pDesc")], sideeffects=False), + StdMethod(HRESULT, "LockBox", [Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (D3DLOCK, "Flags")]), StdMethod(HRESULT, "UnlockBox", []), ] diff --git a/specs/d3d8caps.py b/specs/d3d8caps.py index 87e7625..1af1a19 100644 --- a/specs/d3d8caps.py +++ b/specs/d3d8caps.py @@ -47,15 +47,6 @@ D3DCAPS3 = Flags(DWORD, [ "D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD", ]) -D3DPRESENT_INTERVAL = Flags(DWORD, [ - "D3DPRESENT_INTERVAL_DEFAULT", - "D3DPRESENT_INTERVAL_ONE", - "D3DPRESENT_INTERVAL_TWO", - "D3DPRESENT_INTERVAL_THREE", - "D3DPRESENT_INTERVAL_FOUR", - "D3DPRESENT_INTERVAL_IMMEDIATE", -]) - D3DCURSORCAPS = Flags(DWORD, [ "D3DCURSORCAPS_COLOR", "D3DCURSORCAPS_LOWRES", @@ -276,7 +267,6 @@ D3DPS_VERSION = DWORD #]) D3DVS_VERSION = DWORD - D3DCAPS8 = Struct("D3DCAPS8", [ (D3DDEVTYPE, "DeviceType"), (UINT, "AdapterOrdinal"), diff --git a/specs/d3d8types.py b/specs/d3d8types.py index 9d400fe..7843d59 100644 --- a/specs/d3d8types.py +++ b/specs/d3d8types.py @@ -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", ]) diff --git a/specs/d3d9.py b/specs/d3d9.py index a3b40d1..59b0eda 100644 --- a/specs/d3d9.py +++ b/specs/d3d9.py @@ -359,7 +359,7 @@ IDirect3DIndexBuffer9.methods += [ ] IDirect3DSurface9.methods += [ - StdMethod(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppContainer")], sideeffects=False), + StdMethod(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppContainer")]), StdMethod(HRESULT, "GetDesc", [Out(Pointer(D3DSURFACE_DESC), "pDesc")], sideeffects=False), StdMethod(HRESULT, "LockRect", [Out(Pointer(D3DLOCKED_RECT), "pLockedRect"), (ConstPointer(RECT), "pRect"), (D3DLOCK, "Flags")]), StdMethod(HRESULT, "UnlockRect", []), @@ -372,7 +372,7 @@ IDirect3DVolume9.methods += [ StdMethod(HRESULT, "SetPrivateData", [(REFGUID, "refguid"), (OpaqueBlob(Const(Void), "SizeOfData"), "pData"), (DWORD, "SizeOfData"), (D3DSPD, "Flags")], sideeffects=False), StdMethod(HRESULT, "GetPrivateData", [(REFGUID, "refguid"), Out(OpaqueBlob(Void, "*pSizeOfData"), "pData"), Out(Pointer(DWORD), "pSizeOfData")], sideeffects=False), StdMethod(HRESULT, "FreePrivateData", [(REFGUID, "refguid")], sideeffects=False), - StdMethod(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppContainer")], sideeffects=False), + StdMethod(HRESULT, "GetContainer", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppContainer")]), StdMethod(HRESULT, "GetDesc", [Out(Pointer(D3DVOLUME_DESC), "pDesc")], sideeffects=False), StdMethod(HRESULT, "LockBox", [Out(Pointer(D3DLOCKED_BOX), "pLockedVolume"), (ConstPointer(D3DBOX), "pBox"), (D3DLOCK, "Flags")]), StdMethod(HRESULT, "UnlockBox", []), diff --git a/specs/d3d9types.py b/specs/d3d9types.py index 41b6890..6c9a8ba 100644 --- a/specs/d3d9types.py +++ b/specs/d3d9types.py @@ -463,6 +463,15 @@ D3DTEXTURETRANSFORMFLAGS = Enum("D3DTEXTURETRANSFORMFLAGS", [ "D3DTTFF_PROJECTED", ]) +D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [ + "D3DTEXF_NONE", + "D3DTEXF_POINT", + "D3DTEXF_LINEAR", + "D3DTEXF_ANISOTROPIC", + "D3DTEXF_PYRAMIDALQUAD", + "D3DTEXF_GAUSSIANQUAD", + "D3DTEXF_CONVOLUTIONMONO", +]) D3DTEXTURESTAGESTATETYPE, D3DTEXTURESTAGESTATEVALUE = EnumPolymorphic("D3DTEXTURESTAGESTATETYPE", "Type", [ ("D3DTSS_COLOROP", D3DTEXTUREOP), @@ -475,7 +484,7 @@ D3DTEXTURESTAGESTATETYPE, D3DTEXTURESTAGESTATEVALUE = EnumPolymorphic("D3DTEXTUR ("D3DTSS_BUMPENVMAT01", FLOAT_AS_DWORD), ("D3DTSS_BUMPENVMAT10", FLOAT_AS_DWORD), ("D3DTSS_BUMPENVMAT11", FLOAT_AS_DWORD), - ("D3DTSS_TEXCOORDINDEX", D3DTSS_TCI,), + ("D3DTSS_TEXCOORDINDEX", D3DTSS_TCI), ("D3DTSS_BUMPENVLSCALE", FLOAT_AS_DWORD), ("D3DTSS_BUMPENVLOFFSET", FLOAT_AS_DWORD), ("D3DTSS_TEXTURETRANSFORMFLAGS", D3DTEXTURETRANSFORMFLAGS), @@ -485,16 +494,6 @@ D3DTEXTURESTAGESTATETYPE, D3DTEXTURESTAGESTATEVALUE = EnumPolymorphic("D3DTEXTUR ("D3DTSS_CONSTANT", D3DCOLOR), ], DWORD) -D3DTEXTUREFILTERTYPE = Enum("D3DTEXTUREFILTERTYPE", [ - "D3DTEXF_NONE", - "D3DTEXF_POINT", - "D3DTEXF_LINEAR", - "D3DTEXF_ANISOTROPIC", - "D3DTEXF_PYRAMIDALQUAD", - "D3DTEXF_GAUSSIANQUAD", - "D3DTEXF_CONVOLUTIONMONO", -]) - D3DSAMPLERSTATETYPE, D3DSAMPLERSTATEVALUE = EnumPolymorphic("D3DSAMPLERSTATETYPE", "Type", [ ("D3DSAMP_ADDRESSU", D3DTEXTUREADDRESS), ("D3DSAMP_ADDRESSV", D3DTEXTUREADDRESS), @@ -617,11 +616,6 @@ D3DVERTEXELEMENT9 = Struct("D3DVERTEXELEMENT9", [ (BYTE, "UsageIndex"), ]) -D3DSHADER_ADDRESSMODE_TYPE = Enum("D3DSHADER_ADDRESSMODE_TYPE", [ - "D3DSHADER_ADDRMODE_ABSOLUTE", - "D3DSHADER_ADDRMODE_RELATIVE", -]) - D3DBASISTYPE = Enum("D3DBASISTYPE", [ "D3DBASIS_BEZIER", "D3DBASIS_BSPLINE", @@ -848,9 +842,17 @@ D3DRESOURCETYPE = Enum("D3DRESOURCETYPE", [ D3DUSAGE = Flags(DWORD, [ "D3DUSAGE_RENDERTARGET", "D3DUSAGE_DEPTHSTENCIL", + "D3DUSAGE_WRITEONLY", + "D3DUSAGE_SOFTWAREPROCESSING", + "D3DUSAGE_DONOTCLIP", + "D3DUSAGE_POINTS", + "D3DUSAGE_RTPATCHES", + "D3DUSAGE_NPATCHES", "D3DUSAGE_DYNAMIC", - "D3DUSAGE_NONSECURE", "D3DUSAGE_AUTOGENMIPMAP", + "D3DUSAGE_RESTRICTED_CONTENT", + "D3DUSAGE_RESTRICT_SHARED_RESOURCE", + "D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER", "D3DUSAGE_DMAP", "D3DUSAGE_QUERY_LEGACYBUMPMAP", "D3DUSAGE_QUERY_SRGBREAD", @@ -859,16 +861,8 @@ D3DUSAGE = Flags(DWORD, [ "D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING", "D3DUSAGE_QUERY_VERTEXTEXTURE", "D3DUSAGE_QUERY_WRAPANDMIP", - "D3DUSAGE_WRITEONLY", - "D3DUSAGE_SOFTWAREPROCESSING", - "D3DUSAGE_DONOTCLIP", - "D3DUSAGE_POINTS", - "D3DUSAGE_RTPATCHES", - "D3DUSAGE_NPATCHES", + "D3DUSAGE_NONSECURE", "D3DUSAGE_TEXTAPI", - "D3DUSAGE_RESTRICTED_CONTENT", - "D3DUSAGE_RESTRICT_SHARED_RESOURCE", - "D3DUSAGE_RESTRICT_SHARED_RESOURCE_DRIVER", ]) D3DCUBEMAP_FACES = Enum("D3DCUBEMAP_FACES", [ diff --git a/wrappers/d3d8trace.py b/wrappers/d3d8trace.py index 2abaf4e..fd2c8f5 100644 --- a/wrappers/d3d8trace.py +++ b/wrappers/d3d8trace.py @@ -26,31 +26,62 @@ from dlltrace import DllTracer from specs.stdapi import API -from specs.d3d8 import d3d8 +from specs.d3d8 import d3d8, D3DSHADER8 class D3D8Tracer(DllTracer): def serializeArgValue(self, function, arg): # Dump shaders as strings - if function.name in ('CreateVertexShader', 'CreatePixelShader') and arg.name == 'pFunction': + if arg.type is D3DSHADER8: print ' DumpShader(trace::localWriter, %s);' % (arg.name) return DllTracer.serializeArgValue(self, function, arg) + def enumWrapperInterfaceVariables(self, interface): + variables = DllTracer.enumWrapperInterfaceVariables(self, interface) + + # Add additional members to track locks + if interface.getMethodByName('Lock') is not None or \ + interface.getMethodByName('LockRect') is not None or \ + interface.getMethodByName('LockBox') is not None: + variables += [ + ('size_t', '_MappedSize', '0'), + ('VOID *', 'm_pbData', '0'), + ] + + return variables + + def implementWrapperInterfaceMethodBody(self, interface, base, method): + if method.name in ('Unlock', 'UnlockRect', 'UnlockBox'): + print ' if (_MappedSize && m_pbData) {' + self.emit_memcpy('(LPBYTE)m_pbData', '(LPBYTE)m_pbData', '_MappedSize') + print ' }' + + DllTracer.implementWrapperInterfaceMethodBody(self, interface, base, method) + + if method.name in ('Lock', 'LockRect', 'LockBox'): + # FIXME: handle recursive locks + print ' if (SUCCEEDED(_result) && !(Flags & D3DLOCK_READONLY)) {' + print ' _getMapInfo(_this, %s, m_pbData, _MappedSize);' % ', '.join(method.argNames()[:-1]) + print ' } else {' + print ' m_pbData = NULL;' + print ' _MappedSize = 0;' + print ' }' + if __name__ == '__main__': print '#define INITGUID' print + print '#include "trace_writer_local.hpp"' + print '#include "os.hpp"' + print print '#include ' print '#include ' + print '#include "d3d8size.hpp"' print '#include "d3d9shader.hpp"' print - print '#include "trace_writer_local.hpp"' - print '#include "os.hpp"' - print - api = API() api.addModule(d3d8) diff --git a/wrappers/d3d9trace.py b/wrappers/d3d9trace.py index 2a4c1a9..f3236e7 100644 --- a/wrappers/d3d9trace.py +++ b/wrappers/d3d9trace.py @@ -84,17 +84,6 @@ if __name__ == '__main__': print '#include "d3d9shader.hpp"' print '#include "dxvaint.h"' print - print ''' -static inline size_t -_declCount(const D3DVERTEXELEMENT9 *pVertexElements) { - size_t count = 0; - if (pVertexElements) { - while (pVertexElements[count++].Stream != 0xff) - ; - } - return count; -} -''' api = API() api.addModule(d3d9)