glXWaitX is often ineffective
Submitted by Karl Tomlinson
Assigned to mes..@..op.org
The description of glXWaitX says "X rendering calls made prior to glXWaitX are guaranteed to be executed before GL rendering calls made after glXWaitX", but glXWaitX is currently a no-op when direct rendering unless the current drawable is a window and single buffered. In situations where dri2_copy_drawable is used it performs the required X server round trip.
At one point in history glXWaitX called XSync with direct rendering: http://cgit.freedesktop.org/mesa/mesa/commit/src/glx/x11?id=63b51b5cf17ddde09b72a2811296f37b9a4c5ad2
It seems XSync should be used when dri2_copy_drawable is not necessary. There is some discussion in this thread: http://lists.freedesktop.org/archives/mesa-dev/2011-June/008124.html
Perhaps LastKnownRequestProcessed NextRequest can be used to determine whether the XSync is necessary. They could also detect that the XSync is not necessary after dri2_copy_drawable.
glxWaitGL looks like a no-op in similar situations. I wonder whether at least a glFlush is required here.
applegl and indirect contexts appear to support glXWaitX/GL.