Ouvrir le menu principal

Lima driver

pilote logiciel libre pour les processeurs graphiques ARM Mali de la série Utgard sous environnement Linux.
Lima driver

Informations
Développé par Qiang Yu (2017-2019)
Luc Verhaegen (libv) (2012-2013)
Panfrost : Alyssa Rosenzweig (2017-2019).
Première version
Version avancée git (Linux Lima : 28 mai 2018
Mesa Lima : 27 mai 2018)
Dépôt gitlab.freedesktop.org/limaVoir et modifier les données sur Wikidata
État du projet en cours de développement
Écrit en C
Type pilote pour processeurs graphiques ARM Mali de la série Utgard (Panfrost est pour la séries Midgard et Bitfrost)
Site web https://gitlab.freedesktop.org/lima/web/wikis/home

Lima driver est un projet de pilote libre pour le processeur graphique d'ARM, Mali de la série utgard, sur les systèmes d'exploitation GNU/Linux et plus généralement le noyau Linux. Ce processeur graphique est utilisé dans de nombreux SoC d'architecture ARM, dont certains Samsung Exynos, Amlogic, STMicroelectronics, Telechips, les AllWinner A1X… Initialement développé par Luc Verhaegen, début 2012, il abandonne le projet courant 2013. Le projet stagne alors pendant quelque temps avant d'être repris en juin 2017 par Qiang Yu, ce dernier l'intègre alors rapidement dans un fork de Mesa, le but étant d'être intégré à terme dans la mainline. La première demande de révision du code pour intégration dans Linux de la partie DRM a lieu en mai 2018.

Le mot Lima est une anagramme de Mali et également l’abréviation de Linux Mali.

Ce projet a également inspiré le projet Freedreno à destination des processeurs graphiques Adreno de Qualcomm, utilisés dans leur propres SoC d'architecture ARM et commencé le 14 avril 2012[1].

Sommaire

HistoriqueModifier

Ce projet a été discuté pour la première fois le dans la mise en place du futur FOSDEM[2]

Luc Verhaegen, l'auteur initial de ce pilote pour les Mali 400 n'était pas intéressé dans l'intégration de son projet à Mesa 3D, se dit opposé à un fork.

Le 3 février 2012? première démonstration publique du pilote, triangle adoucis, bande adoucie, éventail adoucis, quadrangle plat, quadrangle en triangles, cube tournant illuminé et adoucis[3]

Le 27 mai 2012, une démonstration est faite au Linuxtag de Berlin, d'un cube illuminé et texturé[4]

Connor Abbott, a entrepris à partir de 2013 une version pour la série Midgard (Mali T6xx et supérieur), et a obtenu des résultats préliminaires sur un SoC Exynos 5250. Il développe également Open GPU Tools, une série d'outils dont le but est d'aider au développement de pilotes libres pour les pilotes graphiques[5]

Le 6 février 2013 Quake III Arena en version timedemo fonctionne avec le prototype de pilote limare, et un tout petit peu plus rapidement (2 %) qu'avec le pilote officiel fermé.

Le 18 mars 2013, une version modifiée de Quake III Arena fonctionne avec les shaders et ce pilote et une solution a été trouvée pour utiliser les Mali Binary Shader, shaders précompilés, tels qu'envoyés au processeur[6].

Les derniers patchs sont soumis par l'auteur le 14 mai 2013, avec un patch supplémentaire d'un autre auteur le 9 juin 2013[7].

Le 9 juin 2013, un dernier patch produit par un autre auteur sous le pseudonyme wcipat est posé, le projet semble avoir été abandonné depuis.

Le 12 octobre 2013, libv annonce que Connor Abbott a commencé un pilote pour la série Midgard (Mali T6xx et supérieur), en travaillant sur la première version du Google Chromebook de Samsung, utilisant un Exynos 5 Dual (Exynos 5250), ils devraient ensemble présenter au FOSDEM 2014, leur progrès sur le pilote libre[8].

Fin mars 2016, un fork appelé limadriver-ng apporte quelques correctifs dans la partie compilation[9]. Pour des développeur d'Odroid, cartes basées sur des processeurs Samsung Exynos, le code est adapté à la version r3p2 de la couche de communication libre d'ARM entre X11 et le pilote[10].

