Lima driver

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

Informations
Développé par Qiang Yu (2017-2020)
Luc Verhaegen (libv) (2012-2013)
Première version
Dernière version Mesa 19.1.0 (suit les versions de Mesa 3D)
Dépôt gitlab.freedesktop.org/limaVoir et modifier les données sur Wikidata
État du projet Stable
Écrit en C
Type pilote pour processeurs graphiques ARM Mali de la série Utgard (Panfrost est pour la séries Midgard et Bitfrost)
Licence Licence MITVoir et modifier les données sur Wikidata
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 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 .

Il est intégré, aux côtés de Panfrost à la version officielle et stable de Mesa, à partir de la version 19.1.0 sortie le [1], tandis que la première version stable de la partie Direct Rendering Manager (DRM) du noyau Linux, pour ces 2 pilotes est intégrée au noyau 5.2, sortie en juillet 2019.

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

Historique[modifier | modifier le code]

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

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 ? première démonstration publique du pilote, triangle adoucis, bande adoucie, éventail adoucis, quadrangle plat, quadrangle en triangles, cube tournant illuminé et adoucis[4]

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

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

Le 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 , 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[7].

Les derniers patchs sont soumis par l'auteur le , avec un patch supplémentaire d'un autre auteur le [8].

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

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

Fin , un fork appelé limadriver-ng apporte quelques correctifs dans la partie compilation[10]. 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[11].

En , 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[12]. En 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[13] (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 , 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[14],[15]. À la suite du rachat de Github par Microsoft en , le dépôts est déplacé vers l'instance GitLab de freedesktop.org. Le , 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[16].

En , 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[17].

À la mi-, Kodi commence à fonctionner sur la distribution LibreELEC avec le pilote Lima, permettant de se déplacer dans les menu et de visualiser quelques vidéos[18], et fin 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[19].

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

Variante Panfrost[modifier | modifier le code]

Un autre pilote, développé principalement par Alyssa Rosenzweig, initialement appelé Chai et orienté vers le Mali T700, il s'est ensuite étendu à tous les pilotes Mali-Txx en y ajoutant l'architecture Midgard, puis est devenu Panfrost, après la fusion avec le pilote BiOpenly pour architecture Bifrost (Mail-Gxx, initialement développé par Lyude Paul.

Il gère la majorité des fonctions (full) OpenGL 3.0 et OpenGL ES 3.0 en septembre 2020[21].

Implémentations du processeur graphique Mali[modifier | modifier le code]

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, OLinuXinoetc.), 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 :

Annexes[modifier | modifier le code]

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

  1. (en) « Mesa 19.1.0 Release Notes », sur mesa3d.org (consulté le ).
  2. (en)Fighting back against binary blobs! sur le blog de l'auteur du pilote Freedreno.
  3. (en) « Lima Driver » (consulté le )
  4. Premières images du pilote présentées
  5. (en) Vidéo de la conférence et démonstration de Lima au Linuxtag Berlin sur Blip.TV
  6. « Open GPU TOOLS » [archive du ], giteorious (consulté le )
  7. (en) Q3A with open source generated shaders!
  8. « Commits in lima/lima:0874e41140c2d7aa1a1aa373c406ff18b02cb9c3 », (consulté le )
  9. (en) (en) « Graphics DevRoom at FOSDEM2014 », (consulté le )
  10. (en) « limadriver-ng/lima »
  11. (en) « limadriver-ng/lima (mali 400 driver) questions »
  12. (en) Michael Larabel, « A New Mali-400 Open-Source Graphics Driver Is In Development », sur Phoronix, https://github.com/yuq/mesa-lima
  13. (en) Michael Laravel, « The Linux-Lima DRM Driver For ARM Mali Hooks Up To The AMDGPU Scheduler », sur Phoronix,
  14. (en) Michael Larabel, « ARM Mali 400/450 "Lima" DRM Driver Steps Closer To Mainline », sur Phoronix,
  15. (en) Qiang Yu, « [PATCH RFC 00/24] Lima DRM driver », sur lists.freedesktop.org,
  16. (en) « Lima does clear unconditionally for each frame », sur gitlab.Freedesktop.org
  17. « Lima does clear unconditionally for each frame (#59) · Issues · Lima / mesa », sur GitLab (consulté le ).
  18. (en) « [8.2.2.3] LibreELEC 8.2 for S912 », sur LibreELEC
  19. (en) « Completeness and usability question », sur gitlab.freedesktop.org
  20. (en) Michael Larabel, « The Lima DRM/KMS Driver Is Ready For Introduction With Linux 5.2 », sur Phoronix,
  21. (en) « features.txt », sur gitlab.freedesktop.org (sources officielles de Mesa)

Liens externes[modifier | modifier le code]

(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.