Panfrost

Un article de Wikipédia, l'encyclopédie libre.
Panfrost

Informations
Développé par Alyssa Rosenzweig
Dernière version Suit les version de Mesa 3D
Dépôt gitlab.freedesktop.org/mesaVoir 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/

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 ES, et OpenGL (full)

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 à 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 | modifier le code]

En , il possède un compilateur de shaders NIR[1]. 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[2]. En , la gestion des textures fonctionne, ainsi que les shaders, quelques fonctions de mixages et le test de stencil[3]. Quelques jours après le pilote Mesa permet de faire fonctionner le benchmark es2gears[4]. Lyude Paul est également très active sur ce projet[5]. 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[6]

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[7]

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[8]. 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[9].

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

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[11].

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[12].

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

En juin 2020, 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[14],[15].

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

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

Références[modifier | modifier le code]

  1. (en) Michael Laravel, « Reverse-Engineering of ARM Mali "Midgard" Now Has A Working NIR Shader Compiler », sur Phoronix,
  2. « The Half Way Driver », sur Rosenzweig.io,
  3. « Ooo, Shiny Textured Cube! », sur Rosenzweig.io,
  4. « Es2gears works \ o / (058b3cdd) · Commits · Panfrost / panloader », sur GitLab (consulté le 4 juillet 2020).
  5. « Activity · Panfrost », sur GitLab (consulté le 4 juillet 2020).
  6. (en) « Panfrost on the RK3399 (Meow!) », sur Rosenzweig.io,
  7. « Commits · panfrost-4.19 · Panfrost / linux », sur GitLab (consulté le 4 juillet 2020).
  8. (en) Lyude Paul & Alyssa Rosenzweig, « Introducing Panfrost », sur Chaîne Youtube de X.org
  9. (en) « A Panfrostian October », sur rosenzweig.io,
  10. (en) « panfrost: Initial stub for Panfrost driver », sur Dépôt Git de Freedesktop.org,
  11. (en) Alissa Rosenzweig, « Kodi and SuperTuxKart on Panfrost », sur rosenzweig.io,
  12. (en) Alyssa Rosenzweig, « GNOME meets Panfrost », sur Collabora,
  13. (en) Alyssa Rosenzweig, « Experimental Panfrost GLES 3.0 support has landed in Mesa »,
  14. (en) « Open source Panfrost driver for modern Mali GPUs expands OpenGL support »,
  15. (en) Alyssa Rosenzweig, « Bifrost meets GNOME: Onward & upward to zero graphics blobs », sur Collabora,
  16. (en) « features.txt », sur gitlab.freedesktop.org (sources officielles de Mesa)
  17. (en) « features.txt », sur gitlab.freedesktop.org, (sources officielles de Mesa)

Lien externes[modifier | modifier le code]