Daniel Almeida, a Collabora videokodekek fejlesztéséért felelős munkatársa közzétette a Linux kernel fejlesztői levelezőlistáján a Tyr illesztőprogram kezdeti megvalósítását az ARM Mali GPU-hoz, amelyek a CSF (Command Stream Frontend) technológiát alkalmazzák, mint például a Mali G310, G510 és G710. Az illesztőprogram kódja Rust nyelven íródott és egy kicsit több mint 600 kódsort tartalmaz. A Tyr illesztőprogram fejlesztése a Collabora, Arm és Google munkatársainak együttműködésében zajlik.
Az új illesztőprogram létrehozásához az rust_platform_driver absztrakt illesztőprogram és a Rust nyelven írt Nova illesztőprogram komponenseit használták, amelyet részben a 6.15-ös kernelbe integráltak. A Mali GPU-val való interakciót lehetővé tévő funkcionalitást a meglévő Panthor (Direct Rendering Manager) DRM-illesztőprogramból portálták, amely C nyelven íródott. A Tyr illesztőprogram uAPI-ja azonos a Panthor illesztőprogram uAPI-jával, lehetővé téve a meglévő felhasználói térbeli komponensek használatát.
A CSF technológia, amely a Mali GPU 10. generációjától kezdődően alkalmazásra kerül, figyelemre méltó, mivel egyes illesztőprogram-funkciókat a firmware-re helyez át, és új munkavégzési modell bevezetését teszi lehetővé a GPU-n. A CSF interfésszel rendelkező GPU-n a munkafolyamatok láncolásának modellje helyett egy parancssorozat-alapú modellt alkalmaznak, amely a parancssorozatok ütemezését a firmware oldalán végzi. Az ütemező munkája számára egy külön Cortex-M7 mikrokontroller van beépítve a GPU-ba, és a CSF utasítások végrehajtására külön parancsvégrehajtó egység (Command Execution Unit) van fenntartva.
A Tyr funkcionalitása egyelőre lemarad a Panthor illesztőprogram mögött, de a fejlesztők szándékuk szerint fokozatosan csökkenteni akarják a különbséget, amíg a két illesztőprogram képességei közötti paritás el nem érhető. A hiányzó funkciók integrálását igénylik az alapkernelbe további absztrakciók létrehozásához Rust nyelven írt illesztőprogramokhoz, ezért a Tyr illesztőprogram fejlesztése szinkronizálva lesz ezen absztrakciók alapkernelbe való beépítésével. Például a kernelben jelenleg hiányoznak azok a lehetőségek a Rust-illesztőprogramok memóriamappingjéhez, amelyeket a még nem elfogadott GPUVM patch készletben dolgoznak.
Forrás: opennet.ru
