Vendor Neutral libGL
libGL is the system library exposing the OpenGL and GLX APIs to applications. While Mesa's implementation of libGL is capable of loading different drivers for different devices, third-party drivers use a different internal interface and therefore need to replace the system libGL. This has been a long-standing source of bugs and user frustration.
A new, vendor-neutral libGL implementation (colloquially "glvnd") has been developed to address this problem.
I've categorized this change as System Wide rather than Self-Contained, as OpenGL support is a critical-path system component across multiple products. However, the change itself is intended to be as self-contained as possible.
- Name: Adam Jackson
- Email: firstname.lastname@example.org
- Release notes owner:
- Targeted release: Fedora 25
- Last updated: 2016-08-22
- Tracker bug: <will be assigned by the Wrangler>
Benefit to Fedora
Users will have the ability to install Mesa and third-party GL drivers in parallel and have them actually work. This enables additional performance and functionality for hybrid GPU configurations (high-end laptops, for instance).
Developers can target the full "desktop" OpenGL API for non-X11 environments without requiring the X11 client libraries.
- Proposal owners:
The X server has already been updated to support the GLX protocol extensions required for glvnd functionality. The libglvnd package itself will need to be added to the distribution. Mesa will need to be reconfigured at build time to build a glvnd backend intead of its own libGL.
All of the above is essentially done, and simply needs change approval.
- Other developers:
Other Fedora developers do not *need* to do anything, though there are some changes they may wish to make.
Several (probably most) packages say
BuildRequires: mesa-libGL-devel instead of
BuildRequires: pkgconfig(gl). For compatibility, the mesa-libGL-devel subpackage will continue to exist, and will Require the appropriate devel packages for libglvnd.
External repositories that provide packages for third-party drivers will need to update their packaging.
- Release engineering:
Once libglvnd is added to the distribution, no further intervention from release engineering should be required. glvnd will become the new provider of the libGL.so.1 soname instead of mesa-libGL.
- List of deliverables: No change.
- Policies and guidelines:
The guidelines should document the preferred pkgconfig forms for BuildRequires.
- Trademark approval: N/A (not needed for this Change)
On upgrade, the mesa-libGL package will still exist, but will now supply the Mesa backend for libglvnd instead of libGL itself. Existing GL applications will need their dependency on libGL.so.1 satisfied, so dnf will install libglvnd to accomplish this.
How To Test
This feature will be implicitly tested by other existing test paths. For example, as the Gnome desktop requires a working GL implementation, if Gnome works, then glvnd works. The feature is also tested by standard OpenGL testing, eg. piglit and other test suites.
Users of external repositories for third-party drivers may end up with a slightly different process for installing their driver; the hope and expectation is that this process will be simpler and easier.
As described above: libglvnd is added to the OS, mesa is reconfigured to use it.
- Contingency mechanism: Mesa remains as the system libGL implementation; libglvnd is rebuilt to filter out the Provides for the library so as not to conflict.
- Contingency deadline: Beta freeze I suppose, although from a packaging standpoint the slowest part of the change is how long it takes to push through koji.
- Blocks release? No.
- Blocks product? No.