X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=retrace%2Fdxgiretrace.py;h=95face8b9e2d3be2216c439b8872f08de645ed7b;hb=42b89fc9a180e56dbe55a9816904c84aacb555ea;hp=c7baaf280b701e66f04b3223d97949fd60acd4b1;hpb=436e9e2ddd30c8bef5328eba54684036e87f300b;p=apitrace diff --git a/retrace/dxgiretrace.py b/retrace/dxgiretrace.py index c7baaf2..95face8 100644 --- a/retrace/dxgiretrace.py +++ b/retrace/dxgiretrace.py @@ -88,8 +88,55 @@ createWindow(DXGI_SWAP_CHAIN_DESC *pSwapChainDesc) { print r' DriverType = D3D_DRIVER_TYPE_HARDWARE;' print r' }' + if function.name.startswith('D3D10CreateDevice'): + self.forceDriver('D3D10_DRIVER_TYPE') + if function.name.startswith('D3D11CreateDevice'): + self.forceDriver('D3D_DRIVER_TYPE') + Retracer.invokeFunction(self, function) + def forceDriver(self, enum): + print r' switch (retrace::driver) {' + print r' case retrace::DRIVER_HARDWARE:' + print r' DriverType = %s_HARDWARE;' % enum + print r' Software = NULL;' + print r' break;' + print r' case retrace::DRIVER_SOFTWARE:' + print r' pAdapter = NULL;' + print r' DriverType = %s_WARP;' % enum + print r' Software = NULL;' + print r' break;' + print r' case retrace::DRIVER_REFERENCE:' + print r' pAdapter = NULL;' + print r' DriverType = %s_REFERENCE;' % enum + print r' Software = NULL;' + print r' break;' + print r' case retrace::DRIVER_NULL:' + print r' pAdapter = NULL;' + print r' DriverType = %s_NULL;' % enum + print r' Software = NULL;' + print r' break;' + print r' case retrace::DRIVER_MODULE:' + print r' pAdapter = NULL;' + print r' DriverType = %s_SOFTWARE;' % enum + print r' Software = LoadLibraryA(retrace::driverModule);' + print r' if (!Software) {' + print r' retrace::warning(call) << "failed to load " << retrace::driverModule << "\n";' + print r' }' + print r' break;' + print r' default:' + print r' assert(0);' + print r' /* fall-through */' + print r' case retrace::DRIVER_DEFAULT:' + print r' if (DriverType == %s_SOFTWARE) {' % enum + print r' Software = LoadLibraryA("d3d10warp");' + print r' if (!Software) {' + print r' retrace::warning(call) << "failed to load d3d10warp.dll\n";' + print r' }' + print r' }' + print r' break;' + print r' }' + def invokeInterfaceMethod(self, interface, method): # keep track of the last used device for state dumping if interface.name in ('ID3D10Device', 'ID3D10Device1'):