Daniel Almeida, ktorý sa zaoberá vývojom video kodekov v spoločnosti Collabora, zverejnil v mailing liste vývojárov Linuxového jadra základnú implementáciu ovládača Tyr pre GPU ARM Mali, ako sú Mali G310, G510 a G710, ktorý využíva technológiu CSF (Command Stream Frontend). Kód ovládača je napísaný v jazyku Rust a má niečo vyše 600 riadkov. Práca na ovládači Tyr sa vykonáva v spolupráci zamestnancov spoločností Collabora, Arm a Google.
Na vytvorenie nového ovládača boli použité komponenty abstraktného ovládača rust_platform_driver a ovládača Nova, ktorý sa vyvíja pre GPU NVIDIA, napísaný v jazyku Rust a čiastočne pridaný do jadra 6.15. Funkcionalita pre interakciu s GPU Mali bola prenositeľná z existujúceho DRM ovládača Panthor (Direct Rendering Manager), napísaného v jazyku C. uAPI ovládača Tyr je identické uAPI ovládača Panthor, čo umožňuje používať s ním už existujúce komponenty priestorového používateľa.
Technológia CSF, používaná od 10. generácie GPU Mali, je pozoruhodná presunutím niektorých funkcií ovládača na stranu firmvéru a využitím novej modelovej organizácie vykonávania úloh na GPU. V GPU s rozhraním CSF namiesto modelu založeného na odosielaní reťazca úloh sa používa model založený na príkazovom toku s plánovaním frontu príkazového toku na strane firmvéru. Na organizáciu práce plánovača je v GPU zabudovaný samostatný mikrokontrolér Cortex-M7 a na vykonávanie príkazov CSF je určená špeciálna jednotka vykonávania príkazov (Command Execution Unit).
Funkcionalita Tyr zatiaľ zaostáva za ovládačom Panthor, ale vývojári majú v úmysle postupne zmenšovať túto medzeru, až sa dosiahne parita v možnostiach ovládačov. Chýbajúce funkcie si vyžadujú integráciu do jadra ďalších abstrakcií na vytváranie ovládačov v Rust, a preto bude vývoj ovládača Tyr synchronizovaný s pridávaním týchto abstrakcií do jadra. Napríklad v jadre chýbajú možnosti pre mapovanie pamäte v Rust ovládačoch pre GPU, ktoré sa vyvíjajú v ešte neprijatých sadách patchov GPUVM.
Zdroj: opennet.ru
