SlideShare a Scribd company logo
1 of 49
Download to read offline
How SteamOS is contributing
to the Linux ecosystem
Alberto García
Igalia
Open Source Summit Europe
Bilbao, September 2023
1
About me
Igalian since 2001
Debian developer
Working on SteamOS
Previous projects: QEMU, Maemo, ...
2
3
The Steam Deck
Handheld gaming computer released by Valve in 2022
Custom operating system: SteamOS 3
Versions 1 and 2 have been discontinued
Successful consumer device with standard Linux components
4
The power of open source software
How has SteamOS contributed to the Linux ecosystem?
Disclaimer:
The list of examples in this presentation is by no means complete
Contributions by different developers, companies, and regular users
5
A closer look at the Steam Deck
6
User interface
7
SteamOS under the hood
Linux distribution, based on Arch Linux
Standard components with some customizations
FHS-based layout, GNU userspace, systemd, dbus
Unlocked by default, full access to the OS
8
Gaming mode
9
Desktop mode
10
Desktop mode
Regular KDE Plasma desktop
You can install anything:
Web browser
Tools
Non-Steam games
Usable like a regular desktop computer
11
Easily accessible
12
Gaming on Linux
13
Linux OS, Windows games
SteamOS is a Linux-based OS
Most Steam games are for Windows
Most will never get a Linux version
Solution: Proton
14
Proton
Tool to run Windows games on Linux
Collection of different open source packages, notably:
Wine: Compatibility layer for Windows APIs
DXVK: Translates Direct3D 9-11 into Vulkan
VKD3D-Proton: Translates Direct3D 12 into Vulkan
Also GStreamer and other libraries
Published by Valve in 2018
Very actively developed
https://github.com/ValveSoftware/Proton
15
Wine
Run Windows apps on Linux
Not an emulator, the code runs directly on the CPU
Windows APIs implemented using Linux APIs and other standards
Developed by CodeWeavers in partnership with Valve
https://source.winehq.org/git/wine.git/
https://github.com/ValveSoftware/wine
16
Implementing Windows APIs
If the APIs are similar ⇨ no problem
Otherwise Wine needs to implemented the missing parts
This can result in overhead
Not always easily solvable in userspace
Solution: new Linux features to fill in the missing gaps
17
Windows synchronization functions
WaitForMultipleObjects(): used by many Windows games
No direct equivalent in Linux: implemented using futex()
Inefficient: restricted to a single object
Performance problems in heavily multithreaded games
Solution: new futex API
18
New futex API
futex: fast user-space locking
Can only wait on a single object
Only 32-bit futexes
Hard to use and hard to extend
New API (Linux 5.16): futex_waitv()
Similar to WaitForMultipleObjects()
New API (wip): futex2
Work by André Almeida
https://lwn.net/Articles/866112/
19
20
Case insensitive filesystem
Windows filesystems are traditionally case insensitive
Apps expect that data.bin and DATA.BIN are the same file
Linux filesystems are case sensitive
Slow solution: implement this in Wine
Fast solution: make ext4 case insensitive
Work by Gabriel Krisman
Later added to F2FS by Daniel Rosenberg
https://lwn.net/Articles/784041/
https://lore.kernel.org/all/20190719000322.106163-3-drosen@google.com/
21
Other contributions to the Linux kernel
22
Reliable userspace spinlocks
Spinlock: efficient synchronization mechanism
Used extensively in the kernel
Hard to implement reliably in user space
Work by André Almeida, Mathieu Desnoyers
Presented at the OSS EU this week
https://lwn.net/Articles/931789/
23
btrfs same-fsid feature
btrfs identifies a filesystem by its fsid
You cannot mount two filesystems with the same id
Problem: this can happen in systems with A/B partitioning
Solution: add mechamism to support this scenario
Work by Guilherme Piccoli
https://lore.kernel.org/linux-btrfs/20230504170708.787361-1-gpiccoli@igalia.com/
24
Split-lock detector handling
Atomic operations on non-aligned memory can cause a denial of service
The kernel slows them down to prevent this
Problem: many games use them
Solution: add a way to control this behavior
Work by Guilherme Piccoli
https://lwn.net/Articles/911219/
25
More kernel features
panic notifiers refactor
kdumpst: tool for collecting data on a kernel crash
Arch Linux pstore and kdump tool, supports GRUB and both
initcpio/dracut as init systems
Work by Guilherme Piccoli
https://kernel-recipes.org/en/2023/schedule/panic-attack/
https://gitlab.freedesktop.org/gpiccoli/kdumpst
26
And many other improvements and bug fixes...
27
Graphics
28
RADV
Mesa Vulkan driver for AMD GPUs
Developed by Valve and other contributors
Alternative to AMD's official drivers
Most popular driver, shipped by most distros
ACO: a shader compiler for AMD graphics
Reduces stuttering, increases FPS
Developed by Valve, announced in 2019
https://steamcommunity.com/games/221410/announcements/detail/1602634609636894200
29
Advanced color in Linux: HDR
Linux DRM exposes a small set of color properties
Proposals to extend the DRM color API have stalled
AMD GPUs have additional color capabilities
New work: driver-specific color API for AMD drivers
Allows displaying content with High Dynamic Range (HDR)
Supported in userspace by the Gamescope compositor
Available in the upcoming SteamOS 3.5
Melissa Wen (Igalia), Joshua Ashton (Valve), Harry Wentland (AMD)
https://melissawen.github.io/blog/2023/08/21/amd-steamdeck-colors
30
Better handling of GPU resets
GPUs are complex and can crash
No standard API to report the problem to userspace
Roadmap:
Standarize how DRM reports GPU hangs to userspace
Standarize how userspace drivers deal with a hang
Standarize what compositors do after a reset
Work (in progress) by André Almeida
Presented at the North American OSS
https://www.youtube.com/watch?v=qpBLju1l9_w
31
Asynchronous page flip in atomic API
Improve the atomic DRM API to add asynchronous page flipping
Work by André Almeida
Presented at the XDC 2022
https://www.youtube.com/watch?v=qayPPIfrqtE
32
Gamescope
A micro-compositor for games, developed by Valve
Allows:
Spoofing resolutions
Upscaling
Frame rate limiting
Runs the Steam Deck's game UI
Available in your favorite Linux distro
https://github.com/ValveSoftware/gamescope
33
General OS work
34
SteamOS 3
Arch Linux with a customization layer on top
Almost all packages come directly from Arch, unmodified
Policy: upstream everything
Original developer
Arch (when appropriate)
35
Immutable OS
SteamOS has an immutable, read-only root filesystem
A/B partitioning scheme
Users are not expected to use the package manager or do anything that
touches the root filesystem
How to install new software then?
36
Adding software to an immutable OS
Steam games: Steam store
Desktop apps: Flatpak
Also used in other distros like Silverblue or Endless OS
37
Flatpak
A sandboxed app framework for the Linux desktop
Apps are
Handled directly by their developers
Distro-independent
Isolated from the OS
Flathub: the Linux app store
More than 2000 apps available
Primary distribution channel for some apps (e.g. Bottles)
38
https://mastodon.blaede.family/@cassidy/111031129234702967
39
XDG Portals
A way for apps to interact with the host
Used by Flatpak, but also by others
Portals define D-Bus interfaces for things like:
Access to files
Opening URIs
Screenshots
Settings
40
Selecting the right portals
Portal APIs are implemented by desktop-specific backends (GTK, KDE, ...)
Not all backends work on all desktop environments
Developers cannot test all posible desktops
This can cause crashes, timeouts and other issues
Many backends can be installed at the same time
Problem: limited way to select which portal to use
Affects the Steam Deck: two graphical sessions
41
New mechanism to configure portals
Desktops can select which portals to use
Feature added to xdg-desktop-portal 1.18.0
Soon in all major distros
Work by Emmanuele Bassi
https://github.com/flatpak/xdg-desktop-portal/issues/906
42
Bugfixes and new features: KDE
Discover: handle updates with large numbers of packages
Work by Harald Sitter
Improve detection of new icons when an app is installed
Work by David Redondo
Better handling of udev events from external drives
Work by Alberto García and David Edmundson
https://invent.kde.org/plasma/discover/-/merge_requests/630
https://invent.kde.org/frameworks/kded/-/merge_requests/21
https://bugs.kde.org/show_bug.cgi?id=467751
43
Bugfixes and new features: UDisks
Pass arbitrary options to mkfs
Mount a filesystem on behalf of a different user
Handle filesystem labels with non-printable characters
Work by Alberto García
https://github.com/storaged-project/udisks/issues/583
https://github.com/storaged-project/udisks/issues/1065
https://github.com/storaged-project/udisks/issues/1056
44
And many more
Network Manager
ALSA
Pipewire
SDL
...
45
Conclusion
SteamOS is a fairly standard Linux system
Policy: upstream everything
Contributions to the Linux kernel, graphics, desktop, ...
Brings new users and app developers closer to Linux
46
Thanks!
47
48
How SteamOS is contributing to the Linux ecosystem

