def main(): print r'#define INITGUID' print print r'#include <string.h>' print print r'#include <iostream>' print print r'#include "d3dretrace.hpp"' print r'#include "os_version.hpp"' print print r'#include "d3dretrace_dxgi.hpp"' print r'#include "d3d10imports.hpp"' print r'#include "d3d10size.hpp"' print r'#include "d3d10state.hpp"' print r'#include "d3d11imports.hpp"' print r'#include "d3d11size.hpp"' print r'#include "dcompimports.hpp"' print r'#include "d3dstate.hpp"' print r'#include "d3d9imports.hpp" // D3DERR_WASSTILLDRAWING' print print '''static d3dretrace::D3DDumper<IDXGISwapChain> dxgiDumper;''' print '''static d3dretrace::D3DDumper<ID3D10Device> d3d10Dumper;''' print '''static d3dretrace::D3DDumper<ID3D11DeviceContext> d3d11Dumper;''' print api = API() api.addModule(dxgi) api.addModule(d3d10) api.addModule(d3d10_1) api.addModule(d3d11) api.addModule(dcomp) retracer = D3DRetracer() retracer.retraceApi(api)
def main(): print r"#define INITGUID" print print r"#include <string.h>" print print r"#include <iostream>" print print r'#include "d3dretrace.hpp"' print r'#include "os_version.hpp"' print print r'#include "d3dretrace_dxgi.hpp"' print r'#include "d3d10imports.hpp"' print r'#include "d3d10size.hpp"' print r'#include "d3d10state.hpp"' print r'#include "d3d11imports.hpp"' print r'#include "d3d11size.hpp"' print r'#include "d3dstate.hpp"' print print """static d3dretrace::D3DDumper<IDXGISwapChain> dxgiDumper;""" print """static d3dretrace::D3DDumper<ID3D10Device> d3d10Dumper;""" print """static d3dretrace::D3DDumper<ID3D11DeviceContext> d3d11Dumper;""" print api = API() api.addModule(dxgi) api.addModule(d3d10) api.addModule(d3d10_1) api.addModule(d3d11) retracer = D3DRetracer() retracer.retraceApi(api)
def main(): print r'#define INITGUID' print print r'#include <string.h>' print print r'#include <iostream>' print print r'#include "d3dretrace.hpp"' print r'#include "os_version.hpp"' print moduleNames = sys.argv[1:] api = API() if moduleNames: print r'#include "d3dretrace_dxgi.hpp"' print r'#include "d3d10imports.hpp"' print r'#include "d3d10size.hpp"' print r'#include "d3d10state.hpp"' print r'#include "d3d11imports.hpp"' print r'#include "d3d11size.hpp"' print r'#include "d3dstate.hpp"' print print '''static d3dretrace::D3DDumper<IDXGISwapChain> dxgiDumper;''' print '''static d3dretrace::D3DDumper<ID3D10Device> d3d10Dumper;''' print '''static d3dretrace::D3DDumper<ID3D11DeviceContext> d3d11Dumper;''' print print r''' static void createWindow(DXGI_SWAP_CHAIN_DESC *pSwapChainDesc) { UINT Width = pSwapChainDesc->BufferDesc.Width; UINT Height = pSwapChainDesc->BufferDesc.Height; if (!Width) Width = 1024; if (!Height) Height = 768; if (retrace::forceWindowed) { pSwapChainDesc->Windowed = TRUE; } pSwapChainDesc->OutputWindow = d3dretrace::createWindow(Width, Height); } ''' api.addModule(dxgi) api.addModule(d3d10) api.addModule(d3d10_1) api.addModule(d3d11) retracer = D3DRetracer() retracer.retraceApi(api)
def main(): print r'#define INITGUID' print print r'#include <string.h>' print print r'#include <iostream>' print print r'#include "d3dretrace.hpp"' print moduleNames = sys.argv[1:] api = API() if moduleNames: print r'#include "d3dretrace_dxgi.hpp"' api.addModule(dxgi) if 'd3d10' in moduleNames: if 'd3d10_1' in moduleNames: print r'#include "d3d10_1imports.hpp"' api.addModule(d3d10_1) else: print r'#include "d3d10imports.hpp"' print r'#include "d3d10size.hpp"' api.addModule(d3d10) print print '''static d3dretrace::D3DDumper<ID3D10Device> d3d10Dumper;''' print if 'd3d11' in moduleNames: print r'#include "d3d11imports.hpp"' if 'd3d11_1' in moduleNames: print '#include <d3d11_1.h>' import specs.d3d11_1 print r'#include "d3d11size.hpp"' print r'#include "d3dstate.hpp"' api.addModule(d3d11) print print '''static d3dretrace::D3DDumper<ID3D11DeviceContext> d3d11Dumper;''' print retracer = D3DRetracer() retracer.retraceApi(api)
def main(): print r'#include <string.h>' print print r'#include <iostream>' print print r'#include "d3dretrace.hpp"' print api = API() print r'#include "d3dimports.hpp"' api.addModule(ddraw) print print '''static d3dretrace::D3DDumper<IDirect3DDevice7> d3d7Dumper;''' print retracer = D3DRetracer() retracer.table_name = 'd3dretrace::ddraw_callbacks' retracer.retraceApi(api)
def main(): print r'#include <string.h>' print print r'#include <iostream>' print print r'#include "d3dretrace.hpp"' print moduleName = sys.argv[1] support = int(sys.argv[2]) api = API() if support: if moduleName == 'd3d9': from specs.d3d9 import d3d9, d3dperf print r'#include "d3d9imports.hpp"' print r'#include "d3d9size.hpp"' d3d9.mergeModule(d3dperf) api.addModule(d3d9) print print '''static d3dretrace::D3DDumper<IDirect3DDevice9> d3d9Dumper;''' print elif moduleName == 'd3d8': from specs.d3d8 import d3d8 print r'#include "d3d8imports.hpp"' print r'#include "d3d8size.hpp"' api.addModule(d3d8) print print '''static d3dretrace::D3DDumper<IDirect3DDevice8> d3d8Dumper;''' print else: assert False retracer = D3DRetracer() retracer.table_name = 'd3dretrace::%s_callbacks' % moduleName retracer.retraceApi(api)
def main(): print(r'#include <string.h>') print() print(r'#include <iostream>') print() print(r'#include "d3dretrace.hpp"') print() moduleName = sys.argv[1] support = int(sys.argv[2]) api = API() if support: if moduleName == 'd3d9': from specs.d3d9 import d3d9, d3dperf from specs.dxva2 import dxva2 print(r'#include "d3d9imports.hpp"') print(r'#include "d3d9size.hpp"') print(r'#include "dxva2imports.hpp"') d3d9.mergeModule(d3dperf) api.addModule(d3d9) api.addModule(dxva2) print() print( '''static d3dretrace::D3DDumper<IDirect3DDevice9> d3d9Dumper;''' ) print( '''static d3dretrace::D3DDumper<IDirect3DSwapChain9> d3d9scDumper;''' ) print() elif moduleName == 'd3d8': from specs.d3d8 import d3d8 print(r'#include "d3d8imports.hpp"') print(r'#include "d3d8size.hpp"') api.addModule(d3d8) print() print( '''static d3dretrace::D3DDumper<IDirect3DDevice8> d3d8Dumper;''' ) print() else: assert False retracer = D3DRetracer() retracer.table_name = 'd3dretrace::%s_callbacks' % moduleName retracer.retraceApi(api)
def main(): print r'#define INITGUID' print print r'#include <string.h>' print print r'#include <iostream>' print print r'#include "d3dretrace.hpp"' print r'#include "os_version.hpp"' print moduleNames = sys.argv[1:] api = API() if moduleNames: print r'#include "d3dretrace_dxgi.hpp"' print r'#include "d3d10imports.hpp"' print r'#include "d3d10size.hpp"' print r'#include "d3d10state.hpp"' print r'#include "d3d11imports.hpp"' print r'#include "d3d11size.hpp"' print r'#include "d3dstate.hpp"' print print '''static d3dretrace::D3DDumper<IDXGISwapChain> dxgiDumper;''' print '''static d3dretrace::D3DDumper<ID3D10Device> d3d10Dumper;''' print '''static d3dretrace::D3DDumper<ID3D11DeviceContext> d3d11Dumper;''' print api.addModule(dxgi) api.addModule(d3d10) api.addModule(d3d10_1) api.addModule(d3d11) retracer = D3DRetracer() retracer.retraceApi(api)
def main(): print r"#include <string.h>" print print r"#include <iostream>" print print r'#include "d3dretrace.hpp"' print moduleName = sys.argv[1] support = int(sys.argv[2]) api = API() if support: if moduleName == "d3d9": from specs.d3d9 import d3d9, d3dperf from specs.dxva2 import dxva2 print r'#include "d3d9imports.hpp"' print r'#include "d3d9size.hpp"' print r'#include "dxva2imports.hpp"' d3d9.mergeModule(d3dperf) api.addModule(d3d9) api.addModule(dxva2) print print """static d3dretrace::D3DDumper<IDirect3DDevice9> d3d9Dumper;""" print """static d3dretrace::D3DDumper<IDirect3DSwapChain9> d3d9scDumper;""" print elif moduleName == "d3d8": from specs.d3d8 import d3d8 print r'#include "d3d8imports.hpp"' print r'#include "d3d8size.hpp"' api.addModule(d3d8) print print """static d3dretrace::D3DDumper<IDirect3DDevice8> d3d8Dumper;""" print else: assert False retracer = D3DRetracer() retracer.table_name = "d3dretrace::%s_callbacks" % moduleName retracer.retraceApi(api)
def main(): print r'#include <string.h>' print print r'#include <iostream>' print print r'#include "d3dretrace.hpp"' print moduleName = sys.argv[1] support = int(sys.argv[2]) api = API() if support: if moduleName == 'd3d9': from specs.d3d9 import d3d9 print r'#include "d3d9imports.hpp"' print r'#include "d3d9size.hpp"' api.addModule(d3d9) print print '''static d3dretrace::D3DDumper<IDirect3DDevice9> d3d9Dumper;''' print elif moduleName == 'd3d8': from specs.d3d8 import d3d8 print r'#include "d3d8imports.hpp"' print r'#include "d3d8size.hpp"' api.addModule(d3d8) print print '''static d3dretrace::D3DDumper<IDirect3DDevice8> d3d8Dumper;''' print else: assert False retracer = D3DRetracer() retracer.table_name = 'd3dretrace::%s_callbacks' % moduleName retracer.retraceApi(api)
def handle_default(): print ' os::log("apitrace: warning: unknown function \\"%s\\"\\n", lpszProc);' string_switch('lpszProc', func_dict.keys(), handle_case, handle_default) print ' }' if __name__ == '__main__': print print '#define _GDI32_' print print '#include <string.h>' print '#include <windows.h>' print print '#include "trace_writer_local.hpp"' print '#include "os.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print '#define WGL_GLXEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print api = API() api.add_api(glapi) api.add_api(wglapi) tracer = WglTracer() tracer.trace_api(api)
print '#ifndef _GNU_SOURCE' print '#define _GNU_SOURCE // for dladdr' print '#endif' print '#include <dlfcn.h>' print print '#include "trace_writer_local.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print '#define GLX_GLXEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print api = API() api.addApi(glxapi) api.addApi(glapi) tracer = GlxTracer() tracer.traceApi(api) print r''' /* * Invoke the true dlopen() function. */ static void *_dlopen(const char *filename, int flag) { typedef void * (*PFN_DLOPEN)(const char *, int); static PFN_DLOPEN dlopen_ptr = NULL;
print ' if (_result) {' print ' if (hglrc != NULL)' print ' gltrace::setContext((uintptr_t)hglrc);' print ' else' print ' gltrace::clearContext();' print ' }' if __name__ == '__main__': print print '#define _GDI32_' print print '#include <string.h>' print '#include <windows.h>' print print '#include "trace_writer_local.hpp"' print '#include "os.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print '#define WGL_GLXEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print api = API() api.addApi(glapi) api.addApi(wglapi) tracer = WglTracer() tracer.traceApi(api)
print '#include <dlfcn.h>' print print '#include "trace_writer_local.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print '#define GLX_GLXEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print module = Module() module.mergeModule(glxapi) module.mergeModule(glapi) api = API() api.addModule(module) tracer = GlxTracer() tracer.traceApi(api) print r''' /* * Invoke the true dlopen() function. */ static void *_dlopen(const char *filename, int flag) { typedef void * (*PFN_DLOPEN)(const char *, int); static PFN_DLOPEN dlopen_ptr = NULL;
print('#include <string.h>') print('#include <windows.h>') print() print('#include <sstream>') print() print('#include "trace_writer_local.hpp"') print('#include "os.hpp"') print() print('// To validate our prototypes') print('#define GL_GLEXT_PROTOTYPES') print('#define WGL_GLXEXT_PROTOTYPES') print() print('#include "glproc.hpp"') print('#include "glsize.hpp"') print() print('static OS_THREAD_LOCAL uintptr_t _reentrant;') print() print('// Helper class to track reentries in function scope.') print('struct ReentryScope {') print('inline ReentryScope() { _reentrant = 1; }') print('inline ~ReentryScope() { _reentrant = 0; }') print('};') print() module = Module() module.mergeModule(glapi) module.mergeModule(wglapi) api = API() api.addModule(module) tracer = WglTracer() tracer.traceApi(api)
DllTracer.implementWrapperInterfaceMethodBody(self, interface, base, method) if method.name in ('Lock', 'LockRect', 'LockBox'): # FIXME: handle recursive locks print( ' if (SUCCEEDED(_result) && !(Flags & D3DLOCK_READONLY)) {') print(' _getMapInfo(_this, %s, m_pbData, _MappedSize);' % ', '.join(method.argNames()[:-1])) print(' } else {') print(' m_pbData = NULL;') print(' _MappedSize = 0;') print(' }') if __name__ == '__main__': print('#define INITGUID') print() print('#include "trace_writer_local.hpp"') print('#include "os.hpp"') print() print('#include "d3d8imports.hpp"') print('#include "d3d8size.hpp"') print('#include "d3d9shader.hpp"') print() api = API() api.addModule(d3d8) tracer = D3D8Tracer() tracer.traceApi(api)
if __name__ == '__main__': print('#define INITGUID') print() print('#include "trace_writer_local.hpp"') print('#include "os.hpp"') print() print('#include "d3d9imports.hpp"') print('#include "d3d9size.hpp"') print('#include "d3d9shader.hpp"') print('#include "dxva2imports.hpp"') print() d3d9.mergeModule(d3dperf) api = API() api.addModule(d3d9) api.addModule(dxva2) tracer = D3D9Tracer() tracer.traceApi(api) print(r'EXTERN_C PUBLIC') print(r'void __stdcall Direct3D9ForceHybridEnumeration(UINT uHybrid) {') print( r' typedef void (WINAPI *PFNDIRECT3D9FORCEHYBRIDENUMERATION)(UINT);' ) print( r' PFNDIRECT3D9FORCEHYBRIDENUMERATION pfnDirect3D9ForceHybridEnumeration =' ) print( r' (PFNDIRECT3D9FORCEHYBRIDENUMERATION)g_modD3D9.getProcAddress(MAKEINTRESOURCEA(16));'
if function.name == 'CGLRetainContext': print ' gltrace::retainContext((uintptr_t)ctx);' if __name__ == '__main__': print print '#include <stdlib.h>' print '#include <string.h>' print print '#include "trace_writer_local.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print api = API() api.addApi(cglapi) api.addApi(glapi) tracer = CglTracer() tracer.traceApi(api) print r''' PUBLIC void * gll_noop = 0; '''
# Ensure buffers are initialized, otherwise we can fail to detect # changes when unititialized data matches what the app wrote. if method.name == 'CreateBuffer': print(r' if (pInitialData == &initialData) {') print(r' _initialBufferFree(&initialData);') print(r' }') if __name__ == '__main__': print(r'#include "guids_defs.hpp"') print() print(r'#include "trace_writer_local.hpp"') print(r'#include "os.hpp"') print() print(r'#include "dxgitrace.hpp"') print() # TODO: Expose this via a runtime option print('#define FORCE_D3D_FEATURE_LEVEL_11_0 0') api = API() api.addModule(dxgi.dxgi) api.addModule(d3d10.d3d10) api.addModule(d3d10.d3d10_1) api.addModule(d3d11.d3d11) api.addModule(dcomp.dcomp) api.addModule(d3d9.d3dperf) tracer = D3DCommonTracer() tracer.traceApi(api)
##########################################################################/ from dlltrace import DllTracer from specs.stdapi import API from specs.d3d import ddraw, interfaces class DDrawTracer(DllTracer): pass # FIXME: emit fake memcpy calls for IDirectDrawSurface7::EnumAttachedSurfaces # FIXME: wrap objects passed to IDirectDrawSurface7::EnumAttachedSurfaces # callback -- we don't really care for tracing these calls, but we do want # to trace everything done inside the callback. if __name__ == '__main__': print('#define INITGUID') print('#include "d3dimports.hpp"') print('#include "trace_writer_local.hpp"') print('#include "d3d7size.hpp"') print('#include "os.hpp"') print() api = API() api.addModule(ddraw) tracer = DDrawTracer() tracer.traceApi(api)
# The symbols visible in libGL.dylib can vary, so expose them all return True if __name__ == '__main__': print print '#include <stdlib.h>' print '#include <string.h>' print print '#include "trace_writer.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print api = API() api.add_api(cglapi) api.add_api(glapi) tracer = CglTracer() tracer.trace_api(api) print r''' PUBLIC void * gll_noop = 0; '''
print '#endif' print '#include <dlfcn.h>' print print '#include "trace_writer.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print '#define GLX_GLXEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print print 'static __GLXextFuncPtr __unwrap_proc_addr(const GLubyte * procName, __GLXextFuncPtr procPtr);' print api = API() api.add_api(glxapi) api.add_api(glapi) tracer = GlxTracer() tracer.trace_api(api) print 'static __GLXextFuncPtr __unwrap_proc_addr(const GLubyte * procName, __GLXextFuncPtr procPtr) {' print ' if (!procPtr) {' print ' return procPtr;' print ' }' for f in api.functions: ptype = function_pointer_type(f) pvalue = function_pointer_value(f) print ' if (strcmp("%s", (const char *)procName) == 0) {' % f.name print ' %s = (%s)procPtr;' % (pvalue, ptype) print ' return (__GLXextFuncPtr)&%s;' % (f.name, )
print '#endif' print '#include <dlfcn.h>' print print '#include "trace_writer_local.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print '#define GLX_GLXEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print print 'static __GLXextFuncPtr __unwrap_proc_addr(const GLubyte * procName, __GLXextFuncPtr procPtr);' print api = API() api.add_api(glxapi) api.add_api(glapi) tracer = GlxTracer() tracer.trace_api(api) print 'static __GLXextFuncPtr __unwrap_proc_addr(const GLubyte * procName, __GLXextFuncPtr procPtr) {' print ' if (!procPtr) {' print ' return procPtr;' print ' }' for f in api.functions: ptype = function_pointer_type(f) pvalue = function_pointer_value(f) print ' if (strcmp("%s", (const char *)procName) == 0) {' % f.name print ' %s = (%s)procPtr;' % (pvalue, ptype) print ' return (__GLXextFuncPtr)&%s;' % (f.name,)
print ' _MappedData[Level] = std::make_pair(mappedSize, pbData);' print ' } else {' print ' _MappedData.erase(Level);' print ' }' else: # FIXME: handle recursive locks print ' if (SUCCEEDED(_result) && !(Flags & D3DLOCK_READONLY)) {' print ' _getMapInfo(_this, %s, m_pbData, _MappedSize);' % ', '.join(method.argNames()[:-1]) print ' } else {' print ' m_pbData = NULL;' print ' _MappedSize = 0;' print ' }' if __name__ == '__main__': print '#define INITGUID' print print '#include "trace_writer_local.hpp"' print '#include "os.hpp"' print print '#include "d3d9imports.hpp"' print '#include "d3d9size.hpp"' print '#include "d3d9shader.hpp"' print '#include "dxvaint.h"' print api = API() api.addModule(d3d9) tracer = D3D9Tracer() tracer.traceApi(api)
# all OpenGL symbols are visible on MacOSX return True if __name__ == '__main__': print print '#include <stdlib.h>' print '#include <string.h>' print print '#include "trace_writer_local.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print api = API() api.addApi(cglapi) api.addApi(glapi) tracer = CglTracer() tracer.traceApi(api) print r''' PUBLIC void * gll_noop = 0; '''
# 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. # ##########################################################################/ from dlltrace import DllTracer from specs.stdapi import API from specs.dwrite import dwrite from specs.d2d1 import d2d1 if __name__ == '__main__': print '#include "guids_defs.hpp"' print print '#include "trace_writer_local.hpp"' print '#include "os.hpp"' print print '#define DWRITE_EXPORT WINAPI' print print '#include "d2dimports.hpp"' print api = API() api.addModule(d2d1) api.addModule(dwrite) tracer = DllTracer() tracer.traceApi(api)
def handle_default(): print ' os::log("apitrace: warning: unknown function \\"%s\\"\\n", lpszProc);' string_switch('lpszProc', func_dict.keys(), handle_case, handle_default) print ' }' if __name__ == '__main__': print print '#define _GDI32_' print print '#include <string.h>' print '#include <windows.h>' print print '#include "trace_writer.hpp"' print '#include "os.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print '#define WGL_GLXEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print api = API() api.add_api(glapi) api.add_api(wglapi) tracer = WglTracer() tracer.trace_api(api)
print r' }' if __name__ == '__main__': print r'#include "guids_defs.hpp"' print print r'#include "trace_writer_local.hpp"' print r'#include "os.hpp"' print print r'#include "d3dcommonshader.hpp"' print print r'#include "d3d10imports.hpp"' print r'#include "d3d10size.hpp"' print r'#include "d3d11imports.hpp"' print r'#include "d3d11size.hpp"' print r'#include "dcompimports.hpp"' print r'#include "d2dimports.hpp" // WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT' print r'#include "d3d9imports.hpp" // D3DPERF_*' print api = API() api.addModule(dxgi.dxgi) api.addModule(d3d10.d3d10) api.addModule(d3d10.d3d10_1) api.addModule(d3d11.d3d11) api.addModule(dcomp.dcomp) api.addModule(d3d9.d3dperf) tracer = D3DCommonTracer() tracer.traceApi(api)
print '#endif' print '#include <dlfcn.h>' print print '#include "trace_writer_local.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print '#define GLX_GLXEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print print 'static __GLXextFuncPtr __unwrap_proc_addr(const GLubyte * procName, __GLXextFuncPtr procPtr);' print api = API() api.addApi(glxapi) api.addApi(glapi) tracer = GlxTracer() tracer.trace_api(api) print 'static __GLXextFuncPtr __unwrap_proc_addr(const GLubyte * procName, __GLXextFuncPtr procPtr) {' print ' if (!procPtr) {' print ' return procPtr;' print ' }' for f in api.functions: ptype = function_pointer_type(f) pvalue = function_pointer_value(f) print ' if (strcmp("%s", (const char *)procName) == 0) {' % f.name print ' %s = (%s)procPtr;' % (pvalue, ptype) print ' return (__GLXextFuncPtr)&%s;' % (f.name,)
# if REGAL_SYS_GLX # undef REGAL_SYS_GLX # define REGAL_SYS_GLX 0 # endif #endif ''' cglmodule = Module('cgl') cglmodule.mergeModule(cglapi) eglmodule = Module('egl') eglmodule.mergeModule(eglapi) glxmodule = Module('glx') glxmodule.mergeModule(glxapi) wglmodule = Module('wgl') wglmodule.mergeModule(wglapi) gfxmodule = Module('gfx') gfxmodule.mergeModule(glapi) gfxmodule.mergeModule(glesapi) api = API() api.addModule(gfxmodule) api.addModule(cglmodule) api.addModule(eglmodule) api.addModule(glxmodule) api.addModule(wglmodule) tracer = RegalTracer() tracer.traceApi(api)
# 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. # ##########################################################################/ from dlltrace import DllTracer from specs.stdapi import API from specs.dwrite import dwrite from specs.d2d1 import d2d1 if __name__ == '__main__': print('#include "guids_defs.hpp"') print() print('#include "trace_writer_local.hpp"') print('#include "os.hpp"') print() print('#define DWRITE_EXPORT WINAPI') print() print('#include "d2dimports.hpp"') print() api = API() api.addModule(d2d1) api.addModule(dwrite) tracer = DllTracer() tracer.traceApi(api)
print ' _MappedSize = 0;' print ' }' if __name__ == '__main__': print '#define INITGUID' print print '#include "trace_writer_local.hpp"' print '#include "os.hpp"' print print '#include "d3dcommonshader.hpp"' print moduleNames = sys.argv[1:] api = API() if moduleNames: api.addModule(dxgi) if 'd3d10' in moduleNames: if 'd3d10_1' in moduleNames: print r'#include "d3d10_1imports.hpp"' api.addModule(d3d10_1) else: print r'#include "d3d10imports.hpp"' print r'#include "d3d10size.hpp"' api.addModule(d3d10) if 'd3d11' in moduleNames: print r'#include "d3d11imports.hpp"'
if __name__ == '__main__': print '#include <stdlib.h>' print '#include <string.h>' print '#include <dlfcn.h>' print print '#include "trace_writer_local.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print '#define EGL_EGLEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print api = API() api.addApi(eglapi) api.addApi(glapi) api.addApi(glesapi) tracer = EglTracer() tracer.traceApi(api) print r''' /* * Android does not support LD_PRELOAD. */ #if !defined(ANDROID)
self.emit_memcpy('(LPBYTE)m_pbData', '_MappedSize') print ' }' DllTracer.implementWrapperInterfaceMethodBody(self, interface, base, method) if method.name in ('Lock', 'LockRect', 'LockBox'): # FIXME: handle recursive locks print ' if (SUCCEEDED(_result) && !(Flags & D3DLOCK_READONLY)) {' print ' _getMapInfo(_this, %s, m_pbData, _MappedSize);' % ', '.join(method.argNames()[:-1]) print ' } else {' print ' m_pbData = NULL;' print ' _MappedSize = 0;' print ' }' if __name__ == '__main__': print '#define INITGUID' print print '#include "trace_writer_local.hpp"' print '#include "os.hpp"' print print '#include "d3d8imports.hpp"' print '#include "d3d8size.hpp"' print '#include "d3d9shader.hpp"' print api = API() api.addModule(d3d8) tracer = D3D8Tracer() tracer.traceApi(api)
#define localWriter regalWriter #include "glproc.hpp" #include "glsize.hpp" #include <RegalSystem.h> ''' cglmodule = Module('cgl') cglmodule.mergeModule(cglapi) eglmodule = Module('egl') eglmodule.mergeModule(eglapi) glxmodule = Module('glx') glxmodule.mergeModule(glxapi) wglmodule = Module('wgl') wglmodule.mergeModule(wglapi) gfxmodule = Module('gfx') gfxmodule.mergeModule(glapi) gfxmodule.mergeModule(glesapi) api = API() api.addModule(gfxmodule) api.addModule(cglmodule) api.addModule(eglmodule) api.addModule(glxmodule) api.addModule(wglmodule) tracer = RegalTracer() tracer.traceApi(api)
print print '#ifndef _GNU_SOURCE' print '#define _GNU_SOURCE // for dladdr' print '#endif' print '#include <dlfcn.h>' print print '#include "trace_writer.hpp"' print print '// To validate our prototypes' print '#define GL_GLEXT_PROTOTYPES' print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print api = API() api.add_api(cglapi) api.add_api(glapi) tracer = CglTracer() tracer.trace_api(api) print r''' /* * Path to the true OpenGL framework */ static const char *libgl_filename = "/System/Library/Frameworks/OpenGL.framework/OpenGL"; /*
print ' } else {' print ' _MapDesc.pData = NULL;' print ' _MapDesc.Size = 0;' print ' }' #print r' os::log("%%p <- %%p+%%lu\n", %s,_MapDesc.pData, (unsigned long)_MapDesc.Size);' % pResource print ' %s->_MapDesc = _MapDesc;' % pResource if __name__ == '__main__': print r'#define INITGUID' print print r'#include "trace_writer_local.hpp"' print r'#include "os.hpp"' print print r'#include "d3dcommonshader.hpp"' print print r'#include "d3d10imports.hpp"' print r'#include "d3d10size.hpp"' print r'#include "d3d11imports.hpp"' print r'#include "d3d11size.hpp"' print api = API() api.addModule(dxgi.dxgi) api.addModule(d3d10.d3d10) api.addModule(d3d10_1.d3d10_1) api.addModule(d3d11.d3d11) tracer = D3DCommonTracer() tracer.traceApi(api)
from dlltrace import DllTracer from specs.stdapi import API from specs.d3d import ddraw, interfaces class DDrawTracer(DllTracer): pass # FIXME: emit fake memcpy calls for IDirectDrawSurface7::EnumAttachedSurfaces # FIXME: wrap objects passed to IDirectDrawSurface7::EnumAttachedSurfaces # callback -- we don't really care for tracing these calls, but we do want # to trace everything done inside the callback. if __name__ == '__main__': print '#define INITGUID' print '#include "d3dimports.hpp"' print '#include "trace_writer_local.hpp"' print '#include "d3d7size.hpp"' print '#include "os.hpp"' print api = API() api.addModule(ddraw) tracer = DDrawTracer() tracer.traceApi(api)
print "#include <string.h>" print "#include <dlfcn.h>" print print '#include "trace_writer_local.hpp"' print print "// To validate our prototypes" print "#define GL_GLEXT_PROTOTYPES" print "#define EGL_EGLEXT_PROTOTYPES" print print '#include "glproc.hpp"' print '#include "glsize.hpp"' print print "static __eglMustCastToProperFunctionPointerType __unwrap_proc_addr(const char * procname, __eglMustCastToProperFunctionPointerType procPtr);" print api = API() api.add_api(eglapi) api.add_api(glapi) api.add_api(glesapi) tracer = EglTracer() tracer.trace_api(api) print "static __eglMustCastToProperFunctionPointerType __unwrap_proc_addr(const char * procname, __eglMustCastToProperFunctionPointerType procPtr) {" print " if (!procPtr) {" print " return procPtr;" print " }" for f in api.functions: ptype = function_pointer_type(f) pvalue = function_pointer_value(f) print ' if (!strcmp("%s", procname)) {' % f.name print " %s = (%s)procPtr;" % (pvalue, ptype)
print ' _MappedSize = 0;' print ' }' if interface.name == 'IDirectXVideoDecoder' and method.name == 'GetBuffer': print ' if (SUCCEEDED(_result)) {' print ' _MappedData[BufferType] = std::make_pair(*ppBuffer, *pBufferSize);' print ' } else {' print ' _MappedData[BufferType] = std::make_pair(nullptr, 0);' print ' }' if __name__ == '__main__': print '#define INITGUID' print print '#include "trace_writer_local.hpp"' print '#include "os.hpp"' print print '#include "d3d9imports.hpp"' print '#include "d3d9size.hpp"' print '#include "d3d9shader.hpp"' print '#include "dxva2imports.hpp"' print d3d9.mergeModule(d3dperf) api = API() api.addModule(d3d9) api.addModule(dxva2) tracer = D3D9Tracer() tracer.traceApi(api)