本周五晚上的一个意外公告是 Tyr 的介绍,这是一个用 Rust 编程语言编写的新 Linux 内核 DRM 图形驱动程序。遗憾的是,在 Linux GPU 内核驱动程序中越来越普遍的是越来越晦涩难懂的驱动程序名称。提尔?!?
从名称中看不清楚,最初在我的内核邮件列表阅读中被忽略的是 Tyr 公告。Tyr 是适用于现代 Arm Mali 图形硬件的新开源 Direct Rendering Manager 驱动程序。Tyr 是日耳曼神话中的神,因此大概是北欧神话中用于 Arm Mali 的 Bifrost / Midgard / 等代号的玩笑。尽管如此,如果它不是 mali-tyr 或更简单、更类似的东西,就不那么容易联想到。
这个 Rust 编写的 Tyr 驱动程序旨在支持当前由 Panthor DRM 内核驱动程序支持的相同现代 Arm Mali 图形硬件 ,以使用 Arm Mali 命令流前端 (CSF) 固件。CSF 支持归结为 Mali 图形“Gen10”和更新版本。

Collabora 的 Daniel Almeida 宣布了 Tyr 驱动程序,并计划随着 Rust DRM 绑定的不断成熟而逐步开发它,直到它能够替换基于 C 语言的代码的 Panthor 驱动程序功能。Almeida 在介绍公告中解释说:
“为基于 ARM Mali CSF 的 GPU 添加 Rust 驱动程序。它是 Panthor 的一个端口,因此将 Panthor 的 uAPI 和名称公开给用户空间,是 Collabora、ARM 和 Google 工程师共同努力的产物。
目标是使用当前可用的抽象逐步开发 Tyr,直到被认为在功能方面与 Panthor 相同。
第一个版本仅实现了下游可用功能的一部分,因为如果不引入更多抽象,其余功能将无法实现。特别是,很多事情都取决于在给定的 VA 范围内正确映射内存,而这本身就取决于当前正在进行的 GPUVM 抽象。因此,我们仍然无法启动 MCU,因此在当前版本中无法做太多事情。
尽管如此,此版本旨在验证一些仍在开发的抽象,特别是平台 iomem 代码。一旦关于 GPUVM 抽象的讨论取得进展,后续补丁将引入VM_BIND支持。
尽管功能集有限,但我们提供了一个 IGT 分支来测试此补丁。它仅在 rk3588 上进行了测试,因此任何其他 SoC 目前可能根本无法工作。
Tyr 驱动程序框架代码基于基于 Rust 的 NOVA DRM 驱动程序,该驱动程序是为现代开源 NVIDIA GPU 支持而开发的。Collabora 正在与 Arm 和 Google 一起开发 Tyr。
那些想了解更多关于 Tyr 驱动程序的人可以通过 LKML 进行。
转自 “Tyr” Announced As New Rust-Written Linux Kernel Graphics Driver – Phoronix
Linuxeden开源社区