Nova 作为 Nouveau 驱动程序的继任者,红帽的漫长的 Rust道路

红帽的显示驱动程序团队最近正在为 Nova 制定计划,这是一个用 Rust 编写的新的 Linux DRM 内核驱动程序,用于开源 NVIDIA 图形支持,作为支持 GPU 系统的新一代 NVIDIA GPU 的 Nouveau 的继承者/替代品处理器 (GSP)。 当各种内核抽象仍在设计中且尚未上游化时,用 Rust 编写这项工作就变得更加复杂。

Nova 的最终目标是成为适用于 Turing GPU 和更新版本(RTX 2000 系列)的现代开源 NVIDIA Linux DRM 驱动程序,其中有 GPU 系统处理器 (GSP) 支持。 Nouveau DRM 驱动程序最近主流化了对 GSP 的可选支持——或者从最新的 RTX 40 系列开始的强制支持——而 Nova 将是一个现代的替代品,用 Rust 编写,并且没有多年来在支持方面积累的 Nouveau 包袱。 NVIDIA GPU 的历史可以追溯到早期。


这个基于 Rust 的 GSP-only 驱动程序有望展望未来,希望比 Nouveau 驱动程序具有更高的性能和能力,类似于前瞻性的 Intel Xe 驱动程序,消除了多年来建立的所有缺陷。 i915 直接渲染管理器代码。


通过使用 Rust,参与其中的红帽开发人员希望它能够拥有更好的内存安全性,进而提高可维护性,并降低新开发人员的参与门槛。


仅关注支持 GSP 的 GPU 还可以简化驱动程序开发,将大部分硬件初始化/管理留给 GSP 及其固件/微代码,而不是由设备驱动程序进行编程。 对于较旧的 NVIDIA 显卡,Nouveau 驱动程序将继续存在。


虽然 Asahi 团队正在 Rust 中开发 Apple Silicon DRM 驱动程序,但它也是不可用的。 尚无上游 Rust DRM 驱动程序(或其他主要的全功能 Rust 内核驱动程序)的挑战是缺乏各种抽象。 对于某些领域,Rust 内核抽象已经存在,但尚未上游化。


在开始研究 Nova 驱动程序的必要抽象时,红帽的 Danilo Krummrich 发布了一篇题为“ Nova 和 staging Rust 抽象 ”的邮件列表帖子,用于通过 DRM、设备抽象、PCI 等的 Rust 抽象来遍历不同的 Git 树。 进行开发 早期阶段的 Nova 代码本身继续通过FreeDesktop.org 上的 drm/nova 。 看看 Nova 随着时间的推移如何发展将会很有趣。 

© GVGNN 2013-2026