Panfrost

pilote pour les processeurs Mali d'ARM des séries Midgard et Bitfrost

Panfrost est un pilote en logiciel libre sous Licence MIT pour les processeurs graphiques développés par la société britannique ARM, sous environnement GNU/Linux, gérant OpenGL 3.1 (version bureau) ainsi que OpenGL ES 3.0, la majorité des fonctions de d'OpenGL 3.2 à 3.3 sont également supportées[1],[2]. Ce pilote ne gère pas l'API Vulkan pour ces GPU, cette dernière est géré par le pilote PanVK, développé par les mêmes développeurs au sein de Mesa.

Panfrost

Informations
Développé par Alyssa Rosenzweig
Dernière version Suit les versions de Mesa 3D
Dépôt gitlab.freedesktop.org/panfrostVoir et modifier les données sur Wikidata
État du projet Stable
Écrit en C
Type pilote pour processeurs graphiques ARM Mali, pour les séries Midgard et Bitfrost (Lima driver est pour le série Utgart)
Licence Licence MITVoir et modifier les données sur Wikidata
Site web https://www.mesa3d.org/

Développé principalement par Alyssa Rosenzweig, initialement appelé Chai et orienté vers le Mali T700, puis a eu pour but de gérer l'architecture Midgard d'ARM (Mali-Txxx) dans son ensemble, puis a fusionné avec le projet Frost qui était orienté vers la série Bitfrost (Mali-Gxx) avec comme premier processeur utilisé pour le développement Mali-G71.

Historique

modifier

En , il possède un compilateur de shaders NIR[3]. Sur son blog, le , l'auteur du pilote dit que le projet est à présent baptisé Panfrost, après la fusion avec le pilote BiOpenly pour architecture Bifrost (Mail-Gxx, initialement développé par Lyude Paul, et qu'elle se concentre maintenant sur le flux de commandes et OpenGL ES 2.0. Elle fait également part de similitudes, découvert par Connor, avec l'architecture Bitfrost (Mali Gxx) d'ARM et le pilote. Cela devrait permettre d'unifier certaines parties des pilotes des 2 architectures[4]. En , la gestion des textures fonctionne, ainsi que les shaders, quelques fonctions de mixages et le test de stencil[5]. Quelques jours après le pilote Mesa permet de faire fonctionner le benchmark es2gears[6]. Lyude Paul est également très active sur ce projet[7]. Début , l'outil de test, performance et validation es2gears fonctionne et glmark2 fonctionne avec la première partie affichant le chat en ombrage de Gouraud ainsi que celui de Phong sur Mali T760 et T860[8]

En également, Hanetzer commence la préparation à l'intégration de la partie pilote DRM dans le mainline du noyau Linux en se basant sur la version 4.19[9]

En , les auteurs présentent le pilote à la conférence de développeurs X.org (X.org Developer’s Conference). Ils démontrent que sur les benchmarks GLmark2 fonctionnant, le pilote libre est beaucoup plus rapide que le blob propriétaire[10]. différents progrès importants ont été faits, notamment le gestion des textures fonctionne parfaitement, permettant d'afficher la démo Jellyfish de glmark2-es. La gestion de l'« ARM Framebuffer Compression » (AFBC, compression du tampon d'image d'ARM) est ajoutée, gérant les tampons de couleur et de profondeur, et permettant ainsi de faire fonctionner le test de réfraction avec l'objet du lapin de glmark2-es. Enfin, les progrès permettent de faire fonctionner Weston, le compositeur par défaut de Wayland, mais sur un seul processeur graphique pour le moment[11].

Le , une version initiale du pilote est intégrée au code principal de Mesa[12].

En , Les performances sont améliorées grâce à l'utilisation du gestionnaire de tuiles du processeur. Le pilote passe également le test de format de texture d'OpenGL ES 2. Kodi fonctionne avec accélération vidéo, SuperTuxKart fonctionne pour des scènes basiques avec quelques petits bugs et Neverball fonctionne avec quelques petits bugs également. Du fait qu'il soit basé sur Gallium, certaines fonctions OpenGL pour bureau sont automatiquement traduite en fonctions OpenGL ES, permettant ainsi de faire fonctionner des applications pour bureau sur architecture Midgard, ce qui n'est pas le cas avec le pilote propriétaire[13].

Fin , le pilote peut faire fonctionner le bureau GNOME Shell, après avoir amélioré le système de gestion de tuiles de tailles dynamiques[14].

