if 'pSwapChainDesc' in function.argNames():
print r' createWindow(pSwapChainDesc);'
- # Compensate for the fact we don't trace the software renderer
- # module LoadLibrary call
- if 'Software' in function.argNames():
- print r' if (Software) {'
- print r' retrace::warning(call) << "using WARP for software device\n";'
- print r' Software = LoadLibraryA("d3d10warp");'
- print r' }'
-
# Compensate for the fact we don't trace DXGI object creation
if function.name.startswith('D3D11CreateDevice'):
print r' if (DriverType == D3D_DRIVER_TYPE_UNKNOWN && !pAdapter) {'
print r' DriverType = D3D_DRIVER_TYPE_HARDWARE;'
print r' }'
- # Force software renderer
if function.name.startswith('D3D10CreateDevice'):
- print r' Flags |= D3D10_CREATE_DEVICE_DEBUG;'
+ # Toggle debugging
+ print r' Flags &= ~D3D10_CREATE_DEVICE_DEBUG;'
+ print r' if (retrace::debug) {'
+ print r' if (LoadLibraryA("d3d10sdklayers")) {'
+ print r' Flags |= D3D10_CREATE_DEVICE_DEBUG;'
+ print r' }'
+ print r' }'
+
+ # Force driver
self.forceDriver('D3D10_DRIVER_TYPE')
+
if function.name.startswith('D3D11CreateDevice'):
+ # Toggle debugging
+ print r' Flags &= ~D3D11_CREATE_DEVICE_DEBUG;'
+ print r' if (retrace::debug) {'
+ print r' if (LoadLibraryA("d3d11sdklayers")) {'
+ print r' Flags |= D3D11_CREATE_DEVICE_DEBUG;'
+ print r' }'
+ print r' }'
+
+ # Force driver
self.forceDriver('D3D_DRIVER_TYPE')
Retracer.invokeFunction(self, function)
print ' _maps[_this] = 0;'
print ' }'
+ # Attach shader byte code for lookup
+ if 'pShaderBytecode' in method.argNames():
+ ppShader = method.args[-1]
+ assert ppShader.output
+ print r' if (retrace::dumpingState && SUCCEEDED(_result)) {'
+ print r' (*%s)->SetPrivateData(d3dstate::GUID_D3DSTATE, BytecodeLength, pShaderBytecode);' % ppShader.name
+ print r' }'
+
def main():
print r'#include <string.h>'
if 'd3d10' in moduleNames:
if 'd3d10_1' in moduleNames:
print r'#include "d3d10_1imports.hpp"'
- # D3D10CreateBlob is duplicated in d3d10 and d3d10_1
- d3d10_1.functions = [function for function in d3d10_1.functions if function.name != 'D3D10CreateBlob']
api.addModule(d3d10_1)
else:
print r'#include "d3d10imports.hpp"'