Linux interop is maturing fast… thanks to a games console
Valve's work on Steam OS 3 for the Steam Deck helps everyone, corporate users included
Open Source Summit Steam OS is the Arch-based distro for a handheld Linux games console, and Valve is aggressively pushing Linux's usability and Windows interoperability for the device.
Two unusual companies, Valve Software and Igalia, are working together to improve the Linux-based OS of the Steam Deck handheld games console. The device runs a Linux distro called Steam OS 3.0, but this is a totally different distro from the original Steam OS it announced a decade ago. Steam OS 1 and 2 were based on Debian, but Steam OS 3 is based on Arch Linux, as Igalia developer Alberto García described in a talk entitled How SteamOS is contributing to the Linux ecosystem.
He explained that although Steam OS is built from some fairly standard components – the normal filesystem hierarchy, GNU user space,
dbus – Steam OS has quite a few unique features. It has two distinct user interfaces: by default, it starts with the Steam games launcher, but users can also choose an option called Switch to Desktop, which results in a regular KDE Plasma desktop, with the ability to install anything: a web browser, normal Linux tools, and non-Steam games.
Obviously, though, Steam OS's raison d'être is to run Steam games, and most of those are Windows games which will never get native Linux versions. Valve's solution is Proton, an open-source tool to run Windows games on Linux. It's formed from a collection of different FOSS packages, notably:
Wine, the compatibility layer for Windows APIs.
VKD3D-Proton, which translates DirectX 12 calls to Vulkan.
And also the GStreamer open source multimedia framework and other libraries.
The result is a remarkable degree of compatibility for some of the most demanding Windows apps around – Proton's compatibility database, ProtonDB, offers these impressive stats:
Deck Verified Games
▸ verified: 3,886
▸ verified or playable: 11,503
Games on ProtonDB
▸ recommended by three or more: 8,106
▸ recommended by two or more: 11,275
▸ recommended by at least one: 18,760
Proton was released by Valve in 2018 and is still in very active development. It's also actively involved in Wine development now, working alongside Codeweavers, whose efforts The Reg first reported on in 2000.
Wherever possible, Wine converts Windows API calls to Linux ones, but sometimes, there is no matching Linux API. If there isn't, García said, "Wine needs to implement the missing parts. This can result in overhead, and it's not always easily solvable in userspace. Solution: new Linux features to fill in the missing gaps."
One recent example is the new
futex_waitv() call in kernel 5.16, which brings a new API to Linux that's like Win32's
WaitForMultipleObjects() call, as this Collabora blog post explains in depth. Another patch brings optional case-insensitivity to the F2FS, the Flash-friendly file system. As another example, Valve and its partners are also working on more reliable user-space spinlocks.
A significant way that Steam OS differs from its Arch parent distro is that, like Chrome OS, it uses dual root partitions with failover: the active instance of the OS updates the other instance, so that if the update fails for some reason, it can automatically fail-over back to the original, unmodified instance. The snag is that Steam OS 3 uses Btrfs: Btrfs identifies filesystems by their UUID, and it really doesn't like it if it finds two partitions with the same UUID. Igalia engineer Guilherme Piccoli wrote a patch to make Btrfs able to handle this, as well as another to improve the performance of split lock detector handling.
- Long-term support for Linux kernels is about to get a lot shorter
- GNU turns 40: Stallman's baby still not ready for prime time, but hey, there's cake
- These days you can teach old tech a bunch of new tricks
- Intel seems to think Wi-Fi 7 is too cool for old-school Windows 10
Some of this illustrates the general thrust of the development being done: taking features that do already work, and making them work much faster to improve games performance on a relatively modestly specified device. The Steam Deck is based on an AMD Zen2-based "Van Gogh" SoC, codenamed Aerith after a character from Final Fantasy 7. This uses a custom AMD GPU driver called RADV, as well as a custom shader compiler, ACO. Igalia engineer Melissa Wen is working with Valve and AMD to improve the Linux Direct Rendering Manager [PDF] and its handling of high dynamic range (HDR) displays.
Steam OS is also an immutable distro, like Fedora Silverblue and Endless OS. So, both its root partitions are normally read-only, and apps can only be installed via Flatpak. As former Elementary OS developer Cassidy Blaede, now with Endless, points out, in this way, the very end-user focused Steam Deck is acting as a Trojan horse, persuading desktop users to adopt Flatpak. That too is driving improvements: for instance, while it uses XDG portals to associate Flatpaks with file types, this is complicated by having two UIs, the Steam one and KDE. The result is additional improvements in portal handling. It's good that people are thinking about this stuff.
There is much too much work going on to fit into a 40 minute session, and García talks quite fast as it is. His 49-page presentation [PDF] is dense and full of links. He skimmed over improvements to removable drive formatting, KDE's apps, icons, and drives handling, SDL, the Pipewire audio server, and more.
Valve is a highly atypical company; its uniquely flat management structure is even the subject of academic study. Igalia, too, is a flat, worker-owned cooperative. Although Valve's original plan for the Steam Box wasn't a big hit, the Steam Deck is proving far more popular, and is literally putting Linux in the hands of one of the most Windows-centric audiences: what's sometimes called the AAA games marketplace. Although its firmly aimed at gamers, this is important work. Most of the commercial R&D effort in Linux goes into server-focused work, neglecting the desktop.
This vulture maintains that ChromeOS is a Linux distro. They've been selling strongly for a decade. When Linux laptops outsold Macs in 2016, that meant that was the first Year of Linux on the desktop.
But although it's getting there, ChromeOS is admittedly not a general-purpose distro. Even though it has a similarly narrow primary focus, Steam OS definitely can be, and Valve is working hard to ensure that all the improvements and refinements it makes are pushed back upstream, so that any distro on any hardware can make use of them – and the performance and functionality improvements from Steam OS helps all Linux users. ®