]> git.cworth.org Git - apitrace/commitdiff
d3d8: Update specs to match d3d9.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Sun, 18 Nov 2012 09:21:48 +0000 (09:21 +0000)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Sun, 18 Nov 2012 09:21:48 +0000 (09:21 +0000)
And vice versa.

helpers/d3d9size.hpp
specs/d3d8.py
specs/d3d8caps.py
specs/d3d8types.py
specs/d3d9.py
specs/d3d9types.py
wrappers/d3d8trace.py
wrappers/d3d9trace.py

index 69b2222c067effa030b81d598677a1b7f2860bb1..04f5e593768bd45e4f3cd143c6207f48fedbf3b7 100644 (file)
 #define _D3D9SIZE_HPP_
 
 
-/* We purposedly don't include any D3D header, so that this header can be used
- * with all D3D versions. */
-
-#include <assert.h>
-
-#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_ */
index c835fc5036ee8213b1e0179c17164ef260750327..a6094c2e1cab0df608bd3c38c53a49ec4e631886 100644 (file)
@@ -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", []),
 ]
 
index 87e762549262dc515bd4eb24ea07e9b7f93a6775..1af1a19f03bb5c6ab7390468f1fe3c4ba0033ec2 100644 (file)
@@ -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"),
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",
 ])
index a3b40d119e299c7b530ee61bcdde2c405471a1e5..59b0eda65cd4c39aa91e74de32480b91fb2e4abc 100644 (file)
@@ -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", []),
index 41b689036216bed84a3ad47b3e72877e4cb1fef1..6c9a8ba14ce450ab73507fb567235a813b0de46a 100644 (file)
@@ -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", [
index 2abaf4e54f27923f45bfa66964ebacfe6a53c624..fd2c8f5303fc759c7712f03cdef8c235f7bc3e0c 100644 (file)
 
 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 <windows.h>'
     print '#include <d3d8.h>'
+    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)
index 2a4c1a93d824503164d15e36b0796a7c105cec59..f3236e729b64d34c5e400aeb7855a894f49ffdbe 100644 (file)
@@ -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)