En juin 2017, Qiang Yu, un développeur d'AMD, commence une nouvelle évolution du pilote pour les Mali 400. Il base son pilote sur pilote noyau DRM et la bibliothèque Mesa Gallium3D. Cette première version affiche alors, grâce à ce système un simple triangle OpenGL. Le projet est alors hebergé sur Github[11]. En avril 2018 est annoncé que le pilote utilise a été modifié pour utiliser le code d'ordonnanceur de AMDGPU depuis février. Le projet n'est pas encore dans le mainline Mesa, mais évolue vers Mesa 17.3 et le noyau 4.16[12] (peu après de la sortie de Mesa 18 et du noyau 4.16.1). Il fait une première de relecture de code du pilote DRM par les développeurs du noyau Linux le 19 mai 2018, en vue d'une intégration au sources principales du noyau, il y a en revanche encore du chemin pour l’intégration dans Mesa[13],[14]. À la suite du rachat de Github par Microsoft en juin 2018, le dépôts est déplacé vers l'instance Gitlab de freedesktop.org. Le 9 juin, le pilote commence à gérer partiellement, les fenêtres sous le bureau Weston du projet Wayland. Les développeurs se penchent alors sur les problèmes de gestion de tampons et de textures pour que cela fonctionne correctement[15].

En septembre 2018, le pilote est fonctionnel pour une utilisation de compositing sur les bureaux, Qiang Yu ayant intégré la fonction EGL_KHR_partial_update. Il faut encore l'intégrer aux systèmes d'affichage utilisés par ces bureaux. Vasily Khoruzhick connaissant le développement de Wayland Weston propose de l'y intégrer[16].

À la mi-novembre 2018, Kodi commence à fonctionner sur la distribution LibreELEC (en) avec le pilote Lima, permettant de se déplacer dans les menu et de visualiser quelques vidéos[17], et fin décembre 2018 MythTV sous X.org démarre, peut se connecter au pilote mais n'affiche encore qu'un écran noir en raison de l'implémentation incomplète des fonctions de MIP mapping[18].

La partie DRM est mainlinée en 2019 et sortira dans la version 5.2 du noyau Linux. La partie Gallium 3D du pilote sort avec Mesa 19.1[19].

Variante PanfrostModifier

Un autre projet de pilote, développé par Alyssa Rosenzweig, initialement appelé Chai et orienté vers le Mali T700, puis a pour but de gérer l'architecture Midgard d'ARM (Mali-Txxx) dans son ensemble . En mars 2018, il possède un compilateur de shaders NIR[20]. 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 partie des pilotes des 2 architectures[21]. En mai 2018, la gestion des textures fonctionne, ainsi que les shaders, quelques fonctions de mixages et le test de stencil[22]. Quelques jours après le pilote Mesa permet de faire fonctionner le benchmark es2gears[23]. Lyude Paul est également très active sur ce projet[24]. 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[25]

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

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[27]. différents progrès important ont été fait, 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[28].

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

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 fonction OpenGL pour bureau sont automatiquement traduite en fonctions OpenGL ES, permettant ainsi de faire fonctionner des applications pour bureau sur achitecture Midgard, ce qui n'est pas le cas avec le pilote propriétaire[30].

Implémentations du processeur graphique MaliModifier

Article détaillé : ARM Mali.

Ce processeur graphique se retrouvant dans des produits au prix relativement bas (moins de 50  avec par exemple Les cartes mères en matériel libre, Cubieboard, OLinuXino, etc.), basées sur des processeurs chinois Allwinner ou Rockchip, mais également à des prix plus élevés comme les tablettes ou téléphones Samsung haut de gamme, tels que les ordiphones Samsung ou les smartbook Samsung et HP.

