I take this from a developer of Bumblebee project (http://bumblebee-project.org/
OK, so Steam does not seem to respect the OpenGL ABI and wants to explicitly link against OpenGL extensions functions. This is a bug on Steam side.
This is the list of the functions that steamui.so expects to get from libGL.so.1 (they should be obtained via glXGetProcAddress instead):
glAttachShaderHowever, their presence is not guaranteed even if all corresponding extensions are supported. On the contrary, OpenGL ABI document at http://www.opengl.org/registry/ABI/ specifies the following:
3.4. The libraries must export all OpenGL 1.2, GLU 1.3, GLX 1.3, and ARB_multitexture entry points statically.
It's possible (but unlikely) that additional ARB or vendor extensions will be mandated before the ABI is finalized. Applications should not expect to link statically against any entry points not specified here.
Note the last sentence. Please obtain the pointers to those functions via glXGetProcAddress instead.
Why do I care: I'm developing an OpenGL offloading hack useful for Linux laptops with Nvidia Optimus hybrid graphics (https://github.com/amonakov/primus) that works by providing an "intermediate" libGL.so.1 and handles rerouting rendering to a rendering slave, reading back the framebuffer, and displaying it via the primary card. Therefore, I need to provide GLX and GL APIs from primus' libGL, and I prefer not adding more functions than required by the OpenGL ABI.
Please also note that Mesa developers expressed a desire to stop providing extension symbols from Mesa's libGL.so as well (sorry, can find the URL to that discussion now).
He also saids that prevents the use of Steam on Nvidia cards with Optimus technology…
Source in French:http://forum.ubuntu-fr.org/viewtopic.php?pid=11440351#p11440351http://forum.ubuntu-fr.org/viewtopic.php?pid=11441711#p11441711