Skip to content

Compatibility of XLibre

callmetango edited this page Jul 18, 2025 · 15 revisions

X Window System Protocol Version 11

XLibre is a display server implementation of the X Window System Protocol Version 11 - Wikipedia (X11). While XLibre changes its ABI - Wikipedia in major versions, one of the project's main goals is to stay backwards compatible with the API - Wikipedia of the X11 protocol. So all existing X11 clients implementing this protocol are supposed to work with XLibre the same way as before.

Xlib a.k.a. libX11

Right now, the X Window System protocol client library - Wikipedia (Xlib) is still maintained by Xorg and they'll probably continue to do so. There is no desire by the XLibre maintainers to add anything new to Xlib. It's just for legacy applications that haven't been migrated to XCB - Wikipedia yet.

If Xorg decides to stop maintaining XLib, the XLibre project will consider forking it as well.

Device Dependent X (DDX) Drivers

For each type of graphics card or input device there usually is a Device Dependent X (DDX) driver. In XLibre, these drivers have been forked from the X.org drivers to further improve and adapt them to the changes in the XLibre ABI. Please always use the XLibre drivers from the XLibre Github repositories to ensure compatibility with the XLibre Xserver.

The ABIs of the XLibre Xserver are versioned and loadable modules such as the DDX drivers will not be loaded by default if the version number is found to be incompatible with the Xserver. This version number will be increased by every major release of the XLibre Xserver.

Nvidia proprietary driver

Even when changing the ABI of XLibre, the project strives to keep the proprietary Nvidia driver working. To use the proprietary driver, please add the following to your X configuration, e.g. xorg.conf:

Section "ServerFlags"
    Option "IgnoreABI" "1"
EndSection

This forces the Nvidia driver to be loaded, even if it was compiled for a different ABI version, which is the case with XLibre.

A note from the XLibre developers

Maintaining compatibility with the proprietary Nvidia driver is double-edged. On the one hand, it would be desirable from a software architecture and FOSS approach perspective to replace this driver with an open source driver like nouveau - Wikipedia. On the other hand, the XLibre project does not want to scare people away or force them to spend a lot of money on new hardware. And XLibre doesn't see it as a "feature" to break existing functionality like some other projects do.

The whole situation would be much better if the Nvidia folks would just start cleaning up their code, split their big driver blob - Wikipedia into different modules per ABI, stop doing questionable hacks and use the driver API as it was designed (e.g. not highjacking the protocol dispatcher, doing their own RANDR implementation, etc, etc). Given Nvidia's resources, this should be perfectly feasible. If you like to tell Nvidia what you think about the situation, feel free to do so at 575 release feedback & discussion - Graphics / Linux / Linux - NVIDIA Developer Forums.

There is also an intentionally large warning in the Xorg.{n}.log when loading the proprietary Nvidia driver reminding you of this very fact.

Reporting problems with XLibre and Nvidia

If you run into trouble using the proprietary Nvida driver with XLibre, please see the list of known Nvidia related issues and report any new issues to Issues · X11Libre/xserver. Members of our community use the Nvidia drivers themselves and will do their best to solve any problems.

References

Clone this wiki locally