Skip to content

XLibre XServer 25.2 Changes

Enrico Weigelt, metux IT consult edited this page Jun 19, 2026 · 2 revisions

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.

New Features

glamor / glamor_egl: Decoupled DRI3 from gbm, Nvidia Support

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:

kdrive: Major Overhaul — Multi-Screen, DRI3/glamor, X-Video, evdev, VT Switching

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:

Xfbdev: X-Video, GLX, DRI3 through glamor

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.

Xvfb: DRI3/glamor and GLX Support

The virtual framebuffer X server now supports DRI3/glamor and GLX through glamor.

modesetting: GBM Bo Wrapper, Cursor Fixes, DRI Device Selection

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: Version 1.4

DRI3 now returns version 1.4 and frees formats/modifiers cache at closeScreen.

New Hardware Support

  • Coreboot DRM / VESA DRM / EFI DRM driver support added
  • Intel DDX restricted to pre-gen3 hardware (#1817)

Infrastructure

  • -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

Bug Fixes

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)

Infrastructure / CI / Build System

  • 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)

Code Cleanup

  • treewide: declare variables where needed, replace DDXPoint by xPoint, use X_REQUEST_* / X_REPLY_FIELD_* macros, fix missing includes of <assert.h>
  • 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)

Documentation

  • 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

ABI Status

  • module_abi_tag = xlibre-25 (no bump needed)
  • ABI_VIDEODRV = 28.0, ABI_XINPUT = 26.0, ABI_EXTENSION = 11.0 (stable)

Further Comments

See the release issue for the full checklist: Release 25.2 (summer solstice 2026) #2953

Clone this wiki locally