]> git.cworth.org Git - apitrace/blobdiff - retrace/dxgiretrace.py
d3dretrace: Add state dumping support for ID3D11DeviceContext1
[apitrace] / retrace / dxgiretrace.py
index 69bc3bac0966fe27c4cd08a5bacba013dd197ec8..d6d7e96d3c9454a6523ba177b00be5dfac9af6d4 100644 (file)
@@ -156,7 +156,7 @@ createWindow(DXGI_SWAP_CHAIN_DESC *pSwapChainDesc) {
                 print r'    d3d10Dumper.unbindDevice(_this);'
             else:
                 print r'    d3d10Dumper.bindDevice(_this);'
-        if interface.name in ('ID3D11DeviceContext',):
+        if interface.name in ('ID3D11DeviceContext', 'ID3D11DeviceContext1'):
             if method.name == 'Release':
                 print r'    d3d11Dumper.unbindDevice(_this);'
             else:
@@ -244,8 +244,17 @@ createWindow(DXGI_SWAP_CHAIN_DESC *pSwapChainDesc) {
             '''
             print r'    _result = _this->CreateTexture2D(&Desc, &InitialData, (ID3D10Texture2D**)ppResource);'
             self.checkResult(method.type)
-        else:
-            Retracer.invokeInterfaceMethod(self, interface, method)
+            return
+
+        if method.name == 'Map':
+            # Reset _DO_NOT_WAIT flags. Otherwise they may fail, and we have no
+            # way to cope with it (other than retry).
+            mapFlagsArg = method.getArgByName('MapFlags')
+            for flag in mapFlagsArg.type.values:
+                if flag.endswith('_MAP_FLAG_DO_NOT_WAIT'):
+                    print r'    MapFlags &= ~%s;' % flag
+
+        Retracer.invokeInterfaceMethod(self, interface, method)
 
         # process events after presents
         if method.name == 'Present':