More Related Content

What's hot

Linux history & features
Linux history & featuresLinux history & features
Linux history & featuresRohit Kumar
 
Android and android versions
Android and android versionsAndroid and android versions
Android and android versionsMegha Jain
 
Android OTA updates
Android OTA updatesAndroid OTA updates
Android OTA updatesGary Bisson
 
ABS 2012 - Android Device Porting Walkthrough
ABS 2012 - Android Device Porting WalkthroughABS 2012 - Android Device Porting Walkthrough
ABS 2012 - Android Device Porting WalkthroughBenjamin Zores
 
Android booting sequece and setup and debugging
Android booting sequece and setup and debuggingAndroid booting sequece and setup and debugging
Android booting sequece and setup and debuggingUtkarsh Mankad
 
Android Security
Android SecurityAndroid Security
Android SecurityLars Jacobs
 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverNanik Tolaram
 
Android security
Android securityAndroid security
Android securityMobile Rtpl
 
A deep dive into Android OpenSource Project(AOSP)
A deep dive into Android OpenSource Project(AOSP)A deep dive into Android OpenSource Project(AOSP)
A deep dive into Android OpenSource Project(AOSP)Siji Sunny
 

What's hot (20)

Linux - Introductions to Linux Operating System
Linux - Introductions to Linux Operating SystemLinux - Introductions to Linux Operating System
Linux - Introductions to Linux Operating System
 
