// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // This file is auto-generated from // ui/gl/generate_bindings.py // It's formatted by clang-format using chromium coding style: // clang-format -i -style=chromium filename // DO NOT EDIT! #include #include "base/trace_event/trace_event.h" #include "ui/gl/gl_bindings.h" #include "ui/gl/gl_context.h" #include "ui/gl/gl_enums.h" #include "ui/gl/gl_glx_api_implementation.h" #include "ui/gl/gl_implementation.h" #include "ui/gl/gl_version_info.h" namespace gfx { static bool g_debugBindingsInitialized; DriverGLX g_driver_glx; void DriverGLX::InitializeStaticBindings() { fn.glXBindTexImageEXTFn = 0; fn.glXChooseFBConfigFn = reinterpret_cast( GetGLProcAddress("glXChooseFBConfig")); fn.glXChooseVisualFn = reinterpret_cast( GetGLProcAddress("glXChooseVisual")); fn.glXCopyContextFn = reinterpret_cast(GetGLProcAddress("glXCopyContext")); fn.glXCopySubBufferMESAFn = 0; fn.glXCreateContextFn = reinterpret_cast( GetGLProcAddress("glXCreateContext")); fn.glXCreateContextAttribsARBFn = 0; fn.glXCreateGLXPixmapFn = reinterpret_cast( GetGLProcAddress("glXCreateGLXPixmap")); fn.glXCreateNewContextFn = reinterpret_cast( GetGLProcAddress("glXCreateNewContext")); fn.glXCreatePbufferFn = reinterpret_cast( GetGLProcAddress("glXCreatePbuffer")); fn.glXCreatePixmapFn = reinterpret_cast( GetGLProcAddress("glXCreatePixmap")); fn.glXCreateWindowFn = reinterpret_cast( GetGLProcAddress("glXCreateWindow")); fn.glXDestroyContextFn = reinterpret_cast( GetGLProcAddress("glXDestroyContext")); fn.glXDestroyGLXPixmapFn = reinterpret_cast( GetGLProcAddress("glXDestroyGLXPixmap")); fn.glXDestroyPbufferFn = reinterpret_cast( GetGLProcAddress("glXDestroyPbuffer")); fn.glXDestroyPixmapFn = reinterpret_cast( GetGLProcAddress("glXDestroyPixmap")); fn.glXDestroyWindowFn = reinterpret_cast( GetGLProcAddress("glXDestroyWindow")); fn.glXGetClientStringFn = reinterpret_cast( GetGLProcAddress("glXGetClientString")); fn.glXGetConfigFn = reinterpret_cast(GetGLProcAddress("glXGetConfig")); fn.glXGetCurrentContextFn = reinterpret_cast( GetGLProcAddress("glXGetCurrentContext")); fn.glXGetCurrentDisplayFn = reinterpret_cast( GetGLProcAddress("glXGetCurrentDisplay")); fn.glXGetCurrentDrawableFn = reinterpret_cast( GetGLProcAddress("glXGetCurrentDrawable")); fn.glXGetCurrentReadDrawableFn = reinterpret_cast( GetGLProcAddress("glXGetCurrentReadDrawable")); fn.glXGetFBConfigAttribFn = reinterpret_cast( GetGLProcAddress("glXGetFBConfigAttrib")); fn.glXGetFBConfigFromVisualSGIXFn = 0; fn.glXGetFBConfigsFn = reinterpret_cast( GetGLProcAddress("glXGetFBConfigs")); fn.glXGetMscRateOMLFn = 0; fn.glXGetSelectedEventFn = reinterpret_cast( GetGLProcAddress("glXGetSelectedEvent")); fn.glXGetSyncValuesOMLFn = 0; fn.glXGetVisualFromFBConfigFn = reinterpret_cast( GetGLProcAddress("glXGetVisualFromFBConfig")); fn.glXIsDirectFn = reinterpret_cast(GetGLProcAddress("glXIsDirect")); fn.glXMakeContextCurrentFn = reinterpret_cast( GetGLProcAddress("glXMakeContextCurrent")); fn.glXMakeCurrentFn = reinterpret_cast(GetGLProcAddress("glXMakeCurrent")); fn.glXQueryContextFn = reinterpret_cast( GetGLProcAddress("glXQueryContext")); fn.glXQueryDrawableFn = reinterpret_cast( GetGLProcAddress("glXQueryDrawable")); fn.glXQueryExtensionFn = reinterpret_cast( GetGLProcAddress("glXQueryExtension")); fn.glXQueryExtensionsStringFn = reinterpret_cast( GetGLProcAddress("glXQueryExtensionsString")); fn.glXQueryServerStringFn = reinterpret_cast( GetGLProcAddress("glXQueryServerString")); fn.glXQueryVersionFn = reinterpret_cast( GetGLProcAddress("glXQueryVersion")); fn.glXReleaseTexImageEXTFn = 0; fn.glXSelectEventFn = reinterpret_cast(GetGLProcAddress("glXSelectEvent")); fn.glXSwapBuffersFn = reinterpret_cast(GetGLProcAddress("glXSwapBuffers")); fn.glXSwapIntervalEXTFn = 0; fn.glXSwapIntervalMESAFn = 0; fn.glXUseXFontFn = reinterpret_cast(GetGLProcAddress("glXUseXFont")); fn.glXWaitGLFn = reinterpret_cast(GetGLProcAddress("glXWaitGL")); fn.glXWaitVideoSyncSGIFn = 0; fn.glXWaitXFn = reinterpret_cast(GetGLProcAddress("glXWaitX")); } void DriverGLX::InitializeExtensionBindings() { std::string extensions(GetPlatformExtensions()); extensions += " "; ALLOW_UNUSED_LOCAL(extensions); ext.b_GLX_ARB_create_context = extensions.find("GLX_ARB_create_context ") != std::string::npos; ext.b_GLX_EXT_swap_control = extensions.find("GLX_EXT_swap_control ") != std::string::npos; ext.b_GLX_EXT_texture_from_pixmap = extensions.find("GLX_EXT_texture_from_pixmap ") != std::string::npos; ext.b_GLX_MESA_copy_sub_buffer = extensions.find("GLX_MESA_copy_sub_buffer ") != std::string::npos; ext.b_GLX_MESA_swap_control = extensions.find("GLX_MESA_swap_control ") != std::string::npos; ext.b_GLX_OML_sync_control = extensions.find("GLX_OML_sync_control ") != std::string::npos; ext.b_GLX_SGIX_fbconfig = extensions.find("GLX_SGIX_fbconfig ") != std::string::npos; ext.b_GLX_SGI_video_sync = extensions.find("GLX_SGI_video_sync ") != std::string::npos; debug_fn.glXBindTexImageEXTFn = 0; if (ext.b_GLX_EXT_texture_from_pixmap) { fn.glXBindTexImageEXTFn = reinterpret_cast( GetGLProcAddress("glXBindTexImageEXT")); } debug_fn.glXCopySubBufferMESAFn = 0; if (ext.b_GLX_MESA_copy_sub_buffer) { fn.glXCopySubBufferMESAFn = reinterpret_cast( GetGLProcAddress("glXCopySubBufferMESA")); } debug_fn.glXCreateContextAttribsARBFn = 0; if (ext.b_GLX_ARB_create_context) { fn.glXCreateContextAttribsARBFn = reinterpret_cast( GetGLProcAddress("glXCreateContextAttribsARB")); } debug_fn.glXGetFBConfigFromVisualSGIXFn = 0; if (ext.b_GLX_SGIX_fbconfig) { fn.glXGetFBConfigFromVisualSGIXFn = reinterpret_cast( GetGLProcAddress("glXGetFBConfigFromVisualSGIX")); } debug_fn.glXGetMscRateOMLFn = 0; if (ext.b_GLX_OML_sync_control) { fn.glXGetMscRateOMLFn = reinterpret_cast( GetGLProcAddress("glXGetMscRateOML")); } debug_fn.glXGetSyncValuesOMLFn = 0; if (ext.b_GLX_OML_sync_control) { fn.glXGetSyncValuesOMLFn = reinterpret_cast( GetGLProcAddress("glXGetSyncValuesOML")); } debug_fn.glXReleaseTexImageEXTFn = 0; if (ext.b_GLX_EXT_texture_from_pixmap) { fn.glXReleaseTexImageEXTFn = reinterpret_cast( GetGLProcAddress("glXReleaseTexImageEXT")); } debug_fn.glXSwapIntervalEXTFn = 0; if (ext.b_GLX_EXT_swap_control) { fn.glXSwapIntervalEXTFn = reinterpret_cast( GetGLProcAddress("glXSwapIntervalEXT")); } debug_fn.glXSwapIntervalMESAFn = 0; if (ext.b_GLX_MESA_swap_control) { fn.glXSwapIntervalMESAFn = reinterpret_cast( GetGLProcAddress("glXSwapIntervalMESA")); } debug_fn.glXWaitVideoSyncSGIFn = 0; if (ext.b_GLX_SGI_video_sync) { fn.glXWaitVideoSyncSGIFn = reinterpret_cast( GetGLProcAddress("glXWaitVideoSyncSGI")); } if (g_debugBindingsInitialized) InitializeDebugBindings(); } extern "C" { static void GL_BINDING_CALL Debug_glXBindTexImageEXT(Display* dpy, GLXDrawable drawable, int buffer, int* attribList) { GL_SERVICE_LOG("glXBindTexImageEXT" << "(" << static_cast(dpy) << ", " << drawable << ", " << buffer << ", " << static_cast(attribList) << ")"); DCHECK(g_driver_glx.debug_fn.glXBindTexImageEXTFn != nullptr); g_driver_glx.debug_fn.glXBindTexImageEXTFn(dpy, drawable, buffer, attribList); } static GLXFBConfig* GL_BINDING_CALL Debug_glXChooseFBConfig(Display* dpy, int screen, const int* attribList, int* nitems) { GL_SERVICE_LOG("glXChooseFBConfig" << "(" << static_cast(dpy) << ", " << screen << ", " << static_cast(attribList) << ", " << static_cast(nitems) << ")"); DCHECK(g_driver_glx.debug_fn.glXChooseFBConfigFn != nullptr); GLXFBConfig* result = g_driver_glx.debug_fn.glXChooseFBConfigFn( dpy, screen, attribList, nitems); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static XVisualInfo* GL_BINDING_CALL Debug_glXChooseVisual(Display* dpy, int screen, int* attribList) { GL_SERVICE_LOG("glXChooseVisual" << "(" << static_cast(dpy) << ", " << screen << ", " << static_cast(attribList) << ")"); DCHECK(g_driver_glx.debug_fn.glXChooseVisualFn != nullptr); XVisualInfo* result = g_driver_glx.debug_fn.glXChooseVisualFn(dpy, screen, attribList); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static void GL_BINDING_CALL Debug_glXCopyContext(Display* dpy, GLXContext src, GLXContext dst, unsigned long mask) { GL_SERVICE_LOG("glXCopyContext" << "(" << static_cast(dpy) << ", " << src << ", " << dst << ", " << mask << ")"); DCHECK(g_driver_glx.debug_fn.glXCopyContextFn != nullptr); g_driver_glx.debug_fn.glXCopyContextFn(dpy, src, dst, mask); } static void GL_BINDING_CALL Debug_glXCopySubBufferMESA(Display* dpy, GLXDrawable drawable, int x, int y, int width, int height) { GL_SERVICE_LOG("glXCopySubBufferMESA" << "(" << static_cast(dpy) << ", " << drawable << ", " << x << ", " << y << ", " << width << ", " << height << ")"); DCHECK(g_driver_glx.debug_fn.glXCopySubBufferMESAFn != nullptr); g_driver_glx.debug_fn.glXCopySubBufferMESAFn(dpy, drawable, x, y, width, height); } static GLXContext GL_BINDING_CALL Debug_glXCreateContext(Display* dpy, XVisualInfo* vis, GLXContext shareList, int direct) { GL_SERVICE_LOG("glXCreateContext" << "(" << static_cast(dpy) << ", " << static_cast(vis) << ", " << shareList << ", " << direct << ")"); DCHECK(g_driver_glx.debug_fn.glXCreateContextFn != nullptr); GLXContext result = g_driver_glx.debug_fn.glXCreateContextFn(dpy, vis, shareList, direct); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static GLXContext GL_BINDING_CALL Debug_glXCreateContextAttribsARB(Display* dpy, GLXFBConfig config, GLXContext share_context, int direct, const int* attrib_list) { GL_SERVICE_LOG("glXCreateContextAttribsARB" << "(" << static_cast(dpy) << ", " << config << ", " << share_context << ", " << direct << ", " << static_cast(attrib_list) << ")"); DCHECK(g_driver_glx.debug_fn.glXCreateContextAttribsARBFn != nullptr); GLXContext result = g_driver_glx.debug_fn.glXCreateContextAttribsARBFn( dpy, config, share_context, direct, attrib_list); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static GLXPixmap GL_BINDING_CALL Debug_glXCreateGLXPixmap(Display* dpy, XVisualInfo* visual, Pixmap pixmap) { GL_SERVICE_LOG("glXCreateGLXPixmap" << "(" << static_cast(dpy) << ", " << static_cast(visual) << ", " << pixmap << ")"); DCHECK(g_driver_glx.debug_fn.glXCreateGLXPixmapFn != nullptr); GLXPixmap result = g_driver_glx.debug_fn.glXCreateGLXPixmapFn(dpy, visual, pixmap); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static GLXContext GL_BINDING_CALL Debug_glXCreateNewContext(Display* dpy, GLXFBConfig config, int renderType, GLXContext shareList, int direct) { GL_SERVICE_LOG("glXCreateNewContext" << "(" << static_cast(dpy) << ", " << config << ", " << renderType << ", " << shareList << ", " << direct << ")"); DCHECK(g_driver_glx.debug_fn.glXCreateNewContextFn != nullptr); GLXContext result = g_driver_glx.debug_fn.glXCreateNewContextFn( dpy, config, renderType, shareList, direct); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static GLXPbuffer GL_BINDING_CALL Debug_glXCreatePbuffer(Display* dpy, GLXFBConfig config, const int* attribList) { GL_SERVICE_LOG("glXCreatePbuffer" << "(" << static_cast(dpy) << ", " << config << ", " << static_cast(attribList) << ")"); DCHECK(g_driver_glx.debug_fn.glXCreatePbufferFn != nullptr); GLXPbuffer result = g_driver_glx.debug_fn.glXCreatePbufferFn(dpy, config, attribList); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static GLXPixmap GL_BINDING_CALL Debug_glXCreatePixmap(Display* dpy, GLXFBConfig config, Pixmap pixmap, const int* attribList) { GL_SERVICE_LOG("glXCreatePixmap" << "(" << static_cast(dpy) << ", " << config << ", " << pixmap << ", " << static_cast(attribList) << ")"); DCHECK(g_driver_glx.debug_fn.glXCreatePixmapFn != nullptr); GLXPixmap result = g_driver_glx.debug_fn.glXCreatePixmapFn(dpy, config, pixmap, attribList); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static GLXWindow GL_BINDING_CALL Debug_glXCreateWindow(Display* dpy, GLXFBConfig config, Window win, const int* attribList) { GL_SERVICE_LOG("glXCreateWindow" << "(" << static_cast(dpy) << ", " << config << ", " << win << ", " << static_cast(attribList) << ")"); DCHECK(g_driver_glx.debug_fn.glXCreateWindowFn != nullptr); GLXWindow result = g_driver_glx.debug_fn.glXCreateWindowFn(dpy, config, win, attribList); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static void GL_BINDING_CALL Debug_glXDestroyContext(Display* dpy, GLXContext ctx) { GL_SERVICE_LOG("glXDestroyContext" << "(" << static_cast(dpy) << ", " << ctx << ")"); DCHECK(g_driver_glx.debug_fn.glXDestroyContextFn != nullptr); g_driver_glx.debug_fn.glXDestroyContextFn(dpy, ctx); } static void GL_BINDING_CALL Debug_glXDestroyGLXPixmap(Display* dpy, GLXPixmap pixmap) { GL_SERVICE_LOG("glXDestroyGLXPixmap" << "(" << static_cast(dpy) << ", " << pixmap << ")"); DCHECK(g_driver_glx.debug_fn.glXDestroyGLXPixmapFn != nullptr); g_driver_glx.debug_fn.glXDestroyGLXPixmapFn(dpy, pixmap); } static void GL_BINDING_CALL Debug_glXDestroyPbuffer(Display* dpy, GLXPbuffer pbuf) { GL_SERVICE_LOG("glXDestroyPbuffer" << "(" << static_cast(dpy) << ", " << pbuf << ")"); DCHECK(g_driver_glx.debug_fn.glXDestroyPbufferFn != nullptr); g_driver_glx.debug_fn.glXDestroyPbufferFn(dpy, pbuf); } static void GL_BINDING_CALL Debug_glXDestroyPixmap(Display* dpy, GLXPixmap pixmap) { GL_SERVICE_LOG("glXDestroyPixmap" << "(" << static_cast(dpy) << ", " << pixmap << ")"); DCHECK(g_driver_glx.debug_fn.glXDestroyPixmapFn != nullptr); g_driver_glx.debug_fn.glXDestroyPixmapFn(dpy, pixmap); } static void GL_BINDING_CALL Debug_glXDestroyWindow(Display* dpy, GLXWindow window) { GL_SERVICE_LOG("glXDestroyWindow" << "(" << static_cast(dpy) << ", " << window << ")"); DCHECK(g_driver_glx.debug_fn.glXDestroyWindowFn != nullptr); g_driver_glx.debug_fn.glXDestroyWindowFn(dpy, window); } static const char* GL_BINDING_CALL Debug_glXGetClientString(Display* dpy, int name) { GL_SERVICE_LOG("glXGetClientString" << "(" << static_cast(dpy) << ", " << name << ")"); DCHECK(g_driver_glx.debug_fn.glXGetClientStringFn != nullptr); const char* result = g_driver_glx.debug_fn.glXGetClientStringFn(dpy, name); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static int GL_BINDING_CALL Debug_glXGetConfig(Display* dpy, XVisualInfo* visual, int attrib, int* value) { GL_SERVICE_LOG("glXGetConfig" << "(" << static_cast(dpy) << ", " << static_cast(visual) << ", " << attrib << ", " << static_cast(value) << ")"); DCHECK(g_driver_glx.debug_fn.glXGetConfigFn != nullptr); int result = g_driver_glx.debug_fn.glXGetConfigFn(dpy, visual, attrib, value); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static GLXContext GL_BINDING_CALL Debug_glXGetCurrentContext(void) { GL_SERVICE_LOG("glXGetCurrentContext" << "(" << ")"); DCHECK(g_driver_glx.debug_fn.glXGetCurrentContextFn != nullptr); GLXContext result = g_driver_glx.debug_fn.glXGetCurrentContextFn(); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static Display* GL_BINDING_CALL Debug_glXGetCurrentDisplay(void) { GL_SERVICE_LOG("glXGetCurrentDisplay" << "(" << ")"); DCHECK(g_driver_glx.debug_fn.glXGetCurrentDisplayFn != nullptr); Display* result = g_driver_glx.debug_fn.glXGetCurrentDisplayFn(); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static GLXDrawable GL_BINDING_CALL Debug_glXGetCurrentDrawable(void) { GL_SERVICE_LOG("glXGetCurrentDrawable" << "(" << ")"); DCHECK(g_driver_glx.debug_fn.glXGetCurrentDrawableFn != nullptr); GLXDrawable result = g_driver_glx.debug_fn.glXGetCurrentDrawableFn(); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static GLXDrawable GL_BINDING_CALL Debug_glXGetCurrentReadDrawable(void) { GL_SERVICE_LOG("glXGetCurrentReadDrawable" << "(" << ")"); DCHECK(g_driver_glx.debug_fn.glXGetCurrentReadDrawableFn != nullptr); GLXDrawable result = g_driver_glx.debug_fn.glXGetCurrentReadDrawableFn(); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static int GL_BINDING_CALL Debug_glXGetFBConfigAttrib(Display* dpy, GLXFBConfig config, int attribute, int* value) { GL_SERVICE_LOG("glXGetFBConfigAttrib" << "(" << static_cast(dpy) << ", " << config << ", " << attribute << ", " << static_cast(value) << ")"); DCHECK(g_driver_glx.debug_fn.glXGetFBConfigAttribFn != nullptr); int result = g_driver_glx.debug_fn.glXGetFBConfigAttribFn(dpy, config, attribute, value); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static GLXFBConfig GL_BINDING_CALL Debug_glXGetFBConfigFromVisualSGIX(Display* dpy, XVisualInfo* visualInfo) { GL_SERVICE_LOG("glXGetFBConfigFromVisualSGIX" << "(" << static_cast(dpy) << ", " << static_cast(visualInfo) << ")"); DCHECK(g_driver_glx.debug_fn.glXGetFBConfigFromVisualSGIXFn != nullptr); GLXFBConfig result = g_driver_glx.debug_fn.glXGetFBConfigFromVisualSGIXFn(dpy, visualInfo); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static GLXFBConfig* GL_BINDING_CALL Debug_glXGetFBConfigs(Display* dpy, int screen, int* nelements) { GL_SERVICE_LOG("glXGetFBConfigs" << "(" << static_cast(dpy) << ", " << screen << ", " << static_cast(nelements) << ")"); DCHECK(g_driver_glx.debug_fn.glXGetFBConfigsFn != nullptr); GLXFBConfig* result = g_driver_glx.debug_fn.glXGetFBConfigsFn(dpy, screen, nelements); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static bool GL_BINDING_CALL Debug_glXGetMscRateOML(Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator) { GL_SERVICE_LOG("glXGetMscRateOML" << "(" << static_cast(dpy) << ", " << drawable << ", " << static_cast(numerator) << ", " << static_cast(denominator) << ")"); DCHECK(g_driver_glx.debug_fn.glXGetMscRateOMLFn != nullptr); bool result = g_driver_glx.debug_fn.glXGetMscRateOMLFn( dpy, drawable, numerator, denominator); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static void GL_BINDING_CALL Debug_glXGetSelectedEvent(Display* dpy, GLXDrawable drawable, unsigned long* mask) { GL_SERVICE_LOG("glXGetSelectedEvent" << "(" << static_cast(dpy) << ", " << drawable << ", " << static_cast(mask) << ")"); DCHECK(g_driver_glx.debug_fn.glXGetSelectedEventFn != nullptr); g_driver_glx.debug_fn.glXGetSelectedEventFn(dpy, drawable, mask); } static bool GL_BINDING_CALL Debug_glXGetSyncValuesOML(Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc) { GL_SERVICE_LOG("glXGetSyncValuesOML" << "(" << static_cast(dpy) << ", " << drawable << ", " << static_cast(ust) << ", " << static_cast(msc) << ", " << static_cast(sbc) << ")"); DCHECK(g_driver_glx.debug_fn.glXGetSyncValuesOMLFn != nullptr); bool result = g_driver_glx.debug_fn.glXGetSyncValuesOMLFn(dpy, drawable, ust, msc, sbc); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static XVisualInfo* GL_BINDING_CALL Debug_glXGetVisualFromFBConfig(Display* dpy, GLXFBConfig config) { GL_SERVICE_LOG("glXGetVisualFromFBConfig" << "(" << static_cast(dpy) << ", " << config << ")"); DCHECK(g_driver_glx.debug_fn.glXGetVisualFromFBConfigFn != nullptr); XVisualInfo* result = g_driver_glx.debug_fn.glXGetVisualFromFBConfigFn(dpy, config); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static int GL_BINDING_CALL Debug_glXIsDirect(Display* dpy, GLXContext ctx) { GL_SERVICE_LOG("glXIsDirect" << "(" << static_cast(dpy) << ", " << ctx << ")"); DCHECK(g_driver_glx.debug_fn.glXIsDirectFn != nullptr); int result = g_driver_glx.debug_fn.glXIsDirectFn(dpy, ctx); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static int GL_BINDING_CALL Debug_glXMakeContextCurrent(Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) { GL_SERVICE_LOG("glXMakeContextCurrent" << "(" << static_cast(dpy) << ", " << draw << ", " << read << ", " << ctx << ")"); DCHECK(g_driver_glx.debug_fn.glXMakeContextCurrentFn != nullptr); int result = g_driver_glx.debug_fn.glXMakeContextCurrentFn(dpy, draw, read, ctx); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static int GL_BINDING_CALL Debug_glXMakeCurrent(Display* dpy, GLXDrawable drawable, GLXContext ctx) { GL_SERVICE_LOG("glXMakeCurrent" << "(" << static_cast(dpy) << ", " << drawable << ", " << ctx << ")"); DCHECK(g_driver_glx.debug_fn.glXMakeCurrentFn != nullptr); int result = g_driver_glx.debug_fn.glXMakeCurrentFn(dpy, drawable, ctx); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static int GL_BINDING_CALL Debug_glXQueryContext(Display* dpy, GLXContext ctx, int attribute, int* value) { GL_SERVICE_LOG("glXQueryContext" << "(" << static_cast(dpy) << ", " << ctx << ", " << attribute << ", " << static_cast(value) << ")"); DCHECK(g_driver_glx.debug_fn.glXQueryContextFn != nullptr); int result = g_driver_glx.debug_fn.glXQueryContextFn(dpy, ctx, attribute, value); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static void GL_BINDING_CALL Debug_glXQueryDrawable(Display* dpy, GLXDrawable draw, int attribute, unsigned int* value) { GL_SERVICE_LOG("glXQueryDrawable" << "(" << static_cast(dpy) << ", " << draw << ", " << attribute << ", " << static_cast(value) << ")"); DCHECK(g_driver_glx.debug_fn.glXQueryDrawableFn != nullptr); g_driver_glx.debug_fn.glXQueryDrawableFn(dpy, draw, attribute, value); } static int GL_BINDING_CALL Debug_glXQueryExtension(Display* dpy, int* errorb, int* event) { GL_SERVICE_LOG("glXQueryExtension" << "(" << static_cast(dpy) << ", " << static_cast(errorb) << ", " << static_cast(event) << ")"); DCHECK(g_driver_glx.debug_fn.glXQueryExtensionFn != nullptr); int result = g_driver_glx.debug_fn.glXQueryExtensionFn(dpy, errorb, event); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static const char* GL_BINDING_CALL Debug_glXQueryExtensionsString(Display* dpy, int screen) { GL_SERVICE_LOG("glXQueryExtensionsString" << "(" << static_cast(dpy) << ", " << screen << ")"); DCHECK(g_driver_glx.debug_fn.glXQueryExtensionsStringFn != nullptr); const char* result = g_driver_glx.debug_fn.glXQueryExtensionsStringFn(dpy, screen); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static const char* GL_BINDING_CALL Debug_glXQueryServerString(Display* dpy, int screen, int name) { GL_SERVICE_LOG("glXQueryServerString" << "(" << static_cast(dpy) << ", " << screen << ", " << name << ")"); DCHECK(g_driver_glx.debug_fn.glXQueryServerStringFn != nullptr); const char* result = g_driver_glx.debug_fn.glXQueryServerStringFn(dpy, screen, name); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static int GL_BINDING_CALL Debug_glXQueryVersion(Display* dpy, int* maj, int* min) { GL_SERVICE_LOG("glXQueryVersion" << "(" << static_cast(dpy) << ", " << static_cast(maj) << ", " << static_cast(min) << ")"); DCHECK(g_driver_glx.debug_fn.glXQueryVersionFn != nullptr); int result = g_driver_glx.debug_fn.glXQueryVersionFn(dpy, maj, min); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static void GL_BINDING_CALL Debug_glXReleaseTexImageEXT(Display* dpy, GLXDrawable drawable, int buffer) { GL_SERVICE_LOG("glXReleaseTexImageEXT" << "(" << static_cast(dpy) << ", " << drawable << ", " << buffer << ")"); DCHECK(g_driver_glx.debug_fn.glXReleaseTexImageEXTFn != nullptr); g_driver_glx.debug_fn.glXReleaseTexImageEXTFn(dpy, drawable, buffer); } static void GL_BINDING_CALL Debug_glXSelectEvent(Display* dpy, GLXDrawable drawable, unsigned long mask) { GL_SERVICE_LOG("glXSelectEvent" << "(" << static_cast(dpy) << ", " << drawable << ", " << mask << ")"); DCHECK(g_driver_glx.debug_fn.glXSelectEventFn != nullptr); g_driver_glx.debug_fn.glXSelectEventFn(dpy, drawable, mask); } static void GL_BINDING_CALL Debug_glXSwapBuffers(Display* dpy, GLXDrawable drawable) { GL_SERVICE_LOG("glXSwapBuffers" << "(" << static_cast(dpy) << ", " << drawable << ")"); DCHECK(g_driver_glx.debug_fn.glXSwapBuffersFn != nullptr); g_driver_glx.debug_fn.glXSwapBuffersFn(dpy, drawable); } static void GL_BINDING_CALL Debug_glXSwapIntervalEXT(Display* dpy, GLXDrawable drawable, int interval) { GL_SERVICE_LOG("glXSwapIntervalEXT" << "(" << static_cast(dpy) << ", " << drawable << ", " << interval << ")"); DCHECK(g_driver_glx.debug_fn.glXSwapIntervalEXTFn != nullptr); g_driver_glx.debug_fn.glXSwapIntervalEXTFn(dpy, drawable, interval); } static void GL_BINDING_CALL Debug_glXSwapIntervalMESA(unsigned int interval) { GL_SERVICE_LOG("glXSwapIntervalMESA" << "(" << interval << ")"); DCHECK(g_driver_glx.debug_fn.glXSwapIntervalMESAFn != nullptr); g_driver_glx.debug_fn.glXSwapIntervalMESAFn(interval); } static void GL_BINDING_CALL Debug_glXUseXFont(Font font, int first, int count, int list) { GL_SERVICE_LOG("glXUseXFont" << "(" << font << ", " << first << ", " << count << ", " << list << ")"); DCHECK(g_driver_glx.debug_fn.glXUseXFontFn != nullptr); g_driver_glx.debug_fn.glXUseXFontFn(font, first, count, list); } static void GL_BINDING_CALL Debug_glXWaitGL(void) { GL_SERVICE_LOG("glXWaitGL" << "(" << ")"); DCHECK(g_driver_glx.debug_fn.glXWaitGLFn != nullptr); g_driver_glx.debug_fn.glXWaitGLFn(); } static int GL_BINDING_CALL Debug_glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int* count) { GL_SERVICE_LOG("glXWaitVideoSyncSGI" << "(" << divisor << ", " << remainder << ", " << static_cast(count) << ")"); DCHECK(g_driver_glx.debug_fn.glXWaitVideoSyncSGIFn != nullptr); int result = g_driver_glx.debug_fn.glXWaitVideoSyncSGIFn(divisor, remainder, count); GL_SERVICE_LOG("GL_RESULT: " << result); return result; } static void GL_BINDING_CALL Debug_glXWaitX(void) { GL_SERVICE_LOG("glXWaitX" << "(" << ")"); DCHECK(g_driver_glx.debug_fn.glXWaitXFn != nullptr); g_driver_glx.debug_fn.glXWaitXFn(); } } // extern "C" void DriverGLX::InitializeDebugBindings() { if (!debug_fn.glXBindTexImageEXTFn) { debug_fn.glXBindTexImageEXTFn = fn.glXBindTexImageEXTFn; fn.glXBindTexImageEXTFn = Debug_glXBindTexImageEXT; } if (!debug_fn.glXChooseFBConfigFn) { debug_fn.glXChooseFBConfigFn = fn.glXChooseFBConfigFn; fn.glXChooseFBConfigFn = Debug_glXChooseFBConfig; } if (!debug_fn.glXChooseVisualFn) { debug_fn.glXChooseVisualFn = fn.glXChooseVisualFn; fn.glXChooseVisualFn = Debug_glXChooseVisual; } if (!debug_fn.glXCopyContextFn) { debug_fn.glXCopyContextFn = fn.glXCopyContextFn; fn.glXCopyContextFn = Debug_glXCopyContext; } if (!debug_fn.glXCopySubBufferMESAFn) { debug_fn.glXCopySubBufferMESAFn = fn.glXCopySubBufferMESAFn; fn.glXCopySubBufferMESAFn = Debug_glXCopySubBufferMESA; } if (!debug_fn.glXCreateContextFn) { debug_fn.glXCreateContextFn = fn.glXCreateContextFn; fn.glXCreateContextFn = Debug_glXCreateContext; } if (!debug_fn.glXCreateContextAttribsARBFn) { debug_fn.glXCreateContextAttribsARBFn = fn.glXCreateContextAttribsARBFn; fn.glXCreateContextAttribsARBFn = Debug_glXCreateContextAttribsARB; } if (!debug_fn.glXCreateGLXPixmapFn) { debug_fn.glXCreateGLXPixmapFn = fn.glXCreateGLXPixmapFn; fn.glXCreateGLXPixmapFn = Debug_glXCreateGLXPixmap; } if (!debug_fn.glXCreateNewContextFn) { debug_fn.glXCreateNewContextFn = fn.glXCreateNewContextFn; fn.glXCreateNewContextFn = Debug_glXCreateNewContext; } if (!debug_fn.glXCreatePbufferFn) { debug_fn.glXCreatePbufferFn = fn.glXCreatePbufferFn; fn.glXCreatePbufferFn = Debug_glXCreatePbuffer; } if (!debug_fn.glXCreatePixmapFn) { debug_fn.glXCreatePixmapFn = fn.glXCreatePixmapFn; fn.glXCreatePixmapFn = Debug_glXCreatePixmap; } if (!debug_fn.glXCreateWindowFn) { debug_fn.glXCreateWindowFn = fn.glXCreateWindowFn; fn.glXCreateWindowFn = Debug_glXCreateWindow; } if (!debug_fn.glXDestroyContextFn) { debug_fn.glXDestroyContextFn = fn.glXDestroyContextFn; fn.glXDestroyContextFn = Debug_glXDestroyContext; } if (!debug_fn.glXDestroyGLXPixmapFn) { debug_fn.glXDestroyGLXPixmapFn = fn.glXDestroyGLXPixmapFn; fn.glXDestroyGLXPixmapFn = Debug_glXDestroyGLXPixmap; } if (!debug_fn.glXDestroyPbufferFn) { debug_fn.glXDestroyPbufferFn = fn.glXDestroyPbufferFn; fn.glXDestroyPbufferFn = Debug_glXDestroyPbuffer; } if (!debug_fn.glXDestroyPixmapFn) { debug_fn.glXDestroyPixmapFn = fn.glXDestroyPixmapFn; fn.glXDestroyPixmapFn = Debug_glXDestroyPixmap; } if (!debug_fn.glXDestroyWindowFn) { debug_fn.glXDestroyWindowFn = fn.glXDestroyWindowFn; fn.glXDestroyWindowFn = Debug_glXDestroyWindow; } if (!debug_fn.glXGetClientStringFn) { debug_fn.glXGetClientStringFn = fn.glXGetClientStringFn; fn.glXGetClientStringFn = Debug_glXGetClientString; } if (!debug_fn.glXGetConfigFn) { debug_fn.glXGetConfigFn = fn.glXGetConfigFn; fn.glXGetConfigFn = Debug_glXGetConfig; } if (!debug_fn.glXGetCurrentContextFn) { debug_fn.glXGetCurrentContextFn = fn.glXGetCurrentContextFn; fn.glXGetCurrentContextFn = Debug_glXGetCurrentContext; } if (!debug_fn.glXGetCurrentDisplayFn) { debug_fn.glXGetCurrentDisplayFn = fn.glXGetCurrentDisplayFn; fn.glXGetCurrentDisplayFn = Debug_glXGetCurrentDisplay; } if (!debug_fn.glXGetCurrentDrawableFn) { debug_fn.glXGetCurrentDrawableFn = fn.glXGetCurrentDrawableFn; fn.glXGetCurrentDrawableFn = Debug_glXGetCurrentDrawable; } if (!debug_fn.glXGetCurrentReadDrawableFn) { debug_fn.glXGetCurrentReadDrawableFn = fn.glXGetCurrentReadDrawableFn; fn.glXGetCurrentReadDrawableFn = Debug_glXGetCurrentReadDrawable; } if (!debug_fn.glXGetFBConfigAttribFn) { debug_fn.glXGetFBConfigAttribFn = fn.glXGetFBConfigAttribFn; fn.glXGetFBConfigAttribFn = Debug_glXGetFBConfigAttrib; } if (!debug_fn.glXGetFBConfigFromVisualSGIXFn) { debug_fn.glXGetFBConfigFromVisualSGIXFn = fn.glXGetFBConfigFromVisualSGIXFn; fn.glXGetFBConfigFromVisualSGIXFn = Debug_glXGetFBConfigFromVisualSGIX; } if (!debug_fn.glXGetFBConfigsFn) { debug_fn.glXGetFBConfigsFn = fn.glXGetFBConfigsFn; fn.glXGetFBConfigsFn = Debug_glXGetFBConfigs; } if (!debug_fn.glXGetMscRateOMLFn) { debug_fn.glXGetMscRateOMLFn = fn.glXGetMscRateOMLFn; fn.glXGetMscRateOMLFn = Debug_glXGetMscRateOML; } if (!debug_fn.glXGetSelectedEventFn) { debug_fn.glXGetSelectedEventFn = fn.glXGetSelectedEventFn; fn.glXGetSelectedEventFn = Debug_glXGetSelectedEvent; } if (!debug_fn.glXGetSyncValuesOMLFn) { debug_fn.glXGetSyncValuesOMLFn = fn.glXGetSyncValuesOMLFn; fn.glXGetSyncValuesOMLFn = Debug_glXGetSyncValuesOML; } if (!debug_fn.glXGetVisualFromFBConfigFn) { debug_fn.glXGetVisualFromFBConfigFn = fn.glXGetVisualFromFBConfigFn; fn.glXGetVisualFromFBConfigFn = Debug_glXGetVisualFromFBConfig; } if (!debug_fn.glXIsDirectFn) { debug_fn.glXIsDirectFn = fn.glXIsDirectFn; fn.glXIsDirectFn = Debug_glXIsDirect; } if (!debug_fn.glXMakeContextCurrentFn) { debug_fn.glXMakeContextCurrentFn = fn.glXMakeContextCurrentFn; fn.glXMakeContextCurrentFn = Debug_glXMakeContextCurrent; } if (!debug_fn.glXMakeCurrentFn) { debug_fn.glXMakeCurrentFn = fn.glXMakeCurrentFn; fn.glXMakeCurrentFn = Debug_glXMakeCurrent; } if (!debug_fn.glXQueryContextFn) { debug_fn.glXQueryContextFn = fn.glXQueryContextFn; fn.glXQueryContextFn = Debug_glXQueryContext; } if (!debug_fn.glXQueryDrawableFn) { debug_fn.glXQueryDrawableFn = fn.glXQueryDrawableFn; fn.glXQueryDrawableFn = Debug_glXQueryDrawable; } if (!debug_fn.glXQueryExtensionFn) { debug_fn.glXQueryExtensionFn = fn.glXQueryExtensionFn; fn.glXQueryExtensionFn = Debug_glXQueryExtension; } if (!debug_fn.glXQueryExtensionsStringFn) { debug_fn.glXQueryExtensionsStringFn = fn.glXQueryExtensionsStringFn; fn.glXQueryExtensionsStringFn = Debug_glXQueryExtensionsString; } if (!debug_fn.glXQueryServerStringFn) { debug_fn.glXQueryServerStringFn = fn.glXQueryServerStringFn; fn.glXQueryServerStringFn = Debug_glXQueryServerString; } if (!debug_fn.glXQueryVersionFn) { debug_fn.glXQueryVersionFn = fn.glXQueryVersionFn; fn.glXQueryVersionFn = Debug_glXQueryVersion; } if (!debug_fn.glXReleaseTexImageEXTFn) { debug_fn.glXReleaseTexImageEXTFn = fn.glXReleaseTexImageEXTFn; fn.glXReleaseTexImageEXTFn = Debug_glXReleaseTexImageEXT; } if (!debug_fn.glXSelectEventFn) { debug_fn.glXSelectEventFn = fn.glXSelectEventFn; fn.glXSelectEventFn = Debug_glXSelectEvent; } if (!debug_fn.glXSwapBuffersFn) { debug_fn.glXSwapBuffersFn = fn.glXSwapBuffersFn; fn.glXSwapBuffersFn = Debug_glXSwapBuffers; } if (!debug_fn.glXSwapIntervalEXTFn) { debug_fn.glXSwapIntervalEXTFn = fn.glXSwapIntervalEXTFn; fn.glXSwapIntervalEXTFn = Debug_glXSwapIntervalEXT; } if (!debug_fn.glXSwapIntervalMESAFn) { debug_fn.glXSwapIntervalMESAFn = fn.glXSwapIntervalMESAFn; fn.glXSwapIntervalMESAFn = Debug_glXSwapIntervalMESA; } if (!debug_fn.glXUseXFontFn) { debug_fn.glXUseXFontFn = fn.glXUseXFontFn; fn.glXUseXFontFn = Debug_glXUseXFont; } if (!debug_fn.glXWaitGLFn) { debug_fn.glXWaitGLFn = fn.glXWaitGLFn; fn.glXWaitGLFn = Debug_glXWaitGL; } if (!debug_fn.glXWaitVideoSyncSGIFn) { debug_fn.glXWaitVideoSyncSGIFn = fn.glXWaitVideoSyncSGIFn; fn.glXWaitVideoSyncSGIFn = Debug_glXWaitVideoSyncSGI; } if (!debug_fn.glXWaitXFn) { debug_fn.glXWaitXFn = fn.glXWaitXFn; fn.glXWaitXFn = Debug_glXWaitX; } g_debugBindingsInitialized = true; } void DriverGLX::ClearBindings() { memset(this, 0, sizeof(*this)); } void GLXApiBase::glXBindTexImageEXTFn(Display* dpy, GLXDrawable drawable, int buffer, int* attribList) { driver_->fn.glXBindTexImageEXTFn(dpy, drawable, buffer, attribList); } GLXFBConfig* GLXApiBase::glXChooseFBConfigFn(Display* dpy, int screen, const int* attribList, int* nitems) { return driver_->fn.glXChooseFBConfigFn(dpy, screen, attribList, nitems); } XVisualInfo* GLXApiBase::glXChooseVisualFn(Display* dpy, int screen, int* attribList) { return driver_->fn.glXChooseVisualFn(dpy, screen, attribList); } void GLXApiBase::glXCopyContextFn(Display* dpy, GLXContext src, GLXContext dst, unsigned long mask) { driver_->fn.glXCopyContextFn(dpy, src, dst, mask); } void GLXApiBase::glXCopySubBufferMESAFn(Display* dpy, GLXDrawable drawable, int x, int y, int width, int height) { driver_->fn.glXCopySubBufferMESAFn(dpy, drawable, x, y, width, height); } GLXContext GLXApiBase::glXCreateContextFn(Display* dpy, XVisualInfo* vis, GLXContext shareList, int direct) { return driver_->fn.glXCreateContextFn(dpy, vis, shareList, direct); } GLXContext GLXApiBase::glXCreateContextAttribsARBFn(Display* dpy, GLXFBConfig config, GLXContext share_context, int direct, const int* attrib_list) { return driver_->fn.glXCreateContextAttribsARBFn(dpy, config, share_context, direct, attrib_list); } GLXPixmap GLXApiBase::glXCreateGLXPixmapFn(Display* dpy, XVisualInfo* visual, Pixmap pixmap) { return driver_->fn.glXCreateGLXPixmapFn(dpy, visual, pixmap); } GLXContext GLXApiBase::glXCreateNewContextFn(Display* dpy, GLXFBConfig config, int renderType, GLXContext shareList, int direct) { return driver_->fn.glXCreateNewContextFn(dpy, config, renderType, shareList, direct); } GLXPbuffer GLXApiBase::glXCreatePbufferFn(Display* dpy, GLXFBConfig config, const int* attribList) { return driver_->fn.glXCreatePbufferFn(dpy, config, attribList); } GLXPixmap GLXApiBase::glXCreatePixmapFn(Display* dpy, GLXFBConfig config, Pixmap pixmap, const int* attribList) { return driver_->fn.glXCreatePixmapFn(dpy, config, pixmap, attribList); } GLXWindow GLXApiBase::glXCreateWindowFn(Display* dpy, GLXFBConfig config, Window win, const int* attribList) { return driver_->fn.glXCreateWindowFn(dpy, config, win, attribList); } void GLXApiBase::glXDestroyContextFn(Display* dpy, GLXContext ctx) { driver_->fn.glXDestroyContextFn(dpy, ctx); } void GLXApiBase::glXDestroyGLXPixmapFn(Display* dpy, GLXPixmap pixmap) { driver_->fn.glXDestroyGLXPixmapFn(dpy, pixmap); } void GLXApiBase::glXDestroyPbufferFn(Display* dpy, GLXPbuffer pbuf) { driver_->fn.glXDestroyPbufferFn(dpy, pbuf); } void GLXApiBase::glXDestroyPixmapFn(Display* dpy, GLXPixmap pixmap) { driver_->fn.glXDestroyPixmapFn(dpy, pixmap); } void GLXApiBase::glXDestroyWindowFn(Display* dpy, GLXWindow window) { driver_->fn.glXDestroyWindowFn(dpy, window); } const char* GLXApiBase::glXGetClientStringFn(Display* dpy, int name) { return driver_->fn.glXGetClientStringFn(dpy, name); } int GLXApiBase::glXGetConfigFn(Display* dpy, XVisualInfo* visual, int attrib, int* value) { return driver_->fn.glXGetConfigFn(dpy, visual, attrib, value); } GLXContext GLXApiBase::glXGetCurrentContextFn(void) { return driver_->fn.glXGetCurrentContextFn(); } Display* GLXApiBase::glXGetCurrentDisplayFn(void) { return driver_->fn.glXGetCurrentDisplayFn(); } GLXDrawable GLXApiBase::glXGetCurrentDrawableFn(void) { return driver_->fn.glXGetCurrentDrawableFn(); } GLXDrawable GLXApiBase::glXGetCurrentReadDrawableFn(void) { return driver_->fn.glXGetCurrentReadDrawableFn(); } int GLXApiBase::glXGetFBConfigAttribFn(Display* dpy, GLXFBConfig config, int attribute, int* value) { return driver_->fn.glXGetFBConfigAttribFn(dpy, config, attribute, value); } GLXFBConfig GLXApiBase::glXGetFBConfigFromVisualSGIXFn( Display* dpy, XVisualInfo* visualInfo) { return driver_->fn.glXGetFBConfigFromVisualSGIXFn(dpy, visualInfo); } GLXFBConfig* GLXApiBase::glXGetFBConfigsFn(Display* dpy, int screen, int* nelements) { return driver_->fn.glXGetFBConfigsFn(dpy, screen, nelements); } bool GLXApiBase::glXGetMscRateOMLFn(Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator) { return driver_->fn.glXGetMscRateOMLFn(dpy, drawable, numerator, denominator); } void GLXApiBase::glXGetSelectedEventFn(Display* dpy, GLXDrawable drawable, unsigned long* mask) { driver_->fn.glXGetSelectedEventFn(dpy, drawable, mask); } bool GLXApiBase::glXGetSyncValuesOMLFn(Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc) { return driver_->fn.glXGetSyncValuesOMLFn(dpy, drawable, ust, msc, sbc); } XVisualInfo* GLXApiBase::glXGetVisualFromFBConfigFn(Display* dpy, GLXFBConfig config) { return driver_->fn.glXGetVisualFromFBConfigFn(dpy, config); } int GLXApiBase::glXIsDirectFn(Display* dpy, GLXContext ctx) { return driver_->fn.glXIsDirectFn(dpy, ctx); } int GLXApiBase::glXMakeContextCurrentFn(Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) { return driver_->fn.glXMakeContextCurrentFn(dpy, draw, read, ctx); } int GLXApiBase::glXMakeCurrentFn(Display* dpy, GLXDrawable drawable, GLXContext ctx) { return driver_->fn.glXMakeCurrentFn(dpy, drawable, ctx); } int GLXApiBase::glXQueryContextFn(Display* dpy, GLXContext ctx, int attribute, int* value) { return driver_->fn.glXQueryContextFn(dpy, ctx, attribute, value); } void GLXApiBase::glXQueryDrawableFn(Display* dpy, GLXDrawable draw, int attribute, unsigned int* value) { driver_->fn.glXQueryDrawableFn(dpy, draw, attribute, value); } int GLXApiBase::glXQueryExtensionFn(Display* dpy, int* errorb, int* event) { return driver_->fn.glXQueryExtensionFn(dpy, errorb, event); } const char* GLXApiBase::glXQueryExtensionsStringFn(Display* dpy, int screen) { return driver_->fn.glXQueryExtensionsStringFn(dpy, screen); } const char* GLXApiBase::glXQueryServerStringFn(Display* dpy, int screen, int name) { return driver_->fn.glXQueryServerStringFn(dpy, screen, name); } int GLXApiBase::glXQueryVersionFn(Display* dpy, int* maj, int* min) { return driver_->fn.glXQueryVersionFn(dpy, maj, min); } void GLXApiBase::glXReleaseTexImageEXTFn(Display* dpy, GLXDrawable drawable, int buffer) { driver_->fn.glXReleaseTexImageEXTFn(dpy, drawable, buffer); } void GLXApiBase::glXSelectEventFn(Display* dpy, GLXDrawable drawable, unsigned long mask) { driver_->fn.glXSelectEventFn(dpy, drawable, mask); } void GLXApiBase::glXSwapBuffersFn(Display* dpy, GLXDrawable drawable) { driver_->fn.glXSwapBuffersFn(dpy, drawable); } void GLXApiBase::glXSwapIntervalEXTFn(Display* dpy, GLXDrawable drawable, int interval) { driver_->fn.glXSwapIntervalEXTFn(dpy, drawable, interval); } void GLXApiBase::glXSwapIntervalMESAFn(unsigned int interval) { driver_->fn.glXSwapIntervalMESAFn(interval); } void GLXApiBase::glXUseXFontFn(Font font, int first, int count, int list) { driver_->fn.glXUseXFontFn(font, first, count, list); } void GLXApiBase::glXWaitGLFn(void) { driver_->fn.glXWaitGLFn(); } int GLXApiBase::glXWaitVideoSyncSGIFn(int divisor, int remainder, unsigned int* count) { return driver_->fn.glXWaitVideoSyncSGIFn(divisor, remainder, count); } void GLXApiBase::glXWaitXFn(void) { driver_->fn.glXWaitXFn(); } void TraceGLXApi::glXBindTexImageEXTFn(Display* dpy, GLXDrawable drawable, int buffer, int* attribList) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXBindTexImageEXT") glx_api_->glXBindTexImageEXTFn(dpy, drawable, buffer, attribList); } GLXFBConfig* TraceGLXApi::glXChooseFBConfigFn(Display* dpy, int screen, const int* attribList, int* nitems) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXChooseFBConfig") return glx_api_->glXChooseFBConfigFn(dpy, screen, attribList, nitems); } XVisualInfo* TraceGLXApi::glXChooseVisualFn(Display* dpy, int screen, int* attribList) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXChooseVisual") return glx_api_->glXChooseVisualFn(dpy, screen, attribList); } void TraceGLXApi::glXCopyContextFn(Display* dpy, GLXContext src, GLXContext dst, unsigned long mask) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCopyContext") glx_api_->glXCopyContextFn(dpy, src, dst, mask); } void TraceGLXApi::glXCopySubBufferMESAFn(Display* dpy, GLXDrawable drawable, int x, int y, int width, int height) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCopySubBufferMESA") glx_api_->glXCopySubBufferMESAFn(dpy, drawable, x, y, width, height); } GLXContext TraceGLXApi::glXCreateContextFn(Display* dpy, XVisualInfo* vis, GLXContext shareList, int direct) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateContext") return glx_api_->glXCreateContextFn(dpy, vis, shareList, direct); } GLXContext TraceGLXApi::glXCreateContextAttribsARBFn(Display* dpy, GLXFBConfig config, GLXContext share_context, int direct, const int* attrib_list) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateContextAttribsARB") return glx_api_->glXCreateContextAttribsARBFn(dpy, config, share_context, direct, attrib_list); } GLXPixmap TraceGLXApi::glXCreateGLXPixmapFn(Display* dpy, XVisualInfo* visual, Pixmap pixmap) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateGLXPixmap") return glx_api_->glXCreateGLXPixmapFn(dpy, visual, pixmap); } GLXContext TraceGLXApi::glXCreateNewContextFn(Display* dpy, GLXFBConfig config, int renderType, GLXContext shareList, int direct) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateNewContext") return glx_api_->glXCreateNewContextFn(dpy, config, renderType, shareList, direct); } GLXPbuffer TraceGLXApi::glXCreatePbufferFn(Display* dpy, GLXFBConfig config, const int* attribList) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreatePbuffer") return glx_api_->glXCreatePbufferFn(dpy, config, attribList); } GLXPixmap TraceGLXApi::glXCreatePixmapFn(Display* dpy, GLXFBConfig config, Pixmap pixmap, const int* attribList) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreatePixmap") return glx_api_->glXCreatePixmapFn(dpy, config, pixmap, attribList); } GLXWindow TraceGLXApi::glXCreateWindowFn(Display* dpy, GLXFBConfig config, Window win, const int* attribList) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXCreateWindow") return glx_api_->glXCreateWindowFn(dpy, config, win, attribList); } void TraceGLXApi::glXDestroyContextFn(Display* dpy, GLXContext ctx) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyContext") glx_api_->glXDestroyContextFn(dpy, ctx); } void TraceGLXApi::glXDestroyGLXPixmapFn(Display* dpy, GLXPixmap pixmap) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyGLXPixmap") glx_api_->glXDestroyGLXPixmapFn(dpy, pixmap); } void TraceGLXApi::glXDestroyPbufferFn(Display* dpy, GLXPbuffer pbuf) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyPbuffer") glx_api_->glXDestroyPbufferFn(dpy, pbuf); } void TraceGLXApi::glXDestroyPixmapFn(Display* dpy, GLXPixmap pixmap) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyPixmap") glx_api_->glXDestroyPixmapFn(dpy, pixmap); } void TraceGLXApi::glXDestroyWindowFn(Display* dpy, GLXWindow window) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXDestroyWindow") glx_api_->glXDestroyWindowFn(dpy, window); } const char* TraceGLXApi::glXGetClientStringFn(Display* dpy, int name) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetClientString") return glx_api_->glXGetClientStringFn(dpy, name); } int TraceGLXApi::glXGetConfigFn(Display* dpy, XVisualInfo* visual, int attrib, int* value) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetConfig") return glx_api_->glXGetConfigFn(dpy, visual, attrib, value); } GLXContext TraceGLXApi::glXGetCurrentContextFn(void) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentContext") return glx_api_->glXGetCurrentContextFn(); } Display* TraceGLXApi::glXGetCurrentDisplayFn(void) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentDisplay") return glx_api_->glXGetCurrentDisplayFn(); } GLXDrawable TraceGLXApi::glXGetCurrentDrawableFn(void) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentDrawable") return glx_api_->glXGetCurrentDrawableFn(); } GLXDrawable TraceGLXApi::glXGetCurrentReadDrawableFn(void) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetCurrentReadDrawable") return glx_api_->glXGetCurrentReadDrawableFn(); } int TraceGLXApi::glXGetFBConfigAttribFn(Display* dpy, GLXFBConfig config, int attribute, int* value) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetFBConfigAttrib") return glx_api_->glXGetFBConfigAttribFn(dpy, config, attribute, value); } GLXFBConfig TraceGLXApi::glXGetFBConfigFromVisualSGIXFn( Display* dpy, XVisualInfo* visualInfo) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetFBConfigFromVisualSGIX") return glx_api_->glXGetFBConfigFromVisualSGIXFn(dpy, visualInfo); } GLXFBConfig* TraceGLXApi::glXGetFBConfigsFn(Display* dpy, int screen, int* nelements) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetFBConfigs") return glx_api_->glXGetFBConfigsFn(dpy, screen, nelements); } bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy, GLXDrawable drawable, int32_t* numerator, int32_t* denominator) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetMscRateOML") return glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator); } void TraceGLXApi::glXGetSelectedEventFn(Display* dpy, GLXDrawable drawable, unsigned long* mask) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetSelectedEvent") glx_api_->glXGetSelectedEventFn(dpy, drawable, mask); } bool TraceGLXApi::glXGetSyncValuesOMLFn(Display* dpy, GLXDrawable drawable, int64_t* ust, int64_t* msc, int64_t* sbc) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetSyncValuesOML") return glx_api_->glXGetSyncValuesOMLFn(dpy, drawable, ust, msc, sbc); } XVisualInfo* TraceGLXApi::glXGetVisualFromFBConfigFn(Display* dpy, GLXFBConfig config) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetVisualFromFBConfig") return glx_api_->glXGetVisualFromFBConfigFn(dpy, config); } int TraceGLXApi::glXIsDirectFn(Display* dpy, GLXContext ctx) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXIsDirect") return glx_api_->glXIsDirectFn(dpy, ctx); } int TraceGLXApi::glXMakeContextCurrentFn(Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXMakeContextCurrent") return glx_api_->glXMakeContextCurrentFn(dpy, draw, read, ctx); } int TraceGLXApi::glXMakeCurrentFn(Display* dpy, GLXDrawable drawable, GLXContext ctx) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXMakeCurrent") return glx_api_->glXMakeCurrentFn(dpy, drawable, ctx); } int TraceGLXApi::glXQueryContextFn(Display* dpy, GLXContext ctx, int attribute, int* value) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryContext") return glx_api_->glXQueryContextFn(dpy, ctx, attribute, value); } void TraceGLXApi::glXQueryDrawableFn(Display* dpy, GLXDrawable draw, int attribute, unsigned int* value) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryDrawable") glx_api_->glXQueryDrawableFn(dpy, draw, attribute, value); } int TraceGLXApi::glXQueryExtensionFn(Display* dpy, int* errorb, int* event) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryExtension") return glx_api_->glXQueryExtensionFn(dpy, errorb, event); } const char* TraceGLXApi::glXQueryExtensionsStringFn(Display* dpy, int screen) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryExtensionsString") return glx_api_->glXQueryExtensionsStringFn(dpy, screen); } const char* TraceGLXApi::glXQueryServerStringFn(Display* dpy, int screen, int name) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryServerString") return glx_api_->glXQueryServerStringFn(dpy, screen, name); } int TraceGLXApi::glXQueryVersionFn(Display* dpy, int* maj, int* min) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXQueryVersion") return glx_api_->glXQueryVersionFn(dpy, maj, min); } void TraceGLXApi::glXReleaseTexImageEXTFn(Display* dpy, GLXDrawable drawable, int buffer) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXReleaseTexImageEXT") glx_api_->glXReleaseTexImageEXTFn(dpy, drawable, buffer); } void TraceGLXApi::glXSelectEventFn(Display* dpy, GLXDrawable drawable, unsigned long mask) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSelectEvent") glx_api_->glXSelectEventFn(dpy, drawable, mask); } void TraceGLXApi::glXSwapBuffersFn(Display* dpy, GLXDrawable drawable) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSwapBuffers") glx_api_->glXSwapBuffersFn(dpy, drawable); } void TraceGLXApi::glXSwapIntervalEXTFn(Display* dpy, GLXDrawable drawable, int interval) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSwapIntervalEXT") glx_api_->glXSwapIntervalEXTFn(dpy, drawable, interval); } void TraceGLXApi::glXSwapIntervalMESAFn(unsigned int interval) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXSwapIntervalMESA") glx_api_->glXSwapIntervalMESAFn(interval); } void TraceGLXApi::glXUseXFontFn(Font font, int first, int count, int list) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXUseXFont") glx_api_->glXUseXFontFn(font, first, count, list); } void TraceGLXApi::glXWaitGLFn(void) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXWaitGL") glx_api_->glXWaitGLFn(); } int TraceGLXApi::glXWaitVideoSyncSGIFn(int divisor, int remainder, unsigned int* count) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXWaitVideoSyncSGI") return glx_api_->glXWaitVideoSyncSGIFn(divisor, remainder, count); } void TraceGLXApi::glXWaitXFn(void) { TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXWaitX") glx_api_->glXWaitXFn(); } } // namespace gfx