YServer 1.5.0 brings direct scanout and ARM support to Rust's X11 server
Jos Dehaes shipped YServer 1.5.0 today, packing in direct compositor scanout, reverse-PRIME GPU support, and aarch64 binaries in one fell swoop. The Rust X11 server is now at 559 stars on GitHub, and the project is clearly getting traction outside of its creator's garage.
Keep in mind that YServer was never meant to be a Xorg clone. Dehaes made that clear from the start. The goal is to provide a working X11 server for modern Linux desktops while shedding 25 years of legacy code. That means no non-TrueColor visuals, no indirect GLX, and no DDX driver ABI. Just a clean implementation that talks directly to the kernel's DRM/KMS subsystem.
What's actually new in 1.5.0
Between the previous release and v1.5.0, the project logged roughly 70 commits across 163 changed files. That's a serious chunk of work for a single maintainer, though Dehaes is finally getting help. First-time contributor @ariel3259 handled a massive portion of the GPU memory pipeline, including DRI3 1.4 syncobj support through DRM. AprilGrimoire added reverse-PRIME handling, and erpalma wired up Mesa's OML MSC rate queries.
The headline feature is direct compositor scanout. Instead of rendering a fullscreen window through a compositor and then copying it to the screen, YServer now flips the pixmap straight to the CRTC. You skip an entire rendering pass. The result should be lower latency and less GPU load for fullscreen content. The project claims damage-clipped repaints cut compositing work to roughly one-third for non-composited desktops using the wlroots model.
If you're running a hybrid laptop, reverse-PRIME support matters. It lets the X server handle display output on one GPU while another does the heavy rendering. That's the exact setup most modern gaming laptops ship with, and it's been a common pain point for X11. The server now also honors per-device pointer acceleration profiles, which means your mouse won't act weird when you switch between trackpad and external mouse.
On top of that, the project now builds binary packages for both x86_64 and aarch64. That opens the door for Apple Silicon via Asahi Linux and Qualcomm Snapdragon platforms alongside traditional Intel and AMD hardware. Dehaes has tested it on an M1 MacBook Air, an M2 MacBook Pro, a Snapdragon X1 laptop running the Turnip driver, and a fair bit of AMD and NVIDIA gear.
The philosophy here is refreshingly blunt. YServer isn't trying to win a compatibility contest. It implements 20 core X11 extensions, enough to run Cinnamon, MATE, XFCE, i3, awesome, and even sonic (the KDE Plasma X11 fork). You can run Steam games on it, and the README claims performance sits "almost" on par with Xorg. Whether that holds up under heavy Vulkan workloads is still TBD, but the damage-clipped repaint and direct scanout features suggest it won't be far off.
Installation is straightforward if you're comfortable with the terminal. You can build from source with just install-local, or grab prebuilt packages from the AUR, Fedora, Debian, Ubuntu, or Alpine. The starty launcher gives you startx-style session management. The project also runs the X.Org X Test Suite regularly to check protocol compliance, taking about 50 minutes per run.
It's a rather ambitious project for a solo developer, though the commit history and hardware list suggest Dehaes has done the legwork. The Rust implementation removes an entire class of memory safety bugs that Xorg just inherited over decades of C code. The lack of legacy support hurts in some edge cases, but for a modern desktop stack, it's arguably a feature rather than a bug.
Keep in mind that this is still an early-stage server. You'll want to test it against your specific GPU and desktop environment before making it your daily driver. If you're curious about the future of Linux graphics, head to the GitHub repository to see the 1.5.0 release notes and join the discussion.
