XLibre XServer 25.2.0 已发布
XLibre XServer 25.2.0 Released

原始链接: https://github.com/X11Libre/xserver/wiki/XLibre-XServer-25.2-Changes

稳定版 **25.2.0** 于 2026 年 6 月 21 日发布。这是一个重要的里程碑,包含了约 976 次代码提交和显著的架构改进。 **主要亮点:** * **Nvidia 与 Glamor 集成:** 对 `glamor_egl` 进行了大规模重构,将 DRI3 与 GBM 解耦,从而为 EGL、GLX 和 DRI3 提供对 Nvidia 专有驱动(v470+)的稳健支持。这些改进同样适用于 `Xfbdev`、`Xvfb` 和 `modesetting` 驱动。 * **Kdrive 全面升级:** Kdrive 子系统进行了重大更新,包括支持多屏幕、evdev 自动检测、VT 切换以及多线程输入处理。 * **稳定性与安全性:** 该版本解决了许多长期存在的问题,包括内存泄漏、越界读取、空指针解引用,以及涉及 `modesetting`、`radeon` 和 `amdgpu` 驱动的崩溃问题。 * **基础设施:** 构建系统和持续集成(CI)实现了现代化,包括迁移至 `meson`、改进测试套件(`pyxtest`)以及更清晰的 X 扩展模块化组织。 * **常规改进:** 增加了对 XDG Base Dir Spec 0.8 的支持,改进了光标处理,并对代码库、文档和许可协议头进行了全面清理。 此版本确保了与现代硬件更好的兼容性,并提高了虚拟环境和传统帧缓冲区环境的稳定性。

XLibre XServer 25.2.0 has been released, marking continued active development for the X11 display system a year after the project's fork. Discussion on Hacker News highlights a divide between X11 supporters and the industry’s shift toward Wayland. While some users express surprise at the ongoing maintenance, others—including the original poster—advocate for the project’s independence from the "Freedesktop/Wayland" ecosystem, which they believe is dominated by corporate interests. Proponents argue that X11 remains essential for established workflows, citing its stability for legacy desktop environments like KDE 3.5 and tools such as i3 and dmenu. The conversation also touched on the perceived stagnation of official Xorg development, which some describe as being in "Apache Office mode." Despite the controversy and debate surrounding the project's necessity, the contributors are actively addressing long-standing "papercut" bugs and performing code refactoring, ensuring the long-term viability of the X11 platform for its dedicated user base.
相关文章

原文

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.

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

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

联系我们 contact @ memedata.com