Daniel Almeida, chargé du développement des codecs vidéo chez Collabora, a publié sur la liste de diffusion des développeurs du noyau Linux une première implémentation du pilote Tyr pour les GPU ARM Mali, utilisant la technologie CSF (Command Stream Frontend), tels que les Mali G310, G510 et G710. Le code du pilote est écrit en Rust et compte un peu plus de 600 lignes. Le développement du pilote Tyr est réalisé avec la collaboration des employés de Collabora, Arm et Google.
Le cadre utilisé pour créer ce nouveau pilote repose sur les composants du pilote abstrait rust_platform_driver et le pilote Nova, développé pour les GPU NVIDIA, écrit en Rust et partiellement intégré dans le noyau 6.15. La fonctionnalité d'interaction avec le GPU Mali a été portée depuis le DRM pilote existant Panthor (Direct Rendering Manager), écrit en C. L'uAPI du pilote Tyr est identique à celui du pilote Panthor, ce qui permet d’utiliser des composants utilisateur existants.
La technologie CSF, utilisée à partir de la 10ème génération des GPU Mali, se distingue par le déplacement vers le firmware de certaines fonctions du pilote et l'utilisation d'un nouveau modèle d'organisation de l'exécution sur le GPU. Dans les GPU avec interface CSF, au lieu d'un modèle basé sur l'envoi d'une chaîne de travaux, un modèle basé sur un flux de commandes avec planification de la file d'attente des flux de commandes du côté du firmware est appliqué. Pour organiser le travail du planificateur, un microcontrôleur Cortex-M7 distinct est intégré dans le GPU, et un bloc spécial d'exécution de commandes (Command Execution Unit) est prévu pour l'exécution des instructions CSF.
Les fonctionnalités de Tyr sont encore en retrait par rapport à celles du pilote Panthor, mais les développeurs prévoient de réduire progressivement cet écart jusqu'à atteindre un paritarisme dans les capacités des pilotes. Les fonctionnalités manquantes nécessitent l’intégration d'abstractions supplémentaires dans le noyau pour le développement de pilotes en Rust, donc l'évolution du pilote Tyr sera synchronisée avec l'ajout de ces abstractions dans le noyau. Par exemple, le noyau ne dispose pas encore des capacités de mappage de mémoire pour les pilotes en Rust développés dans une série de patchs GPUVM encore non acceptée.
Source : opennet.ru
