Tyr: új Rust-alapú GPU-meghajtó ARM Mali CSF GPU-khoz

A Collabora, az Arm és a Google mérnökeinek közös munkájából megszületett a Tyr, egy új Rust nyelven írt Linux kernel-meghajtó ARM Mali CSF-alapú grafikus processzorokhoz. A fejlesztés a már meglévő Panthor meghajtóra épül, így annak felhasználói API-ját és névkonvencióit örökli. A cél az, hogy a Tyr funkcionálisan utolérje a Panthor képességeit, ám ezt fokozatosan, az elérhető Rust-alapú kernelabstrakciók bővítésével kívánják elérni.

Tyr: új Rust-alapú GPU-meghajtó ARM Mali CSF GPU-khoz

A kezdeti állapot és annak korlátai, tesztelési lehetőségek

A most bemutatott első ARM Mali driver változat még nem tartalmazza a Panthor teljes funkcionalitását, mivel számos szolgáltatás – például a memóriatérképezés pontos VA-tartományokba – olyan absztrakciókra épül, amelyek jelenleg még fejlesztés alatt állnak. Mivel a GPU virtuális memóriakezelése (GPUVM) még nem áll rendelkezésre, a firmware nem képes elindulni, így a meghajtó e verziója még nem alkalmas érdemi GPU-feladatok futtatására.

Ennek ellenére az ARM Mali Tyr driver kiadás fontos lépés az absztrakciók validálása szempontjából, különösen a platform szintű IO-memória kezelés terén. A meghajtó már képes bekapcsolni a GPU-t és elvégezni az eszköz inicializálását. Diagnosztikai információkat olvas ki a hardverből, amelyeket a terminálon jelenít meg. A funkcionalitás az IGT teszteszköz segítségével ellenőrizhető, bár jelenleg csak az rk3588-as SoC-n működik megbízhatóan, más rendszerek egyelőre nem támogatottak.

Fejlesztési stratégia

A fejlesztők korábban megpróbálták a Panthor meghajtót részletekben Rust-ra átültetni, de ez nem bizonyult hatékonynak. A tyr-next nevű leágazás a belső fejlesztési ágban már képes az MCU indítására és szinkronizált VM_BIND műveletekre, noha a beküldött patch még ezek előtt jár. A jövőben cél az, hogy a meghajtót kis, upstream-kompatibilis lépésekben integrálják a Linux kernelbe, így csökkentve a visszamenőleges inkompatibilitás kockázatát, és biztosítva a még nem végleges absztrakciók valós környezetben történő tesztelését.

Az ARM Mali Tyr meghajtó fejlesztése valóban együttműködésen alapul. Alice Ryhl kulcsszerepet játszott a szükséges Rust-abstrakciók kialakításában és kód hozzájárulásban, míg Beata Michalska, Carsten Haitzler és Rob Herring is jelentős technikai munkát végeztek. A projekt koordinálását és kezdeményezését Daniel Almeida (Collabora) vállalta, aki külön köszönetet mondott Boris Brezillonnak a szakmai támogatásért, amely nélkül – saját megfogalmazása szerint – ez a projekt nem jöhetett volna létre.