Fin , 95 % des tests compatibilité avec OpenGL ES 3.0 sont passés avec succès[15].

En , un pilote pour la série Bitfrost, testé sur le Mali-G31, rempli la majorité des fonctionnalités d'OpenGL ES 2.0 et une partie de celles de 2.1, et permet de faire tourner GNOME, sur Wayland, différents jeux, et les lecteurs vidéos Mpv (en) et Kodi avec accélération matérielle. Son développement permet également d'améliorer les pilotes pour les autres séries de Panfrost[16],[17].

En , 20 des 27 fonctions spécifiques à OpenGL 3.0 sont supportées par Panfrost[18].

Début , 21/27 fonctions spécifiques à OpenGL 3.0, 8/11 à OpenGL 3.2, et 9/10 à OpenGL 3.3, ainsi que quelques fonctions d'OpenGL 4.0 à 4.5[19]

Le , toutes les spécifications d'OpenGL 3.0 sont couvertes, il reste un bug de gestion de tampon de textures pour supporter 3.1[20]. Le OpenGL 3.1 et OpenGL ES 3.0 sont supportés sur BitFrost et Midgard, une implémentation d'OpenCL pourrait également être faite rapidement[2].

En juin 2022 Alissa Rosenzweig annonce que le support Vukan, via PanVK pour la génération Midgard est abandonné étant donné les limites matérielles du GPU, le support se limite donc à Panfrost pour les processeurs en étant équipés comme le RK3588[21].

En juillet 2024, le sous-pilote Panthor se spécialise dans l'architecture Mali de 10e génération nommée Valhall avec le support du G610, équipant notamment le populaire SoC Rockchip RK3588. Il passe alors les tests de conformité Open GL ES 3.1 du Khronos Group[22]

En octobre 2024, le pilote PanVK supporte Vulkan 1.0 (pour les génération supérieures à Midgard, le support de Vulkan pour celui-ci étant abandonné en 2022)[23].

Références

modifier
  1. https://gitlab.freedesktop.org/mesa/mesa/-/blob/master/docs/features.txt
  2. a et b (en) Alyssa Rosenzweig, « Desktop OpenGL 3.1 on Mali GPUs with Panfrost », sur Collabora.com,
  3. (en) Michael Laravel, « Reverse-Engineering of ARM Mali "Midgard" Now Has A Working NIR Shader Compiler », sur Phoronix,
  4. « The Half Way Driver », sur Rosenzweig.io,
  5. « Ooo, Shiny Textured Cube! », sur Rosenzweig.io,
  6. « Es2gears works \ o / (058b3cdd) · Commits · Panfrost / panloader », sur GitLab (consulté le ).
  7. « Activity · Panfrost », sur GitLab (consulté le ).
  8. (en) « Panfrost on the RK3399 (Meow!) », sur Rosenzweig.io,
  9. « Commits · panfrost-4.19 · Panfrost / linux », sur GitLab (consulté le ).
  10. (en) Lyude Paul & Alyssa Rosenzweig, « Introducing Panfrost », sur Chaîne Youtube de X.org
  11. (en) « A Panfrostian October », sur rosenzweig.io,
  12. (en) « panfrost: Initial stub for Panfrost driver », sur Dépôt Git de Freedesktop.org,
  13. (en) Alissa Rosenzweig, « Kodi and SuperTuxKart on Panfrost », sur rosenzweig.io,
  14. (en) Alyssa Rosenzweig, « GNOME meets Panfrost », sur Collabora,
  15. (en) Alyssa Rosenzweig, « Experimental Panfrost GLES 3.0 support has landed in Mesa »,
  16. (en) Liam Dawe, « Open source Panfrost driver for modern Mali GPUs expands OpenGL support »,
  17. (en) Alyssa Rosenzweig, « Bifrost meets GNOME: Onward & upward to zero graphics blobs », sur Collabora,
  18. (en) « features.txt », sur gitlab.freedesktop.org (sources officielles de Mesa)
  19. (en) « features.txt », sur gitlab.freedesktop.org, (sources officielles de Mesa)
  20. (en) « features.txt », sur gitlab.freedesktop.org, (sources officielles de Mesa)
  21. (en) Alyssa Rosenzweig, « panvk: Drop support for Midgard »,
  22. (en) Eric Smith, « Taming the Panthor: OpenGL ES 3.1 conformance achieved on Mali-G610 »,
  23. (en) Erik Faye-Lund, « docs/features: claim vk 1.0 for panvk »,

Liens externes

modifier