Linux history & features
Linux history & featuresLinux history & features
Linux history & features
 
Deep Dive into the AOSP
Deep Dive into the AOSPDeep Dive into the AOSP
Deep Dive into the AOSP
 
Android and android versions
Android and android versionsAndroid and android versions
Android and android versions
 
U boot-boot-flow
U boot-boot-flowU boot-boot-flow
U boot-boot-flow
 
Linux Systems: Getting started with setting up an Embedded platform
Linux Systems: Getting started with setting up an Embedded platformLinux Systems: Getting started with setting up an Embedded platform
Linux Systems: Getting started with setting up an Embedded platform
 
Android OTA updates
Android OTA updatesAndroid OTA updates
Android OTA updates
 
ABS 2012 - Android Device Porting Walkthrough
ABS 2012 - Android Device Porting WalkthroughABS 2012 - Android Device Porting Walkthrough
ABS 2012 - Android Device Porting Walkthrough
 
Android booting sequece and setup and debugging
Android booting sequece and setup and debuggingAndroid booting sequece and setup and debugging
Android booting sequece and setup and debugging
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
Android Security
Android SecurityAndroid Security
Android Security
 
Automotive android
Automotive androidAutomotive android
Automotive android
 
Android Security
Android SecurityAndroid Security
Android Security
 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
 
Linux
Linux Linux
Linux
 
Hacking Android OS
Hacking Android OSHacking Android OS
Hacking Android OS
 
Android security
Android securityAndroid security
Android security
 
UsbDk at a Glance 
UsbDk at a Glance UsbDk at a Glance 
UsbDk at a Glance 
 
A deep dive into Android OpenSource Project(AOSP)
A deep dive into Android OpenSource Project(AOSP)A deep dive into Android OpenSource Project(AOSP)
A deep dive into Android OpenSource Project(AOSP)
 
Linux Booting Process
Linux Booting ProcessLinux Booting Process
Linux Booting Process
 

Similar to How SteamOS is contributing to the Linux ecosystem

Embedded Linux Multimedia
Embedded Linux MultimediaEmbedded Linux Multimedia
Embedded Linux MultimediaCaglar Dursun
 
