Status update, April 2021
Hi all!
Let’s start this status update with the biggest news this month: Sway 1.6 and wlroots 0.13.0 have been released! Alongside the user-visible improvements mentioned in the release notes and the numerous bug fixes, we’ve put a lot of effort into under-the-hood changes as well, mostly inside wlroots. wlroots 0.13.0 is the first release to contain the initial set of renderer v6 patches. We have a few regressions (for very old hardware, and for multi-GPU nouveau setups) mainly due to our unusual new internal architecture, but overall I’m pretty happy with the outcome.
I’ve continued renderer v6 efforts this month too. The DRM backend can now make use of atomic test-only commits to check whether a buffer can be directly displayed without any copy on an output. I’m in the process of re-working our buffer management logic to make it less OpenGL-specific and avoid needless DMA-BUF import operations.
In parallel, bl4ckb0ne and nyorain have continued working on a Pixman and a Vulkan renderer, respectively. The Pixman renderer is almost complete and getting quite close to being mergeable. It has required to adapt quite a few wlroots interfaces which were definitely not designed for software renderers, but all of that work is now done and merged. The Vulkan renderer works and just needs reviews, I’ll start reading the patches in detail in the next days. As expected, it’s quite verbose.
As the last wlroots news, we’ve removed all of our session management code, and we now entirely rely on libseat. This is exciting news because the session code is tricky to get right, we now have a single code-path, we better support our non-systemd users, and we can share all of this goodness with other Wayland compositors! Weston is next on the line, initial support for libseat has been merged a few days ago, and the plan is to make libseat mandatory there too.
In other graphics-related news, the Valve-sponsored gamescope compositor now better supports format modifiers, removing the need for some fragile driver-specific workarounds in the Vulkan code. I’ve also worked on improving support for AMD’s hardware-accelerated video decoding path to directly display buffers on screen without any intermediate copy. This has led me to improve VA-API’s support for format modifiers (although some more work is still required in this area). I’ve also submitted Mesa and amdgpu patches to support tiled multi-planar buffers. If that sounds alien to you, it just means hardware-accelerated video decoding can be used in more situations.
A lot of interesting patches have been pushed to my IRC bouncer project soju.
Among other things, soju now correctly handles IRC
case-mapping thanks to taiite. This is necessary to avoid
bugs and confusion when a user types /query simon
but the recipient is
actually named “Simon”. Additionally, soju now no longer looses the
backlog on restart, so upgrades can be performed
without disturbing users too much. I think we’re getting quite close to an
initial release!
As a maintainer of the builds.sr.ht FreeBSD image, I’ve added a new FreeBSD
13.0 image following the recent upstream release.
If your build manifests are using freebsd/latest
, they’ve been automatically
upgraded. Enjoy!
As always, there’s a ton of background work I’ve been doing as well. I’ve reviewed a lot of patches across many projects (wayland-protocols, libdrm, Mesa, various Go libraries, of course wlroots/Sway, and many more). I’ve been doing more paperwork-y tasks as well, such as removing legacy chunks out of the Wayland website or helping out with some X.Org domain name migrations. This kind of work takes time and is not so exciting to mention in a status update, but it’s necessary to keep the projects going.
That’s all for this month! Thanks a lot for your support, see you!