# Panfrost

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$^,$. 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.
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

En mars 2018, il possède un compilateur de shaders NIR. Sur son blog, le 4 avril 2018, 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. En mai 2018, la gestion des textures fonctionne, ainsi que les shaders, quelques fonctions de mixages et le test de stencil. Quelques jours après le pilote Mesa permet de faire fonctionner le benchmark es2gears. Lyude Paul est également très active sur ce projet. Début septembre 2018, 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
En septembre 2018 é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
En octobre 2018, 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. 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.
Le 29 janvier 2019, une version initiale du pilote est intégrée au code principal de Mesa.
En avril 2019, 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.
Fin juin 2019, le pilote peut faire fonctionner le bureau GNOME Shell, après avoir amélioré le système de gestion de tuiles de tailles dynamiques.
Fin février 2020, 95 % des tests compatibilité avec OpenGL ES 3.0 sont passés avec succès.
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$^,$.
En juillet 2020, 20 des 27 fonctions spécifiques à OpenGL 3.0 sont supportées par Panfrost.
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 fonctions d'OpenGL 4.0 à 4.5
Le 1er janvier 2021, toutes les spécifications d'OpenGL 3.0 sont couvertes, il reste un bug de gestion de tampon de textures pour supporter 3.1. Le 13 janvier 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.
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.
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
En octobre 2024, le pilote PanVK supporte Vulkan 1.0 (pour les générations supérieures à Midgard, le support de Vulkan pour celui-ci étant abandonné en 2022).