Unfortunately, I think I may know what's happening. I suspect that the window manager is taking advantage of the GL_EXT_x11_sync_object extension (https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_x11_sync_object.txt). Ugh. After years of moving in the direction of separating GLX objects from X11 objects, now X11 objects are being married directly with OpenGL?! Who green-lighted this?! This extension is unfortunately implemented in a way that would not be particularly easy to interpose. The problem is that, since the X11 sync object is created against an X window and outside of the scope of GLX, I have no way of knowing whether it will be used for this OpenGL extension or whether it will be used for regular X11 functions. If it's used for both, then it's impossible for VirtualGL to emulate the functionality of GL_EXT_x11_sync_object, because the sync object would have to simultaneously live on both the 2D and 3D X servers (which defeats the purpose of synchronization.)
I could interpose glGetString() and remove GL_EXT_x11_sync_object from the OpenGL extension list, but the Mutter code doesn't seem to check for the existence of that extension before using it. Thus, I think the best approach is to make our interposed version of glXGetProcAddress() return NULL if passed "glImportSyncEXT". Can you test whether the attached patch fixes the problem?
--
You received this message because you are subscribed to the Google Groups "VirtualGL User Discussion/Support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to virtualgl-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/virtualgl-users/340151ed-049b-516b-b535-c3b273d4cb14%40virtualgl.org.
The patch has been integrated. For correctness, VGL now also
removes GL_EXT_x11_sync_object from the list of
extensions returned by glGetString() or glGetStringi(). I've
seen some applications that check for the existence of an OpenGL
extension, use glXGetProcAddress() to load the address of a
function that that extension provides, and don't check the
return value of glXGetProcAddress(). Thus, I felt it prudent to
do the right thing.
To view this discussion on the web visit https://groups.google.com/d/msgid/virtualgl-users/0b12dee6-82f8-0284-a837-c3fb6f66a2eb%40gmail.com.