Daniel Almeida, aki a Collaboránál videokodekek fejlesztésén dolgozik, felkerült a fejlesztői levelezőlistára Linux- a Tyr illesztőprogram kezdeti implementációja ARM Mali GPU-khoz, amelyek Command Stream Frontend (CSF) technológiát használnak, mint például a Mali G310, G510 és G710. Az illesztőprogram kódja Rust nyelven íródott, és valamivel több mint 600 sornyi kódot tartalmaz. A Tyr illesztőprogramon a Collabora, az Arm és a Google közösen dolgozik.
Az új illesztőprogram létrehozására szolgáló keretrendszer az absztrakt rust_platform_driver illesztőprogram és az NVIDIA GPU-khoz fejlesztett, Rust nyelven írt és részben a 6.15-ös kernelhez hozzáadott Nova illesztőprogram komponenseit használja. A Mali GPU-val való interakció funkcióit a meglévő, C nyelven írt Panthor (Direct Rendering Manager) DRM illesztőprogramból portolták. A Tyr illesztőprogram uAPI-ja megegyezik a Panthor illesztőprogram uAPI-jával, amely lehetővé teszi a meglévő felhasználói tér komponensek használatát vele.
A Mali GPU-k 10. generációja óta használt CSF technológia figyelemre méltó, mivel egyes illesztőprogram-funkciókat a firmware oldalra helyezett át, és új modellt használ a GPU-n történő munkavégzés megszervezésére. A CSF interfésszel rendelkező GPU-kban a munkalánc küldésén alapuló modell helyett egy parancsfolyamon alapuló modellt használnak, a parancsfolyam-sor firmware oldalon történő ütemezésével. Az ütemező munkájának megszervezéséhez egy külön Cortex-M7 mikrovezérlőt építenek be a GPU-ba, és egy speciális parancsvégrehajtó egységet (Command Execution Unit) biztosítanak a CSF utasítások végrehajtásához.
A Tyr funkcionalitása még mindig elmarad a Panthor illesztőprogramétól, de a fejlesztők fokozatosan csökkenteni kívánják a különbséget, amíg el nem érik a illesztőprogram képességeinek paritását. A hiányzó funkciók további absztrakciók integrálását igénylik a kernelbe a Rustban létrehozható illesztőprogramok létrehozásához, így a Tyr illesztőprogram fejlesztése szinkronizálva lesz ezen absztrakciók kernelhez való hozzáadásával. Például a kernel még nem rendelkezik a memória-leképezés képességével a Rust illesztőprogramokban GPU-khoz, amelyeket a GPUVM javítókészletben fejlesztenek, amelyet még nem fogadtak el.
Forrás: opennet.ru
