]> git.cworth.org Git - apitrace/blobdiff - retrace/dxgiretrace.py
d3d9state: Dump rendertarget images to JSON.
[apitrace] / retrace / dxgiretrace.py
index 72520c0316c670c7fe857e1db5e4ce0cb1dfffc9..3306d25bf8e77ce256e39bc08d12d8df8e157bce 100644 (file)
@@ -74,23 +74,13 @@ createWindow(DXGI_SWAP_CHAIN_DESC *pSwapChainDesc) {
             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;'
                 self.forceDriver('D3D10_DRIVER_TYPE')
             if function.name.startswith('D3D11CreateDevice'):
                 self.forceDriver('D3D_DRIVER_TYPE')
@@ -190,6 +180,14 @@ createWindow(DXGI_SWAP_CHAIN_DESC *pSwapChainDesc) {
             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>'
@@ -209,8 +207,6 @@ def main():
     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"'