Open-source graphics drivers are helping to make embedded systems less specialized by standardizing interfaces like KMS, DRI, and Mesa. Mesa provides implementations of graphics APIs like OpenGL and Vulkan via drivers for different GPUs. Combined with Wayland, this allows applications to run on embedded systems like a modern Linux desktop without platform-specific code. Current open-source drivers like Freedreno, Etnaviv, and Panfrost support GPUs from vendors like Qualcomm and ARM and are under active development by their respective communities.
2. 2/27
About me
Linux kernel and graphics infrastructure hacker at
Pengutronix
Maintainer of the Etnaviv kernel driver
Involved with a bunch of other Linux kernel stuff
7. 7/27
The situation a few years ago
Fat, but GPL compliant kernel drivers
Large, closed source binary userspace libraries
Lots of special, non-standardized interfaces
8. 8/27
Linux kernel DRM subsystem
Direct Rendering Manager
NOT Digital Rights Management
Standardized interface for display hardware (KMS)
Custom IOCTL interface for graphics accelerators
10. 10/27
Linux kernel DRM subsystem
Why a custom interface for each GPU?
Graphics APIs are huge → not possible to implement in
kernelspace
(Not so) Subtle differences in how the hardware works
11. 11/27
Mesa – swiss army knife of graphics APIs
Implementations for all kinds of graphics APIs
OpenGL
Vulkan
OpenCL
GPU hardware drivers
12. 12/27
Mesa – swiss army knife of graphics APIs
Display driver Accelerator driver
KMS IOCTLs Kernel
Userspace
Mesa
OpenGLEGL
13. 13/27
Mesa – swiss army knife of graphics APIs
Gallium Interface
DRI2 state tracker OpenGL state tracker
radeonsi iris panfrost etnaviv
21. 21/27
Wayland
No platform specific code at the application side
Policy can be implemented in a single place
This is like your modern Linux desktop!
23. 23/27
Current state - Freedreno
Stable, featureful driver
Supports most Adreno GPU cores
Google investing in development
24. 24/27
Current state - Etnaviv
Stable GL ES2.0 support
Supports latest available GPU generation
Multiple commercial users investing in development
25. 25/27
Current state - Lima
Merged into upstream projects
AFAIK mostly a hobby project
Supports older generation Mali GPUs
26. 26/27
Current state - Panfrost
Fast-paced feature work
Strong developer community
Newer Mali GPUs supported