From 1e5d421e42e2605939cfdb86e4479f7a1b0be8d8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Sat, 21 May 2011 10:14:01 +0100 Subject: [PATCH] Dump D3D8 shaders too. --- CMakeLists.txt | 4 ++-- d3d8.py | 9 ++++++++- d3d9.py | 2 +- d3d9shader.hpp => d3dshader.cpp | 11 +++------- d3dshader.hpp | 36 +++++++++++++++++++++++++++++++++ 5 files changed, 50 insertions(+), 12 deletions(-) rename d3d9shader.hpp => d3dshader.cpp (96%) create mode 100644 d3dshader.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a9af27..2f0a83a 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -180,7 +180,7 @@ if (WIN32) COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d8.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d8.cpp DEPENDS d3d8.py trace.py d3d8types.py d3d8caps.py winapi.py stdapi.py ) - add_library (d3d8 SHARED d3d8.def d3d8.cpp trace_write.cpp os_win32.cpp) + add_library (d3d8 SHARED d3d8.def d3d8.cpp d3dshader.cpp trace_write.cpp os_win32.cpp) set_target_properties (d3d8 PROPERTIES PREFIX "" RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers @@ -197,7 +197,7 @@ if (WIN32) COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/d3d9.py > ${CMAKE_CURRENT_BINARY_DIR}/d3d9.cpp DEPENDS d3d9.py trace.py d3d9types.py d3d9caps.py winapi.py stdapi.py ) - add_library (d3d9 SHARED d3d9.def d3d9.cpp trace_write.cpp os_win32.cpp) + add_library (d3d9 SHARED d3d9.def d3d9.cpp d3dshader.cpp trace_write.cpp os_win32.cpp) set_target_properties (d3d9 PROPERTIES PREFIX "" RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers diff --git a/d3d8.py b/d3d8.py index 73c9c85..07ddc47 100644 --- a/d3d8.py +++ b/d3d8.py @@ -282,12 +282,19 @@ d3d8.add_functions([ class D3D8Tracer(DllTracer): - pass + def dump_arg_instance(self, function, arg): + # Dump shaders as strings + if function.name in ('CreateVertexShader', 'CreatePixelShader') and arg.name == 'pFunction': + print ' DumpShader(%s);' % (arg.name) + return + + DllTracer.dump_arg_instance(self, function, arg) if __name__ == '__main__': print '#include ' print '#include ' + print '#include "d3dshader.hpp"' print print '#include "trace_write.hpp"' print '#include "os.hpp"' diff --git a/d3d9.py b/d3d9.py index 2f8f142..e2d5ba6 100644 --- a/d3d9.py +++ b/d3d9.py @@ -463,7 +463,7 @@ class D3D9Tracer(DllTracer): if __name__ == '__main__': print '#include "d3d9imports.hpp"' - print '#include "d3d9shader.hpp"' + print '#include "d3dshader.hpp"' print print '#include "trace_write.hpp"' print '#include "os.hpp"' diff --git a/d3d9shader.hpp b/d3dshader.cpp similarity index 96% rename from d3d9shader.hpp rename to d3dshader.cpp index 63883f2..799b35f 100644 --- a/d3d9shader.hpp +++ b/d3dshader.cpp @@ -24,14 +24,12 @@ * **************************************************************************/ -#ifndef _D3D9SHADER_HPP_ -#define _D3D9SHADER_HPP_ - #include -#include "d3d9imports.hpp" #include "trace_write.hpp" +#include "d3d9imports.hpp" +#include "d3dshader.hpp" typedef HRESULT @@ -43,7 +41,7 @@ typedef HRESULT ); -static void DumpShader(const DWORD *tokens) +void DumpShader(const DWORD *tokens) { static BOOL firsttime = TRUE; static HMODULE hD3DXModule = NULL; @@ -97,6 +95,3 @@ found: Trace::LiteralOpaque(tokens); } - - -#endif /* _D3D9SHADER_HPP_ */ diff --git a/d3dshader.hpp b/d3dshader.hpp new file mode 100644 index 0000000..fdde4e4 --- /dev/null +++ b/d3dshader.hpp @@ -0,0 +1,36 @@ +/************************************************************************** + * + * Copyright 2011 Jose Fonseca + * Copyright 2008-2009 VMware, Inc. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + **************************************************************************/ + +#ifndef _D3DSHADER_HPP_ +#define _D3DSHADER_HPP_ + + +#include + +void DumpShader(const DWORD *tokens); + + +#endif /* _D3DSHADER_HPP_ */ -- 2.45.2