def serializeArgValue(self, function, arg): # Dump shaders as strings if arg.type is D3DSHADER9: print ' DumpShader(trace::localWriter, %s);' % (arg.name) return DllTracer.serializeArgValue(self, function, arg)
def serializeArgValue(self, function, arg): # Dump shaders as strings if isinstance(arg.type, stdapi.Blob) and arg.name.startswith('pShaderBytecode'): print ' DumpShader(trace::localWriter, %s, %s);' % (arg.name, arg.type.size) return DllTracer.serializeArgValue(self, function, arg)
def serializeArgValue(self, function, arg): # Dump shaders as strings if arg.type is D3DSHADER8: print(' DumpShader(trace::localWriter, %s);' % (arg.name)) return DllTracer.serializeArgValue(self, function, arg)
def serializeArgValue(self, function, arg): # Dump shaders as strings if function.name in ('CreateVertexShader', 'CreatePixelShader') and arg.name == 'pFunction': print ' DumpShader(trace::localWriter, %s);' % (arg.name) return DllTracer.serializeArgValue(self, function, arg)
def serializeArgValue(self, function, arg): # Dump shaders as strings if function.name in ("CreateVertexShader", "CreatePixelShader") and arg.name == "pFunction": print " DumpShader(trace::localWriter, %s);" % (arg.name) return DllTracer.serializeArgValue(self, function, arg)
def serializeArgValue(self, function, arg): # Dump shaders as strings if isinstance(arg.type, stdapi.Blob) and arg.name.startswith('pShaderBytecode'): print ' DumpShader(trace::localWriter, %s, %s);' % (arg.name, arg.type.size) return DllTracer.serializeArgValue(self, function, arg)
def serializeArgValue(self, function, arg): # Dump shaders as strings if function.name in ('CreateVertexShader', 'CreatePixelShader') and arg.name == 'pFunction': print ' DumpShader(trace::localWriter, %s);' % (arg.name) return DllTracer.serializeArgValue(self, function, arg)
def serializeArgValue(self, function, arg): # Dump shaders as strings if isinstance(arg.type, stdapi.Blob) and arg.name.startswith('pShaderBytecode'): print ' DumpShader(trace::localWriter, %s, %s);' % ( arg.name, arg.type.size) return # Serialize the swapchain dimensions if function.name == 'CreateSwapChain' and arg.name == 'pDesc' \ or arg.name == 'pSwapChainDesc': print r' DXGI_SWAP_CHAIN_DESC *_pSwapChainDesc = NULL;' print r' DXGI_SWAP_CHAIN_DESC _SwapChainDesc;' print r' if (%s) {' % arg.name print r' _SwapChainDesc = *%s;' % arg.name if function.name != 'CreateSwapChain' or not self.interface.name.endswith( 'DWM'): # Obtain size from the window print r' RECT _rect;' print r' if (GetClientRect(%s->OutputWindow, &_rect)) {' % arg.name print r' if (%s->BufferDesc.Width == 0) {' % arg.name print r' _SwapChainDesc.BufferDesc.Width = _rect.right - _rect.left;' print r' }' print r' if (%s->BufferDesc.Height == 0) {' % arg.name print r' _SwapChainDesc.BufferDesc.Height = _rect.bottom - _rect.top;' print r' }' print r' }' else: # Obtain size from the output print r' DXGI_OUTPUT_DESC _OutputDesc;' print r' if (SUCCEEDED(pOutput->GetDesc(&_OutputDesc))) {' print r' _SwapChainDesc.BufferDesc.Width = _OutputDesc.DesktopCoordinates.right - _OutputDesc.DesktopCoordinates.left;' print r' _SwapChainDesc.BufferDesc.Height = _OutputDesc.DesktopCoordinates.bottom - _OutputDesc.DesktopCoordinates.top;' print r' }' print r' _pSwapChainDesc = &_SwapChainDesc;' print r' }' self.serializeValue(arg.type, '_pSwapChainDesc') return # Serialize object names # http://blogs.msdn.com/b/chuckw/archive/2010/04/15/object-naming.aspx if function.name == 'SetPrivateData' and arg.name == 'pData': iid = function.args[0].name print r' if (%s == WKPDID_D3DDebugObjectName) {' % iid print r' trace::localWriter.writeString(static_cast<const char *>(pData), DataSize);' print r' } else {' DllTracer.serializeArgValue(self, function, arg) print r' }' return DllTracer.serializeArgValue(self, function, arg)
def serializeArgValue(self, function, arg): # Dump shaders as strings if isinstance(arg.type, stdapi.Blob) and arg.name.startswith('pShaderBytecode'): print ' DumpShader(trace::localWriter, %s, %s);' % (arg.name, arg.type.size) return # Serialize the swapchain dimensions if function.name == 'CreateSwapChain' and arg.name == 'pDesc' \ or arg.name == 'pSwapChainDesc': print r' DXGI_SWAP_CHAIN_DESC *_pSwapChainDesc = NULL;' print r' DXGI_SWAP_CHAIN_DESC _SwapChainDesc;' print r' if (%s) {' % arg.name print r' _SwapChainDesc = *%s;' % arg.name if function.name != 'CreateSwapChain' or not self.interface.name.endswith('DWM'): # Obtain size from the window print r' RECT _rect;' print r' if (GetClientRect(%s->OutputWindow, &_rect)) {' % arg.name print r' if (%s->BufferDesc.Width == 0) {' % arg.name print r' _SwapChainDesc.BufferDesc.Width = _rect.right - _rect.left;' print r' }' print r' if (%s->BufferDesc.Height == 0) {' % arg.name print r' _SwapChainDesc.BufferDesc.Height = _rect.bottom - _rect.top;' print r' }' print r' }' else: # Obtain size from the output print r' DXGI_OUTPUT_DESC _OutputDesc;' print r' if (SUCCEEDED(pOutput->GetDesc(&_OutputDesc))) {' print r' _SwapChainDesc.BufferDesc.Width = _OutputDesc.DesktopCoordinates.right - _OutputDesc.DesktopCoordinates.left;' print r' _SwapChainDesc.BufferDesc.Height = _OutputDesc.DesktopCoordinates.bottom - _OutputDesc.DesktopCoordinates.top;' print r' }' print r' _pSwapChainDesc = &_SwapChainDesc;' print r' }' self.serializeValue(arg.type, '_pSwapChainDesc') return # Serialize object names # http://blogs.msdn.com/b/chuckw/archive/2010/04/15/object-naming.aspx if function.name == 'SetPrivateData' and arg.name == 'pData': iid = function.args[0].name print r' if (%s == WKPDID_D3DDebugObjectName) {' % iid print r' trace::localWriter.writeString(static_cast<const char *>(pData), DataSize);' print r' } else {' DllTracer.serializeArgValue(self, function, arg) print r' }' return DllTracer.serializeArgValue(self, function, arg)
def serializeArgValue(self, function, arg): # Dump shaders as strings if isinstance(arg.type, stdapi.Blob) and arg.name.startswith('pShaderBytecode'): print ' DumpShader(trace::localWriter, %s, %s);' % ( arg.name, arg.type.size) return # Serialize the swapchain dimensions if function.name == 'CreateSwapChain' and arg.name == 'pDesc' \ or arg.name == 'pSwapChainDesc': print r' DXGI_SWAP_CHAIN_DESC *_pSwapChainDesc = NULL;' print r' DXGI_SWAP_CHAIN_DESC _SwapChainDesc;' print r' if (%s) {' % arg.name print r' _SwapChainDesc = *%s;' % arg.name if function.name != 'CreateSwapChain' or not self.interface.name.endswith( 'DWM'): # Obtain size from the window print r' RECT _rect;' print r' if (GetClientRect(%s->OutputWindow, &_rect)) {' % arg.name print r' if (%s->BufferDesc.Width == 0) {' % arg.name print r' _SwapChainDesc.BufferDesc.Width = _rect.right - _rect.left;' print r' }' print r' if (%s->BufferDesc.Height == 0) {' % arg.name print r' _SwapChainDesc.BufferDesc.Height = _rect.bottom - _rect.top;' print r' }' print r' }' else: # Obtain size from the output print r' DXGI_OUTPUT_DESC _OutputDesc;' print r' if (SUCCEEDED(pOutput->GetDesc(&_OutputDesc))) {' print r' _SwapChainDesc.BufferDesc.Width = _OutputDesc.DesktopCoordinates.right - _OutputDesc.DesktopCoordinates.left;' print r' _SwapChainDesc.BufferDesc.Height = _OutputDesc.DesktopCoordinates.bottom - _OutputDesc.DesktopCoordinates.top;' print r' }' print r' _pSwapChainDesc = &_SwapChainDesc;' print r' }' self.serializeValue(arg.type, '_pSwapChainDesc') return DllTracer.serializeArgValue(self, function, arg)
def serializeArgValue(self, function, arg): # Dump shaders as strings if isinstance(arg.type, stdapi.Blob) and arg.name.startswith('pShaderBytecode'): print ' DumpShader(trace::localWriter, %s, %s);' % (arg.name, arg.type.size) return # Serialize the swapchain dimensions if function.name == 'CreateSwapChain' and arg.name == 'pDesc' \ or arg.name == 'pSwapChainDesc': print r' DXGI_SWAP_CHAIN_DESC *_pSwapChainDesc = NULL;' print r' DXGI_SWAP_CHAIN_DESC _SwapChainDesc;' print r' if (%s) {' % arg.name print r' _SwapChainDesc = *%s;' % arg.name if function.name != 'CreateSwapChain' or not self.interface.name.endswith('DWM'): # Obtain size from the window print r' RECT _rect;' print r' if (GetClientRect(%s->OutputWindow, &_rect)) {' % arg.name print r' if (%s->BufferDesc.Width == 0) {' % arg.name print r' _SwapChainDesc.BufferDesc.Width = _rect.right - _rect.left;' print r' }' print r' if (%s->BufferDesc.Height == 0) {' % arg.name print r' _SwapChainDesc.BufferDesc.Height = _rect.bottom - _rect.top;' print r' }' print r' }' else: # Obtain size from the output print r' DXGI_OUTPUT_DESC _OutputDesc;' print r' if (SUCCEEDED(pOutput->GetDesc(&_OutputDesc))) {' print r' _SwapChainDesc.BufferDesc.Width = _OutputDesc.DesktopCoordinates.right - _OutputDesc.DesktopCoordinates.left;' print r' _SwapChainDesc.BufferDesc.Height = _OutputDesc.DesktopCoordinates.bottom - _OutputDesc.DesktopCoordinates.top;' print r' }' print r' _pSwapChainDesc = &_SwapChainDesc;' print r' }' self.serializeValue(arg.type, '_pSwapChainDesc') return DllTracer.serializeArgValue(self, function, arg)
def serializeArgValue(self, function, arg): # Dump shaders as strings if isinstance(arg.type, stdapi.Blob) and arg.name.startswith('pShaderBytecode'): print(' DumpShader(trace::localWriter, %s, %s);' % (arg.name, arg.type.size)) return # Serialize the swap-chain dimensions if function.name.startswith('CreateSwapChain') and arg.name == 'pDesc' \ or arg.name == 'pSwapChainDesc': assert isinstance(arg.type, stdapi.Pointer) descType = arg.type.type.mutable() print(r' %s *_pSwapChainDesc = nullptr;' % descType) print(r' %s _SwapChainDesc;' % descType) print(r' if (%s) {' % arg.name) print(r' _SwapChainDesc = *%s;' % arg.name) if self.interface is not None and self.interface.name.endswith( 'DWM'): # Obtain size from the output print(r' assert(pOutput);') print(r' DXGI_OUTPUT_DESC _OutputDesc;') print( r' if (SUCCEEDED(pOutput->GetDesc(&_OutputDesc))) {' ) print( r' _SwapChainDesc.BufferDesc.Width = _OutputDesc.DesktopCoordinates.right - _OutputDesc.DesktopCoordinates.left;' ) print( r' _SwapChainDesc.BufferDesc.Height = _OutputDesc.DesktopCoordinates.bottom - _OutputDesc.DesktopCoordinates.top;' ) print(r' }') elif function.name == 'CreateSwapChainForHwnd': # Obtain size from the window print(r' RECT _rect;') print(r' if (GetClientRect(hWnd, &_rect)) {') print(r' if (%s->Width == 0) {' % arg.name) print( r' _SwapChainDesc.Width = _rect.right - _rect.left;' ) print(r' }') print(r' if (%s->Height == 0) {' % arg.name) print( r' _SwapChainDesc.Height = _rect.bottom - _rect.top;' ) print(r' }') print(r' }') elif function.name.startswith('CreateSwapChainFor'): # TODO pass else: # Obtain size from the window print(r' RECT _rect;') print( r' if (GetClientRect(%s->OutputWindow, &_rect)) {' % arg.name) print(r' if (%s->BufferDesc.Width == 0) {' % arg.name) print( r' _SwapChainDesc.BufferDesc.Width = _rect.right - _rect.left;' ) print(r' }') print(r' if (%s->BufferDesc.Height == 0) {' % arg.name) print( r' _SwapChainDesc.BufferDesc.Height = _rect.bottom - _rect.top;' ) print(r' }') print(r' }') print(r' _pSwapChainDesc = &_SwapChainDesc;') print(r' }') self.serializeValue(arg.type, '_pSwapChainDesc') return # Serialize object names if function.name == 'SetPrivateData' and arg.name == 'pData': iid = function.args[0].name print(r' if (%s == WKPDID_D3DDebugObjectName) {' % iid) print( r' trace::localWriter.writeString(static_cast<const char *>(pData), DataSize);' ) print(r' } else {') DllTracer.serializeArgValue(self, function, arg) print(r' }') return DllTracer.serializeArgValue(self, function, arg)