← 返回日报
略读 预计 5 分钟

XLibre XServer 25.2 released

摘要

该版本在 glamor EGL 中对 DRI3 与 GBM 进行了解耦,并引入 dumb GBM backend,使 EGL 初始化、GLX 与 DRI3 能更好支持 Nvidia 专有驱动 v470+,同时优化路径与设备检测。 kdrive 子系统进行大幅重构,加入多屏支持、DRI3/glamor、X-Video、evdev 自动检测、VT 切换与线程化输入,并修复按键处理与 RandR 相关行为;Xfbdev 与 Xvfb 也扩展了 GLX、DRI3 与视频能力。 此外,新增 Coreboot/EFI/VESA DRM 驱动支持,Intel DDX 限制到 pre-gen3 硬件,并引入多项基础设施改动(如 XDG Base Dir、构建选项与 CI 改造)。本次发布包含约 976 个 commit,修复大量内存泄漏、越界访问、空指针与图形/输入子系统崩溃问题,并同步清理代码结构与扩展模块组织方式。

荐读理由

XLibre 在 X11 Server 中重构 glamor EGL 并解耦 DRI3 与 GBM,同时扩展 Nvidia 驱动支持与 kdrive 子系统多屏和输入栈改造,使 Linux 图形栈在较新 NVIDIA/DRI3 路径上的兼容性与性能路径发生实际变化,可用于你在做本地 GPU 渲染或 Linux 运行环境选型时重新评估 X11/驱动兼容风险与技术边界。

原文

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

Lobsters · 2 赞 · 0 评 讨论 → 阅读原文 →

这条对你有帮助吗?