Ce processeur graphique, se retrouve dans de nombreux équipements :

  • Ordiphone haut de gamme (telle que la série des Samsung Galaxy Note (I, II, 3 Lite, mais pas Note 3) ou Galaxy S II et III) à bas de gamme, notamment dans différentes marques chinoises incluant des SoC AllWinner A1X.
  • tablettes tactiles du haut de gamme (Samsung Galaxy tab) à bas de gamme, avec les tablettes chinoises utilisant également le AllWinner.
  • HTPC tels que les Mele A1000 ou A2000, les Mini-X…
  • Plusieurs PC-on-a-stick.
  • Des Nano-ordinateurs, généralement sous la forme de simple carte mères (on parle aussi d'ordinateur monocarte
  • Certains smartbooks (Lenovo Ideapad A10, Samsung Chromebook série 3, Samsung Chromebook 2, HP Chromebook).

AnnexesModifier

RéférencesModifier

  1. (en)Fighting back against binary blobs! sur le blog de l'auteur du pilote Freedreno.
  2. (en)(en) « Lima Driver »
  3. Premières images du pilote présentées
  4. (en) Vidéo de la conférence et démonstration de Lima au Linuxtag Berlin sur Blip.TV
  5. « Open GPU TOOLS » [archive du ], giteorious (consulté le 19 juillet 2014)
  6. (en) Q3A with open source generated shaders!
  7. « Commits in lima/lima:0874e41140c2d7aa1a1aa373c406ff18b02cb9c3 », (consulté le 19 juillet 2014)
  8. (en) (en) « Graphics DevRoom at FOSDEM2014 », (consulté le 14 décembre 2013)
  9. (en) « limadriver-ng/lima »
  10. (en) « limadriver-ng/lima (mali 400 driver) questions »
  11. (en) Michael Larabel, « A New Mali-400 Open-Source Graphics Driver Is In Development », sur Phoronix, https://github.com/yuq/mesa-lima
  12. (en) Michael Laravel, « The Linux-Lima DRM Driver For ARM Mali Hooks Up To The AMDGPU Scheduler », sur Phoronix,
  13. (en) Michael Larabel, « ARM Mali 400/450 "Lima" DRM Driver Steps Closer To Mainline », sur Phoronix,
  14. (en) Qiang Yu, « [PATCH RFC 00/24] Lima DRM driver », sur lists.freedesktop.org,
  15. (en) « Lima does clear unconditionally for each frame », sur gitlab.Freedesktop.org
  16. https://gitlab.freedesktop.org/lima/mesa/issues/59#note_28863
  17. (en) « [8.2.2.3] LibreELEC 8.2 for S912 », sur LibreELEC
  18. (en) « Completeness and usability question », sur gitlab.freedesktop.org
  19. (en) Michael Larabel, « The Lima DRM/KMS Driver Is Ready For Introduction With Linux 5.2 », sur Phoronix,
  20. (en) Michael Laravel, « Reverse-Engineering of ARM Mali "Midgard" Now Has A Working NIR Shader Compiler », sur Phoronix,
  21. « The Half Way Driver », sur Rosenzweig.io,
  22. « Ooo, Shiny Textured Cube! », sur Rosenzweig.io,
  23. https://gitlab.freedesktop.org/panfrost/panloader/commit/058b3cdd7c4aa5a5f1ad9a7c37f5b7afc5eea282
  24. https://gitlab.freedesktop.org/groups/panfrost/-/activity
  25. (en) « Panfrost on the RK3399 (Meow!) », sur Rosenzweig.io,
  26. https://gitlab.freedesktop.org/panfrost/linux/commits/panfrost-4.19
  27. (en) Lyude Paul & Alyssa Rosenzweig, « Introducing Panfrost », sur Chaîne Youtube de X.org
  28. (en) « A Panfrostian October », sur rosenzweig.io,
  29. (en) « panfrost: Initial stub for Panfrost driver », sur Dépôt Git de Freedesktop.org,
  30. (en) Alissa Rosenzweig, « Kodi and SuperTuxKart on Panfrost », sur rosenzweig.io,

Liens externesModifier

(en) Site officiel
(en) Lima — Copie sur archive.org de traces du dépôt Gitorious des sources du pilote Lima
(en) Clone sur gitlab.com par un utilisateur tiers.
(en) Limadriver-ng sur Github.
(en) Open GPU Tools — Copie sur archive.org de traces du dépôt Gitorious des sources d'Open GPU Tools.