X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=d3d8.py;h=f579a9b40617733f19d243d6532bc8e73a759cd0;hb=ed40bc699e44f810d27c7e50d396f7749c8cc9c2;hp=fdf788f9ab19f8f9146fc14aa5c267a9eeb1edd7;hpb=f2efceaae999b2c5b9f2a6561915f9765e22dcc7;p=apitrace diff --git a/d3d8.py b/d3d8.py index fdf788f..f579a9b 100644 --- a/d3d8.py +++ b/d3d8.py @@ -28,6 +28,7 @@ from winapi import * from d3d8types import * from d3d8caps import * +from trace import DllTracer HRESULT = Enum("HRESULT", [ "D3D_OK", @@ -105,6 +106,9 @@ IDirect3DDevice8.methods += [ Method(HRESULT, "GetDisplayMode", [Out(Pointer(D3DDISPLAYMODE), "pMode")]), Method(HRESULT, "GetCreationParameters", [Out(Pointer(D3DDEVICE_CREATION_PARAMETERS), "pParameters")]), Method(HRESULT, "SetCursorProperties", [(UINT, "XHotSpot"), (UINT, "YHotSpot"), (PDIRECT3DSURFACE8, "pCursorBitmap")]), + # XXX: There are different signatures of + # IDirect3DDevice8::SetCursorPosition depending on the DXSDK version + Method(Void, "SetCursorPosition", [(UINT, "XScreenSpace"), (UINT, "YScreenSpace"), (DWORD, "Flags")]), Method(Void, "SetCursorPosition", [(Int, "X"), (Int, "Y"), (DWORD, "Flags")]), Method(BOOL, "ShowCursor", [(BOOL, "bShow")]), Method(HRESULT, "CreateAdditionalSwapChain", [Out(Pointer(D3DPRESENT_PARAMETERS), "pPresentationParameters"), Out(Pointer(PDIRECT3DSWAPCHAIN8), "pSwapChain")]), @@ -130,7 +134,7 @@ IDirect3DDevice8.methods += [ Method(HRESULT, "GetDepthStencilSurface", [Out(Pointer(PDIRECT3DSURFACE8), "ppZStencilSurface")]), Method(HRESULT, "BeginScene", []), Method(HRESULT, "EndScene", []), - Method(HRESULT, "Clear", [(DWORD, "Count"), (ConstPointer(D3DRECT), "pRects"), (DWORD, "Flags"), (D3DCOLOR, "Color"), (Float, "Z"), (DWORD, "Stencil")]), + Method(HRESULT, "Clear", [(DWORD, "Count"), (ConstPointer(D3DRECT), "pRects"), (D3DCLEAR, "Flags"), (D3DCOLOR, "Color"), (Float, "Z"), (DWORD, "Stencil")]), Method(HRESULT, "SetTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]), Method(HRESULT, "GetTransform", [(D3DTRANSFORMSTATETYPE, "State"), Out(Pointer(D3DMATRIX), "pMatrix")]), Method(HRESULT, "MultiplyTransform", [(D3DTRANSFORMSTATETYPE, "State"), (ConstPointer(D3DMATRIX), "pMatrix")]), @@ -273,17 +277,31 @@ IDirect3DVolume8.methods += [ Method(HRESULT, "UnlockBox", []), ] -d3d8 = Dll("d3d8") -d3d8.functions += [ +d3d8 = API("d3d8") +d3d8.add_functions([ StdFunction(PDIRECT3D8, "Direct3DCreate8", [(UINT, "SDKVersion")]), -] +]) + + +class D3D8Tracer(DllTracer): + + def dump_arg_instance(self, function, arg): + # Dump shaders as strings + if function.name in ('CreateVertexShader', 'CreatePixelShader') and arg.name == 'pFunction': + print ' DumpShader(Trace::localWriter, %s);' % (arg.name) + return + + DllTracer.dump_arg_instance(self, function, arg) + if __name__ == '__main__': print '#include ' - print '#include ' print '#include ' + print '#include "d3dshader.hpp"' print - print '#include "trace_write.hpp"' + print '#include "trace_writer.hpp"' + print '#include "os.hpp"' print - wrap() + tracer = D3D8Tracer('d3d8.dll') + tracer.trace_api(d3d8)