Daniel Almeida, die bij Collabora werkt aan de ontwikkeling van videocodecs, plaatste een bericht op de mailinglijst voor ontwikkelaars. Linux- De eerste implementatie van het Tyr-stuurprogramma voor ARM Mali GPU's die gebruikmaken van Command Stream Frontend (CSF)-technologie, zoals de Mali G310, G510 en G710. De stuurprogrammacode is geschreven in Rust en bestaat uit iets meer dan 600 regels code. De ontwikkeling van het Tyr-stuurprogramma wordt gezamenlijk uitgevoerd door Collabora, Arm en Google.
Het framework voor het maken van de nieuwe driver maakt gebruik van componenten van de abstracte rust_platform_driver en de Nova-driver, ontwikkeld voor NVIDIA GPU's, geschreven in Rust en gedeeltelijk toegevoegd aan de 6.15-kernel. De functionaliteit voor interactie met de Mali GPU is geporteerd vanuit de bestaande Panthor (Direct Rendering Manager) DRM-driver, geschreven in C. De uAPI van de Tyr-driver is identiek aan de uAPI van de Panthor-driver, waardoor het mogelijk is om bestaande componenten in de gebruikersruimte ermee te gebruiken.
De CSF-technologie, die al sinds de 10e generatie Mali GPU's wordt gebruikt, onderscheidt zich door het verplaatsen van enkele driverfuncties naar de firmware en het gebruik van een nieuw model voor het organiseren van de werkuitvoering op de GPU. In GPU's met een CSF-interface wordt, in plaats van een model gebaseerd op het verzenden van een reeks taken, een model gebaseerd op een opdrachtstroom gebruikt met het plannen van de opdrachtstroomwachtrij aan de firmwarezijde. Om het werk van de scheduler te organiseren, is een aparte Cortex-M7-microcontroller ingebouwd in de GPU en is een speciale opdrachtuitvoeringseenheid (Command Execution Unit) beschikbaar om CSF-instructies uit te voeren.
De functionaliteit van Tyr loopt nog steeds achter op die van de Panthor-driver, maar de ontwikkelaars zijn van plan de kloof geleidelijk te verkleinen totdat er een gelijke stand in driver-mogelijkheden is bereikt. De ontbrekende functies vereisen dat extra abstracties in de kernel worden geïntegreerd om drivers in Rust te creëren. De ontwikkeling van de Tyr-driver zal daarom synchroon lopen met de toevoeging van deze abstracties aan de kernel. De kernel beschikt bijvoorbeeld nog niet over de mogelijkheden voor geheugentoewijzing in Rust-drivers voor GPU's, die worden ontwikkeld in de GPUVM-patchset, die nog niet is geïmplementeerd.
Bron: opennet.ru
