X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=retrace%2Fd3d9retrace.py;h=db92377e624b8895d0aed87f057352902119bc0b;hb=cbb86175e81c2765f14fa01a2dc49d367203ac1f;hp=0ddcf277e1117df1f9c12f5e6785cf3642d58997;hpb=73341c2fc4c5d70ccca9871043edfd588477d8b8;p=apitrace diff --git a/retrace/d3d9retrace.py b/retrace/d3d9retrace.py index 0ddcf27..db92377 100644 --- a/retrace/d3d9retrace.py +++ b/retrace/d3d9retrace.py @@ -62,6 +62,11 @@ class D3DRetracer(Retracer): print r' d3d9Dumper.unbindDevice(_this);' else: print r' d3d9Dumper.bindDevice(_this);' + if interface.name in ('IDirect3DDevice8', 'IDirect3DDevice8Ex'): + if method.name == 'Release': + print r' d3d8Dumper.unbindDevice(_this);' + else: + print r' d3d8Dumper.bindDevice(_this);' # create windows as neccessary if method.name in ('CreateDevice', 'CreateDeviceEx', 'CreateAdditionalSwapChain'): @@ -69,6 +74,31 @@ class D3DRetracer(Retracer): print r' pPresentationParameters->hDeviceWindow = hWnd;' if 'hFocusWindow' in method.argNames(): print r' hFocusWindow = hWnd;' + + if method.name in ('CreateDevice', 'CreateDeviceEx'): + print r' switch (retrace::driver) {' + print r' case retrace::DRIVER_HARDWARE:' + print r' DeviceType = D3DDEVTYPE_HAL;' + print r' break;' + print r' case retrace::DRIVER_SOFTWARE:' + print r' case retrace::DRIVER_REFERENCE:' + print r' DeviceType = D3DDEVTYPE_REF;' + print r' break;' + print r' case retrace::DRIVER_NULL:' + if interface.name.startswith('IDirect3D9'): + print r' DeviceType = D3DDEVTYPE_NULLREF;' + else: + print r' retrace::warning(call) << "null driver not supported\n";' + print r' break;' + print r' case retrace::DRIVER_MODULE:' + print r' retrace::warning(call) << "driver module not supported\n";' + print r' break;' + print r' default:' + print r' assert(0);' + print r' /* fall-through */' + print r' case retrace::DRIVER_DEFAULT:' + print r' break;' + print r' }' if method.name in ('Reset', 'ResetEx'): print r' if (pPresentationParameters->Windowed) {' @@ -91,6 +121,7 @@ class D3DRetracer(Retracer): # process events after presents if method.name == 'Present': print r' d3dretrace::processEvents();' + print r' Sleep(500);' if method.name in ('Lock', 'LockRect', 'LockBox'): print ' VOID *_pbData = NULL;' @@ -120,7 +151,7 @@ def main(): print moduleName = sys.argv[1] - support = bool(sys.argv[2]) + support = int(sys.argv[2]) api = API() @@ -135,12 +166,11 @@ def main(): print elif moduleName == 'd3d8': from specs.d3d8 import d3d8 - print r'#include ' - print r'#include ' + print r'#include "d3d8imports.hpp"' print r'#include "d3d8size.hpp"' api.addModule(d3d8) print - #print '''static d3dretrace::D3DDumper d3d8Dumper;''' + print '''static d3dretrace::D3DDumper d3d8Dumper;''' print else: assert False