Technology
XLibre XServer 25.2.0 Released
Key Points
- Notifications You must be signed in to change notification settings - Fork 232 XLibre XServer 25.2 Changes We released the stable version of our 25.2 series as 25.2.0 on Jun 21, 2026. For the announcement, please see the discussion thread. The internal architecture of glamor_egl was significantly refactored: xf86-specific code was split out, DRI3 was decoupled from gbm, and a dumb gbm backend was added.
-
Notifications
You must be signed in to change notification settings - Fork 232
XLibre XServer 25.2 Changes
We released the stable version of our 25.2 series as 25.2.0 on Jun 21, 2026. For the announcement, please see the discussion thread.
The internal architecture of glamor_egl was significantly refactored: xf86-specific code was split out, DRI3 was decoupled from gbm, and a dumb gbm backend was added. This enables support for proprietary Nvidia drivers v470+ for EGL initialization, GL context creation, GLX, and DRI3 — with faster and simpler DRI3 paths and improved Nvidia detection overall.
References:
The kdrive subsystem received extensive improvements: multi-screen support, DRI3/glamor, X-Video through glamor, evdev input autodetection, VT switching, and threaded input. Key handling was improved with proper scancodes for Delete/Keypad Delete and the KdKeyCodeToKeySym
function was ported to xkb. The fbdev variant gained modesetting via RandR with split framebuffer modesetting. The ephyr variant gained a dummy refresh rate through RandR for Proton >= 8 compatibility.
References:
- kdrive: Add proper scancodes for the Delete and Keypad Delete keys #2817
- kdrive: Port
KdKeyCodeToKeySym
to xkb and update man pages accordingly #2842
The Xfbdev server now supports X-Video through glamor (works with Nvidia 390+), GLX through glamor (Nvidia 470+), and DRI3 through glamor (Nvidia 470+). Various new command-line arguments for configuration were added.
The virtual framebuffer X server now supports DRI3/glamor and GLX through glamor.
Fully ported to GBM bo wrapper, with cursor rotation/reflection fixes, DRI device selection, XRGB8888 for 24-bit front bo, and support for more cursor sizes on legacy probe.
DRI3 now returns version 1.4 and frees formats/modifiers cache at closeScreen.
- Coreboot DRM / VESA DRM / EFI DRM driver support added
- Intel DDX restricted to pre-gen3 hardware (#1817)
-
-verbose
generic CLI option added - XDG Base Dir Spec 0.8 support
- SingleDriver server flag
- Config file split for Nvidia modules (#2166)
- New
-Dgbm
meson build option - New EDID parsing entry point
- Module version macros (
XF86_MODULE_*
) - xf86: ported patch from Xorg to enable all I/O ports (fixes vesa driver segfault)
- Xext: dpms entrypoints refactored to DIX/DDX split
- Xephyr:
-name
and-title
CLI options
This release includes approximately 976 commits since 25.1.0 with many important bug fixes:
- xkb: Multiple OOB/off-by-one fixes, memory leak in ProcXkbGetKbdByName, locked/latched indicator desync
- Xi: Gesture grab type check, off-by-one in UpdateDeviceState, keycodes > 255 fix, FTBS on *BSD, missing free in AddInputDevice(), zero device/pointer/state reply buffers, NULL pointer dereference in ProcXIChangeCursor
- modesetting: VRAM/resource leak (#1809), unaligned pixmap check, OOB read clamp, vmware cursor pitch quirks (#1816), recursive unflip, spam fix (#1202), byte-swap ARGB cursor uploads on big-endian (#2889)
- present: Memory leaks, byte swapping, revert problematic check_flip change
- glx: Negative size in FeedbackBuffer/SelectBuffer, memory leak in DestroyPixmap, null deref
- cursor: AllocARGBCursor leak/double-free
- render: Multiple memory leaks on error paths
- Xext/sync: Use-after-free in miSyncTriggerFence()
- Xext/shm: Fix ShmGetImage()
- Xext/damage: Protect against NULL screen priv/funcs, fix missing include of windowstr.h
- record: Parentheses around macro argument symbols
- xfree86: Zero gamma ramp reply padding in vidmode
- randr: Byte swaps, SetScreenSize transformation check (#2159), primaryOutput delete, request size check
- dix: Infinite loop on server teardown, null ptr deref in doListFontsAndAliases, inttype mismatches (#683), zero padding in ProcQueryColors reply
- os/auth: Error paths on /dev/urandom, switch to getrandom(), sha1 with Nettle 4.0, MUSL compat (#2890)
- os/log: Fix syslog identification, handle NULL string argument (#2883)
- dri2: Deduplicate attachments in do_get_buffer (#2885) (prevents OOB/crash)
- glamor: Modifier handling fixes, error path cleanup (#2910)
- rootless: Protect alpha channel for Render operations (#2907)
- xwin: Multiwindow mode focus handling, WM_ACTIVE fix (#2903), realloc failure catch (#2915), prevent sprintf overflow in glxWinErrorMessage
- xquartz: Fix remaining non-portable code (#2832)
- meson: Fix features requiring >= 1.0.0 (#2946), fix boolean option value type (#2947)
Long-standing issues resolved:
- X server crash at exit with radeon and modesetting drivers (#1848)
- Invisible windows with compositing (amdgpu/modesetting) (#2653)
- modesetting+nouveau failure (#2645)
- Crash in virt-manager with virtio (#1740)
- Crash via XPresentPixmap backed by non-aligned XShmPixmap strides (#1754)
- Crash on suspend/resume with Nvidia (#1761)
- Mouse drifting at 1000Hz (#1723)
- Xephyr segfault on ProcXIQueryDevice (#1782)
- Blackscreen at login (#2750)
- Mesa 26.0.4 compat (#2152)
- PRIME render offload issues (#2146)
- amdgpu undefined symbol (#1755)
- CI: parallel driver builds, Ubuntu apt caching action, Cygwin mirror fixes, signed-off check, driver builds restructured
- CI: Arch build job switched to callmetango's archlinux-build-package-action (#2954)
- CI: job for automatically restarting jobs on transient failure with automatic cleanup
- CI: retry-transient-failed: clean up old jobs
- CI: added Alpine Linux build job
- meson:
-Dgbm
option, xorg-sdk-only install, separate Xephyr/Xfbdev options, lower libdrm requirement - Test suite: backport new pytest-based test suite (pyxtest) from X.Org (#2909)
- treewide: declare variables where needed, replace DDXPoint by xPoint, use X_REQUEST_* / X_REPLY_FIELD_* macros, fix missing includes of
- xfree86: SDK headers moved to
include/
, dropped legacy ifdefs, parser cleanup - kdrive: replace __uid_t/__gid_t by standard types, small cleanups to Xfbdev/Xvfb (#2837)
- dri2: moved to Xext/ for all X servers, devprivates access macros
- Toplevel extensions moved into Xext/: glx, randr, render, record, composite, present, dri3, xkb, Xi, xfixes, pseudoramiX
- Existing Xext/ extensions reorganized into their own subdirectories: xres, xtest, shape, saver, sync, security, geext, xcmisc, bigreq, xf86bigfont, dbe, panoramiX, shm, dpms, Xv, xselinux
- Xext: dpms entrypoints refactored for DIX/DDX, composite drop ancient unused debug code
- Xext: shape EventType resource by devPrivate
- os: unexport SeatId, move to dix settings, drop CLIENTIDS ifdef, rename
__size_assert()
to__SIZE_ASSERT()
- include: extnsionst.h: drop unnecessary includes
- meson: replace explicit -Wall with warning_level=1 in default_options
- xnest: no longer needs DISABLE_EXT_DPMS
- xf86: drop no longer needed entries from default driver list for Intel (#2908)
-
doc/CODE_OVERVIEW.md
added for new contributors - Xfbdev man page, Xvfb man page updates, Xephyr man page updates
- xfree86 man: SingleDriver flag documented
- COPYING: major cleanup — added missing license texts (BSD-2, BSD-3, ISC, MIT variants, NVIDIA/Khronos), dropped copyright/license notices for removed code, updated copyright dates/holders
- README.md: update Matrix space address, one year of XLibre announcement
-
module_abi_tag
=xlibre-25
(no bump needed) - ABI_VIDEODRV = 28.0, ABI_XINPUT = 26.0, ABI_EXTENSION = 11.0 (stable)
See the release issue for the full checklist: Release 25.2 (summer solstice 2026) #2953