Introduction to Linux for Windows Users
Introduction to Linux for Windows UsersIntroduction to Linux for Windows Users
Introduction to Linux for Windows UsersRobert McDermott
 
XXXsrc 2016 -the record of the past year-
XXXsrc 2016 -the record of the past year-XXXsrc 2016 -the record of the past year-
XXXsrc 2016 -the record of the past year-Akio OBATA
 
Linux gaming landscape
Linux gaming landscapeLinux gaming landscape
Linux gaming landscapeRené Ribaud
 
group6 report
group6  reportgroup6  report
group6 reportgroup6ait
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitIgalia
 
Maemo Development Environment
Maemo Development EnvironmentMaemo Development Environment
Maemo Development Environmentjtukkine
 
ERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsChristian Charreyre
 
Article may11 bsdmag
Article may11 bsdmagArticle may11 bsdmag
Article may11 bsdmagDru Lavigne
 
Graphical libraries
Graphical librariesGraphical libraries
Graphical librariesguestbd40369
 
FMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxFMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxEmbarcadero Technologies
 
LXDE Icos2008 Presentation
LXDE Icos2008 PresentationLXDE Icos2008 Presentation
LXDE Icos2008 PresentationMario B.
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialAnne Nicolas
 
OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...
OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...
OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...Paris Open Source Summit
 
Software Disasters
Software DisastersSoftware Disasters
Software DisastersArno Huetter
 

Similar to How SteamOS is contributing to the Linux ecosystem (20)

Embedded Linux Multimedia
Embedded Linux MultimediaEmbedded Linux Multimedia
Embedded Linux Multimedia
 
Introduction to Linux for Windows Users
Introduction to Linux for Windows UsersIntroduction to Linux for Windows Users
Introduction to Linux for Windows Users
 
XXXsrc 2016 -the record of the past year-
XXXsrc 2016 -the record of the past year-XXXsrc 2016 -the record of the past year-
XXXsrc 2016 -the record of the past year-
 
Linux gaming landscape
Linux gaming landscapeLinux gaming landscape
Linux gaming landscape
 
group6 report
group6  reportgroup6  report
group6 report
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
 
Linux Presentation
Linux PresentationLinux Presentation
Linux Presentation
 
Windows 3.0 And 3.1
Windows 3.0 And 3.1Windows 3.0 And 3.1
Windows 3.0 And 3.1
 
Ict 5
Ict 5Ict 5
Ict 5
 
Maemo Development Environment
Maemo Development EnvironmentMaemo Development Environment
Maemo Development Environment
 
ERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projectsERTS 2008 - Using Linux for industrial projects
ERTS 2008 - Using Linux for industrial projects
 
Article may11 bsdmag
Article may11 bsdmagArticle may11 bsdmag
Article may11 bsdmag
 
Graphical libraries
Graphical librariesGraphical libraries
Graphical libraries
 
Windows 10
Windows 10Windows 10
Windows 10
 
FMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxFMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for Linux
 
LXDE Icos2008 Presentation
LXDE Icos2008 PresentationLXDE Icos2008 Presentation
LXDE Icos2008 Presentation
 
Windows & Mac OS X
Windows & Mac OS XWindows & Mac OS X
Windows & Mac OS X
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...
OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...
OWF12/PAUG Conf Days Alternative to google's android emulator, daniel fages, ...
 
Software Disasters
Software DisastersSoftware Disasters
Software Disasters
 

More from Igalia

Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEIgalia
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesIgalia
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceIgalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfIgalia
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JITIgalia
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!Igalia
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerIgalia
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in MesaIgalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIgalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera LinuxIgalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVMIgalia
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesIgalia
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSIgalia
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webIgalia
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersIgalia
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...Igalia
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on RaspberryIgalia
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Igalia
 

More from Igalia (20)

Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...
 

Recently uploaded

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 

