Daniel Almeida, který se zabývá vývojem video kodeků ve společnosti Collabora, zveřejnil na mailing listu vývojářů jádra Linuxu počáteční implementaci ovladače Tyr pro GPU ARM Mali, využívající technologii CSF (Command Stream Frontend), jako jsou Mali G310, G510 a G710. Kód ovladače je napsán v jazyce Rust a obsahuje něco málo přes 600 řádků kódu. Na ovladači Tyr pracují zaměstnanci firem Collabora, Arm a Google.
Jako základ pro vytváření nového ovladače byly použity komponenty abstraktního ovladače rust_platform_driver a ovladače Nova, vyvíjeného pro GPU NVIDIA, napsaného v Rustu a částečně začleněného do jádra 6.15. Funkčnost pro interakci s GPU Mali byla portována z existujícího DRM ovladače Panthor (Direct Rendering Manager), napsaného v jazyce C. uAPI ovladače Tyr je identické s uAPI ovladače Panthor, což umožňuje používat s ním již existující komponenty uživatelského prostoru.
Technologie CSF, používaná od 10. generace GPU Mali, je pozoruhodná tím, že přesunuje některé funkce ovladače do firmwaru a zahrnuje nový model organizace provádění úloh na GPU. V GPU s rozhraním CSF místo modelu na základě odesílání řetězců úloh se používá model na základě proudu příkazů s plánováním fronty příkazového proudu na straně firmwaru. Pro organizaci práce plánovače má GPU vestavěn samostatný mikrokontrolér Cortex-M7 a pro provádění příkazů CSF je k dispozici speciální blok provádění příkazů (Command Execution Unit).
Funkčnost Tyr zatím zaostává za ovladačem Panthor, ale vývojáři mají v úmyslu postupně zkracovat rozdíl, dokud nedojde k dosažení parity ve funkcích ovladačů. Chybějící funkce vyžadují integraci do jádra dalších abstrakcí pro vytváření ovladačů v Rustu, proto bude vývoj ovladače Tyr synchronizován s přidáním těchto abstrakcí do jádra. Například v jádře zatím chybí možnosti pro mapování paměti v Rust ovladačích pro GPU, které se vyvíjejí v ještě nepřijaté sadě patchů GPUVM.
Zdroj: opennet.ru
