Skip to content

Commit 93083d9

Browse files
committed
Add "Tyr GPU Driver" page
Content provided by Daniel Almeida. Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
1 parent ba4d64b commit 93083d9

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed

SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
- [DRM Panic QR code generator](DRM-Panic-QR-code-generator.md)
3737
- [Nova GPU Driver](Nova-GPU-Driver.md)
3838
- [Null Block Driver](Null-Block-Driver.md)
39+
- [Tyr GPU Driver](Tyr-GPU-Driver.md)
3940

4041
## Users — outside mainline
4142

src/Tyr-GPU-Driver.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# Tyr GPU Driver
2+
3+
## What is Tyr?
4+
5+
Tyr is a new Rust-based DRM driver for CSF-based Arm Mali GPUs. It is a port of
6+
Panthor — a driver written in C for the same hardware — and written as a joint
7+
effort between Collabora, Arm and Google engineers.
8+
9+
Tyr aims to eventually implement the same userspace API offered by Panthor for
10+
compatibility reasons, so that it can be used as a drop-in replacement in our
11+
Vulkan driver, called
12+
[PanVK](https://gitlab.freedesktop.org/mesa/mesa/-/tree/main/src/panfrost/vulkan?ref_type=heads).
13+
In any case, we foresee Panthor being used — and of course supported — for a
14+
relatively long time, as it is a mature driver with a large adoption in the
15+
ecosystem. It will probably take a couple of years for Tyr to fully pick up.
16+
17+
## Where is Tyr developed?
18+
19+
The development of Tyr takes place both upstream, through our [latest
20+
submission](https://lore.kernel.org/rust-for-linux/20250627-tyr-v1-1-cb5f4c6ced46@collabora.com/)
21+
— and downstream, on the `tyr-next` branch at the [Panfrost Gitlab
22+
repository](https://gitlab.freedesktop.org/panfrost/linux).
23+
24+
This split is unfortunately necessary as we do not have the required
25+
infrastructure in upstream yet, although our plan is to eventually migrate to
26+
an upstream-only development model once this changes.
27+
28+
We go into more details about why we chose to develop Tyr this way on our
29+
series of [blog
30+
posts](https://www.collabora.com/news-and-blog/news-and-events/introducing-tyr-a-new-rust-drm-driver.html)
31+
at [Collabora's blog](https://www.collabora.com/news-and-blog/). Anyone willing
32+
to get acquainted with Mali's open source stack should refer to that, as we
33+
will be covering the whole infrastructure from a simple Vulkan application to
34+
the actual GPU hardware in Mali's CSF architecture. We will also cover the
35+
various components needed to write a driver, as well as the status of the
36+
abstractions needed to interact with them from Rust code.
37+
38+
As it currently stands, our downstream branch can be used to test the
39+
abstractions that are still being developed. It makes sure that we can write a
40+
functional driver with the abstractions that are currently being proposed.
41+
42+
## What is the current status of the driver?
43+
44+
The current upstream submission can power up the GPU and probe the device on an
45+
RK3588 system-on-chip. This lets us read a few sections of ROM in the GPU,
46+
which in turn lets us provide this information to userspace by means of a
47+
`DRM_IOCTL_PANTHOR_DEV_QUERY` call.
48+
49+
This is all that can be done for now in upstream code, at least until the Micro
50+
Controller Unit can be made to work.
51+
52+
Our downstream branch (`tyr-next`) can submit small parcels of work to the GPU,
53+
and we will soon be able to submit more elaborate workflows. We hope to see
54+
[VkCube](https://github.com/KhronosGroup/Vulkan-Tools) running on Tyr soon.
55+
56+
In any case, there is no power management and little error recovery. We will be
57+
working on that in the coming months.
58+
59+
## Can I try it out?
60+
61+
Anyone with a RK3588 SoC can test Tyr, but the driver is not capable of
62+
replacing Panthor yet. A good candidate device is Radxa's
63+
[ROCK 5B](https://radxa.com/products/rock5/5b/) Single Board Computer.
64+
65+
A good starting point is to run our [IGT
66+
tests](https://gitlab.freedesktop.org/dwlsalmeida/igt-gpu-tools/-/tree/panthor?ref_type=heads).
67+
While only a subset of the tests pass on the upstream code for the reasons
68+
highlighted above, they should all pass if run on `tyr-next`.
69+
70+
Note that Mali GPUs are found in a vast array of devices, and that we will
71+
support more hardware as we progress in the implementation.
72+
73+
## Contributing
74+
75+
Tyr is open-source software, and as such, anyone interested in its development
76+
can check our [issue
77+
board](https://gitlab.freedesktop.org/panfrost/linux/-/issues/?label_name%5B%5D=tyr).
78+
We will be posting good starting tasks at a future point.
79+
80+
To work on any given task, assign it to yourself and follow up with a merge
81+
request against `tyr-next`. Please also write the IGT tests needed to ensure that
82+
your code works.
83+
84+
Happy hacking!

0 commit comments

Comments
 (0)