Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
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)
Beispiel #10
0
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)
Beispiel #11
0
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)
Beispiel #12
0
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)
Beispiel #13
0
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)
Beispiel #14
0
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)
Beispiel #15
0
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)
Beispiel #16
0
        
            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)
Beispiel #17
0
    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;
Beispiel #18
0
            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)
Beispiel #19
0
    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;
Beispiel #20
0
    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)
Beispiel #21
0
        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)
Beispiel #22
0
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));'
Beispiel #23
0
        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;

'''
Beispiel #24
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)
Beispiel #25
0
##########################################################################/

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)
Beispiel #26
0
        # 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;

'''
Beispiel #27
0
            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)
Beispiel #28
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, )
Beispiel #29
0
    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,)
Beispiel #30
0
                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)
Beispiel #31
0
        # 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;

'''
Beispiel #32
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)
Beispiel #33
0
            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)
Beispiel #34
0
            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)
Beispiel #35
0
    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,)
Beispiel #36
0
# 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)


Beispiel #37
0
# 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)
Beispiel #38
0
            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"'
Beispiel #39
0
            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"'
Beispiel #40
0
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)

Beispiel #41
0
            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)
Beispiel #42
0
#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)


Beispiel #43
0
    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";


/*
Beispiel #44
0
            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)
Beispiel #45
0
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)

Beispiel #46
0

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)
Beispiel #47
0
    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)
Beispiel #48
0
                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)