From c3191e37bbdc3c956da74e03a04f902a0845987c Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 10 Aug 2018 13:36:04 +0100 Subject: [PATCH] Add support for GLVND split libGLX/libOpenGL libraries. Closes #1069 --- renderdoc/driver/gl/glx_hooks.cpp | 1 + renderdoc/driver/gl/glx_platform.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/renderdoc/driver/gl/glx_hooks.cpp b/renderdoc/driver/gl/glx_hooks.cpp index 1f1fb63b2..b836e6248 100644 --- a/renderdoc/driver/gl/glx_hooks.cpp +++ b/renderdoc/driver/gl/glx_hooks.cpp @@ -673,6 +673,7 @@ void GLXHook::RegisterHooks() // register library hooks LibraryHooks::RegisterLibraryHook("libGL.so", &GLXHooked); LibraryHooks::RegisterLibraryHook("libGL.so.1", &GLXHooked); + LibraryHooks::RegisterLibraryHook("libGLX.so.0", &GLXHooked); // register EGL hooks #define GLX_REGISTER(func) \ diff --git a/renderdoc/driver/gl/glx_platform.cpp b/renderdoc/driver/gl/glx_platform.cpp index 60aa2ffdd..8b597b3ab 100644 --- a/renderdoc/driver/gl/glx_platform.cpp +++ b/renderdoc/driver/gl/glx_platform.cpp @@ -42,6 +42,9 @@ void *GetGLHandle() if(!handle) handle = Process::LoadModule("libGL.so"); + if(!handle) + handle = Process::LoadModule("libGLX.so.0"); + return handle; } @@ -279,6 +282,14 @@ class GLXPlatform : public GLPlatform if(!ret) ret = Process::GetFunctionAddress(GetGLHandle(), funcname); + if(!ret) + { + // last ditch attempt, try the libOpenGL version + static void *OpenGLhandle = Process::LoadModule("libOpenGL.so.0"); + if(OpenGLhandle) + ret = Process::GetFunctionAddress(OpenGLhandle, funcname); + } + return ret; }