Running glxinfo on system A with DISPLAY set to system B, which is DRI capable, results in the correct "server GLX extension", the correct "client GLX extensions", but INCORRECT "GLX extensions". I dug a bit into the code and it appears that libGL is acting as though direct rendering is enabled, even though the display is remote (and direct rendering is impossible). Since the non-existant DRI driver didn't enable any GLX extensions in its __driCreateNewScreen function, the extensions aren't enabled. So, it looks like the test to determine whether or not direct rendering is possible in glXQueryExtensionsString is wrong.
Created attachment 2278 [details] Example of incorrect glxinfo output.
Assigning bug to myself. I should have a patch by July 7th or so.
Fixed by looking at driScreen.private instead of driDisplay.private. In order to create the set of available extensions, we have to know if direct-rendering is possible on a given screen. It is not possible to determine this by just looking at driDisplay.private in the display structure. However, it is possible to determine this by looking at driScreen.private in the screen structure. This field is only non-NULL if a DRI driver has been successfully loaded and bootstrapped. Once we get to that point, we know that direct-rendering is at least theoretically possible.
Mass version move, cvs -> git
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.