Daniel Almeida, odpowiedzialny za rozwój kodeków wideo w firmie Collabora, opublikował na liście mailingowej deweloperów jądra Linux wstępną implementację sterownika Tyr dla GPU ARM Mali, w którym zastosowano technologię CSF (Command Stream Frontend), taką jak Mali G310, G510 i G710. Kod sterownika napisany jest w języku Rust i liczy nieco ponad 600 linijek. Prace nad sterownikiem Tyr są prowadzone wspólnie przez pracowników firm Collabora, Arm i Google.
Jako szkielet do stworzenia nowego sterownika wykorzystano komponenty abstrakcyjnego sterownika rust_platform_driver oraz sterownika Nova, rozwijanego dla GPU NVIDIA, napisanego w Rust i częściowo dodanego do jądra 6.15. Funkcjonalność do interakcji z GPU Mali została przeniesiona z istniejącego sterownika DRM Panthor (Direct Rendering Manager), napisanego w języku C. uAPI sterownika Tyr jest identyczne z uAPI sterownika Panthor, co umożliwia korzystanie z już istniejących komponentów przestrzeni użytkownika.
Technologia CSF, stosowana od 10. generacji GPU Mali, charakteryzuje się przeniesieniem na stronę oprogramowania sprzętowego niektórych funkcji sterownika oraz wprowadzeniem nowego modelu organizacji wykonywania zadań na GPU. W GPU z interfejsem CSF zamiast modelu opartego na przesyłaniu łańcucha zadań zastosowano model oparty na strumieniu poleceń z planowaniem kolejki strumienia poleceń po stronie oprogramowania sprzętowego. Aby zorganizować działanie planisty, w GPU wbudowany jest osobny mikrokontroler Cortex-M7, a do wykonania instrukcji CSF przewidziano specjalny blok wykonawczy poleceń (Command Execution Unit).
Funkcjonalność Tyr na razie odstaje od sterownika Panthor, ale deweloperzy zamierzają stopniowo zmniejszać lukę, dopóki nie osiągną parytetu w możliwościach sterowników. Brakujące funkcje wymagają integracji w jądrze dodatkowych abstrakcji do tworzenia sterowników w Rust, dlatego rozwój sterownika Tyr będzie zsynchronizowany z dodawaniem do jądra tych abstrakcji. Na przykład w jądrze brakuje możliwości mapowania pamięci w sterownikach Rust dla GPU, rozwijanych w jeszcze nieprzyjętym zestawie łat GPUVM.
Źródło: opennet.ru
