在 Collabora 從事視頻編解碼器開發的 Daniel Almeida 在開發者郵件列表中發布帖子 Linux- 這是針對採用命令流前端 (CSF) 技術的 ARM Mali GPU(例如 Mali G310、G510 和 G710)的 Tyr 驅動程式的初始實作。此驅動程式程式碼使用 Rust 編寫,僅包含 600 多行程式碼。 Tyr 驅動程式的開發工作由 Collabora、Arm 和 Google 共同進行。
建立新驅動程式的框架使用了抽象的 rust_platform_driver 驅動程式和 Nova 驅動程式的元件,這些驅動程式是為 NVIDIA GPU 開發的,以 Rust 編寫,部分已新增至 6.15 核心中。與 Mali GPU 互動的功能移植自現有的 Panthor(直接渲染管理器)DRM 驅動程序,該驅動程式以 C 語言編寫。 Tyr 驅動程式的 uAPI 與 Panthor 驅動程式的 uAPI 相同,允許使用現有的使用者空間元件。
自第十代 Mali GPU 開始使用的 CSF 技術,其顯著特點是將部分驅動程式功能移至韌體端,並使用新的模型來組織 GPU 上的工作執行。在具有 CSF 介面的 GPU 中,不再使用基於工作鏈發送的模型,而是使用基於命令流的模型,並在韌體端調度命令流隊列。為了組織調度程序的工作,GPU 內建了一個獨立的 Cortex-M10 微控制器,並提供了一個專門的命令執行單元 (Command Execution Unit) 來執行 CSF 指令。
Tyr 的功能仍然落後於 Panthor 驅動程序,但開發人員計劃逐步縮小差距,直到驅動程式功能達到同等水平。缺少的功能需要將額外的抽象整合到核心中才能使用 Rust 建立驅動程序,因此 Tyr 驅動程式的開發將與這些抽象添加到核心同步。例如,核心目前尚不具備 GPU Rust 驅動程式的記憶體映射功能,這些驅動程式正在 GPUVM 修補程式集中開發,但尚未被採納。
來源: opennet.ru
