Accueil Astuces et Informations PanCSF, un nouveau pilote Linux pour les GPU du Mali par Collabora

PanCSF, un nouveau pilote Linux pour les GPU du Mali par Collabora

1
3
PanCSF

PanCSF : un nouveau pilote DRM pour les GPU basés sur Mali CSF

Il ya quelques jours Collabora a présenté le lancement manette DRM PanCSF (Direct Rendering Manager), qui fonctionne au niveau du noyau Linux.

Le controlle PanCSF DRM est conçu pour être utilisé avec le GPU Mali (G710+) de dixième génération, qui utilise la technologie CSF (Command Stream Frontend), qui apporte quelques fonctions de pilote à côté du firmware pour réduire la charge sur le CPU et propose un nouveau modèle pour organiser le travail sur le GPU.

Comme le destin l’aurait voulu, un nouveau pilote DRM pour les récents GPU maliens a été dévoilé plus tôt ce mois-ci. C’est un peu étrange dans le monde du sous-système DRM, où la prise en charge du nouveau matériel est généralement ajoutée aux pilotes GPU qui prennent en charge les anciennes générations de matériel.

À propos du pilote PanCSF DRM

Initialement, tenté d’implémenter la prise en charge des GPU maliens basés sur CSF dans le pilote Panfrost, mais les développeurs sont arrivés à la conclusion que cela conduirait à une grande complication du pilote existant et qu’il serait plus optimal pour CSF de créer un nouveau pilote créé avec une architecture différente.

Le nouveau pilote PanCSF proposé pour les tests implémente une toute nouvelle uAPI, une nouvelle logique de planification des tâches et une nouvelle logique de contrôle MMU/GPU-VA. Le code Panfrost existant est utilisé comme base pour le nouveau pilote.

Et c’est que dans la nouvelle génération de GPU Mali, Planificateur de Job Manager remplacé par une interface CSF (Command Stream Frontend), qui utilise un modèle basé sur le flux de commandes avec une planification de la file d’attente du flux de commandes côté micrologiciel au lieu d’un modèle basé sur le flux de travaux.

Nous ne donnerons pas une description détaillée du fonctionnement de CSF, mais il convient de noter que l’interface CSF possède un jeu d’instructions dédié et un ensemble de registres pour transmettre des données ou maintenir l’état interne. Il y a des instructions pour soumettre des tâches (calcul, mosaïque et blocs) et d’autres pour faire des choses plus triviales, comme lire/écrire de la mémoire, attendre que la tâche soit terminée, attendre les clôtures, sauter/brancher…

Il est mentionné que pour organiser le travail du programmeur, un microcontrôleur Cortex-M7 est intégré séparé sur le GPU et une unité d’exécution de commande spéciale est fournie pour exécuter les instructions CSF. De telles fonctionnalités nécessitent une organisation fondamentalement différente du transfert du travail vers le GPU depuis l’espace utilisateur.

Le controlle PanCSF emprunte des modèles d’initialisation de contrôleur typiques, la gestion des fréquences et la gestion de l’alimentation, qui changeront probablement à mesure que certaines des fonctionnalités de gestion de l’alimentation des nouveaux GPU Mali seront déplacées vers le micrologiciel.

Si CSF consistait simplement à s’éloigner d’une approche de soumission de tâches basée sur des descripteurs, nous pourrions nous en sortir avec un nombre minimal de modifications du noyau et écraser la prise en charge de CSF pour le pilote de noyau existant.

Il convient de noter que pour ceux qui ne sont pas familiers avec les API graphiques, il convient de rappeler que Vulkan essaie de redonner le contrôle à l’utilisateur en rendant une grande partie de la gestion du pipeline graphique explicite, tandis qu’OpenGL a essayé de cacher des choses à ses utilisateurs pour rendre leur vie plus facile. Plus facile.

Enfin, il est mentionné que futurs développeurs notez que cette RFC, bien qu’au moins partiellement fonctionnelle (jusqu’à présent uniquement testée sur la charge de travail de base GLES2), est loin d’être prête et mentionnez que Il y a des choses à régler : comme essayer d’utiliser drm_sched au lieu d’implémenter un planificateur basé sur le partage de temps, avoir un mécanisme d’éviction d’objet tampon approprié pour gérer avec élégance les situations où le système est sous pression mémoire.

De plus, il est mentionné que la prise en charge de la gestion de l’alimentation fait actuellement défaut, la mise à l’échelle de la fréquence de l’appareil et probablement d’autres fonctionnalités utiles telles que les compteurs de performances, mais elles devraient être relativement faciles à mettre en œuvre par rapport à la logique de programmation et de gestion de la mémoire.

Dernier point et non des moindres, les changements devraient être publiés prochainement pour utiliser le nouveau pilote dans le tableau.

Siestes intéressé à en savoir plus, Vous pouvez vérifier les détails dans le lien suivant.