How SteamOS is contributing to the Linux ecosystem

  • 1. How SteamOS is contributing to the Linux ecosystem Alberto García Igalia Open Source Summit Europe Bilbao, September 2023 1
  • 2. About me Igalian since 2001 Debian developer Working on SteamOS Previous projects: QEMU, Maemo, ... 2
  • 3. 3
  • 4. The Steam Deck Handheld gaming computer released by Valve in 2022 Custom operating system: SteamOS 3 Versions 1 and 2 have been discontinued Successful consumer device with standard Linux components 4
  • 5. The power of open source software How has SteamOS contributed to the Linux ecosystem? Disclaimer: The list of examples in this presentation is by no means complete Contributions by different developers, companies, and regular users 5
  • 6. A closer look at the Steam Deck 6
  • 8. SteamOS under the hood Linux distribution, based on Arch Linux Standard components with some customizations FHS-based layout, GNU userspace, systemd, dbus Unlocked by default, full access to the OS 8
  • 11. Desktop mode Regular KDE Plasma desktop You can install anything: Web browser Tools Non-Steam games Usable like a regular desktop computer 11
  • 14. Linux OS, Windows games SteamOS is a Linux-based OS Most Steam games are for Windows Most will never get a Linux version Solution: Proton 14
  • 15. Proton Tool to run Windows games on Linux Collection of different open source packages, notably: Wine: Compatibility layer for Windows APIs DXVK: Translates Direct3D 9-11 into Vulkan VKD3D-Proton: Translates Direct3D 12 into Vulkan Also GStreamer and other libraries Published by Valve in 2018 Very actively developed https://github.com/ValveSoftware/Proton 15
  • 16. Wine Run Windows apps on Linux Not an emulator, the code runs directly on the CPU Windows APIs implemented using Linux APIs and other standards Developed by CodeWeavers in partnership with Valve https://source.winehq.org/git/wine.git/ https://github.com/ValveSoftware/wine 16
  • 17. Implementing Windows APIs If the APIs are similar ⇨ no problem Otherwise Wine needs to implemented the missing parts This can result in overhead Not always easily solvable in userspace Solution: new Linux features to fill in the missing gaps 17
  • 18. Windows synchronization functions WaitForMultipleObjects(): used by many Windows games No direct equivalent in Linux: implemented using futex() Inefficient: restricted to a single object Performance problems in heavily multithreaded games Solution: new futex API 18
  • 19. New futex API futex: fast user-space locking Can only wait on a single object Only 32-bit futexes Hard to use and hard to extend New API (Linux 5.16): futex_waitv() Similar to WaitForMultipleObjects() New API (wip): futex2 Work by André Almeida https://lwn.net/Articles/866112/ 19
  • 20. 20
  • 21. Case insensitive filesystem Windows filesystems are traditionally case insensitive Apps expect that data.bin and DATA.BIN are the same file Linux filesystems are case sensitive Slow solution: implement this in Wine Fast solution: make ext4 case insensitive Work by Gabriel Krisman Later added to F2FS by Daniel Rosenberg https://lwn.net/Articles/784041/ https://lore.kernel.org/all/20190719000322.106163-3-drosen@google.com/ 21
  • 22. Other contributions to the Linux kernel 22
  • 23. Reliable userspace spinlocks Spinlock: efficient synchronization mechanism Used extensively in the kernel Hard to implement reliably in user space Work by André Almeida, Mathieu Desnoyers Presented at the OSS EU this week https://lwn.net/Articles/931789/ 23
  • 24. btrfs same-fsid feature btrfs identifies a filesystem by its fsid You cannot mount two filesystems with the same id Problem: this can happen in systems with A/B partitioning Solution: add mechamism to support this scenario Work by Guilherme Piccoli https://lore.kernel.org/linux-btrfs/20230504170708.787361-1-gpiccoli@igalia.com/ 24
  • 25. Split-lock detector handling Atomic operations on non-aligned memory can cause a denial of service The kernel slows them down to prevent this Problem: many games use them Solution: add a way to control this behavior Work by Guilherme Piccoli https://lwn.net/Articles/911219/ 25
  • 26. More kernel features panic notifiers refactor kdumpst: tool for collecting data on a kernel crash Arch Linux pstore and kdump tool, supports GRUB and both initcpio/dracut as init systems Work by Guilherme Piccoli https://kernel-recipes.org/en/2023/schedule/panic-attack/ https://gitlab.freedesktop.org/gpiccoli/kdumpst 26
  • 27. And many other improvements and bug fixes... 27
  • 29. RADV Mesa Vulkan driver for AMD GPUs Developed by Valve and other contributors Alternative to AMD's official drivers Most popular driver, shipped by most distros ACO: a shader compiler for AMD graphics Reduces stuttering, increases FPS Developed by Valve, announced in 2019 https://steamcommunity.com/games/221410/announcements/detail/1602634609636894200 29
  • 30. Advanced color in Linux: HDR Linux DRM exposes a small set of color properties Proposals to extend the DRM color API have stalled AMD GPUs have additional color capabilities New work: driver-specific color API for AMD drivers Allows displaying content with High Dynamic Range (HDR) Supported in userspace by the Gamescope compositor Available in the upcoming SteamOS 3.5 Melissa Wen (Igalia), Joshua Ashton (Valve), Harry Wentland (AMD) https://melissawen.github.io/blog/2023/08/21/amd-steamdeck-colors 30
  • 31. Better handling of GPU resets GPUs are complex and can crash No standard API to report the problem to userspace Roadmap: Standarize how DRM reports GPU hangs to userspace Standarize how userspace drivers deal with a hang Standarize what compositors do after a reset Work (in progress) by André Almeida Presented at the North American OSS https://www.youtube.com/watch?v=qpBLju1l9_w 31
  • 32. Asynchronous page flip in atomic API Improve the atomic DRM API to add asynchronous page flipping Work by André Almeida Presented at the XDC 2022 https://www.youtube.com/watch?v=qayPPIfrqtE 32
  • 33. Gamescope A micro-compositor for games, developed by Valve Allows: Spoofing resolutions Upscaling Frame rate limiting Runs the Steam Deck's game UI Available in your favorite Linux distro https://github.com/ValveSoftware/gamescope 33
  • 35. SteamOS 3 Arch Linux with a customization layer on top Almost all packages come directly from Arch, unmodified Policy: upstream everything Original developer Arch (when appropriate) 35
  • 36. Immutable OS SteamOS has an immutable, read-only root filesystem A/B partitioning scheme Users are not expected to use the package manager or do anything that touches the root filesystem How to install new software then? 36
  • 37. Adding software to an immutable OS Steam games: Steam store Desktop apps: Flatpak Also used in other distros like Silverblue or Endless OS 37
  • 38. Flatpak A sandboxed app framework for the Linux desktop Apps are Handled directly by their developers Distro-independent Isolated from the OS Flathub: the Linux app store More than 2000 apps available Primary distribution channel for some apps (e.g. Bottles) 38
  • 40. XDG Portals A way for apps to interact with the host Used by Flatpak, but also by others Portals define D-Bus interfaces for things like: Access to files Opening URIs Screenshots Settings 40
  • 41. Selecting the right portals Portal APIs are implemented by desktop-specific backends (GTK, KDE, ...) Not all backends work on all desktop environments Developers cannot test all posible desktops This can cause crashes, timeouts and other issues Many backends can be installed at the same time Problem: limited way to select which portal to use Affects the Steam Deck: two graphical sessions 41
  • 42. New mechanism to configure portals Desktops can select which portals to use Feature added to xdg-desktop-portal 1.18.0 Soon in all major distros Work by Emmanuele Bassi https://github.com/flatpak/xdg-desktop-portal/issues/906 42
  • 43. Bugfixes and new features: KDE Discover: handle updates with large numbers of packages Work by Harald Sitter Improve detection of new icons when an app is installed Work by David Redondo Better handling of udev events from external drives Work by Alberto García and David Edmundson https://invent.kde.org/plasma/discover/-/merge_requests/630 https://invent.kde.org/frameworks/kded/-/merge_requests/21 https://bugs.kde.org/show_bug.cgi?id=467751 43
  • 44. Bugfixes and new features: UDisks Pass arbitrary options to mkfs Mount a filesystem on behalf of a different user Handle filesystem labels with non-printable characters Work by Alberto García https://github.com/storaged-project/udisks/issues/583 https://github.com/storaged-project/udisks/issues/1065 https://github.com/storaged-project/udisks/issues/1056 44
  • 45. And many more Network Manager ALSA Pipewire SDL ... 45
  • 46. Conclusion SteamOS is a fairly standard Linux system Policy: upstream everything Contributions to the Linux kernel, graphics, desktop, ... Brings new users and app developers closer to Linux 46
  • 48. 48