Andy Ritger - libglvnd Status Update

Slides, Video

Libglvnd is a set of libraries that allow multiple OpenGL drivers to coexist on the same system. It includes vendor-neutral client libraries for GLX and EGL, which select and load one or more vendor-specific drivers at runtime, and then forward each GLX, EGL, and OpenGL call from an application to the appropriate driver.

As an added benefit, OpenGL functions are dispatched by a common library which is shared by both EGL and GLX. As a result, the OpenGL entrypoints are interchangeable, regardless of what library they're exported from or which window-system interface is used. This allows, for example, using the libGLES libraries with both GLX and EGL applications.

The driver interface for GLX is stable, and is now implemented in both Mesa and the NVIDIA binary driver. The EGL interface is not implemented yet as of this writing, but a draft of the interface is ready.

This talk will describe how dispatching works for different functions. It will also cover how the client libraries select a driver in both the GLX interface and the draft of the EGL interface.