One year ago a new Linux OpenGL ABI was proposed
to make dealing with Linux OpenGL libraries easier and cleaner, among other benefits. The Linux OpenGL changes that will ultimately affect all Linux graphics drivers is nearing fruition.
The new Linux OpenGL ABI was originally proposed by NVIDIA but has wide support among developers and even for its implications on desktop end-users. The new Linux OpenGL ABI is set to define better interaction between applications and the OpenGL libraries (including EGL and GLX) and to allow for multiple OpenGL vendor drivers (e.g. the binary NVIDIA and AMD drivers along with the different Gallium3D/Mesa drivers) to all co-exist and work happily on the same file-system, and even to allow for multiple vendor OpenGL drivers to work/function together from the same application process. The new OpenGL ABI will still maintain backwards compatibility for existing applications and drivers.
With this new ABI the common libOpenGL.so.1 and libGLESv2.so.1 files will now be vendor-neutral client API libraries, along with libGLX.so.1 and libEGL.so.1. These driver/vendor-neutral files will in turn query and use the appropriate GL/GLES/EGL/GLX library that is then installed in a post-fixed form, e.g. libGLX_NVIDIA.so.1. This is a huge advantage as there's no longer any collision about different Linux OpenGL drivers trying to install to /usr/lib/libOpenGL.so.1
, etc. This is easier on driver developers, distribution vendors, and end-users -- it should be a clear-cut win once fully implemented.
NVIDIA and others working on this new ABI are hoping these vendor-neutral libraries will require little maintenance, will become widely distributed by Linux distributions, and will be contributed to Khronos for hosting. NVIDIA is already making plans to ship their driver under this new ABI. For dealing with distributions that don't yet ship the vendor-neutral libraries, NVIDIA's Linux driver installer will ship its own copy of the vendor-neutral libraries to install when detected they're missing.
The code for the vendor-neutral dispatch libraries was published a few weeks ago via NVIDIA's libglvnd project
. The GLVND project right now implements OpenGL and GLX support while EGL, OpenGL ES 1.0, and OpenGL ES 2.0/3.0 support is still to be implemented.
More details on this ongoing work surrounding the new Linux OpenGL ABI can be found by Andy Ritger's PDF slides
from his presentation this week at the XDC2013 conference.