# Lima driver

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.
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 11 juin 2019, 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 leurs propres SoC d'architecture ARM et commencé le 14 avril 2012.

## Historique

Ce projet a été discuté pour la première fois le 21 janvier 2012 dans la mise en place du futur FOSDEM
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
Le 27 mai 2012, une démonstration est faite au Linuxtag de Berlin, d'un cube illuminé et texturé
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
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.
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.
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.
Fin mars 2016, un fork appelé limadriver-ng apporte quelques correctifs dans la partie compilation. 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.
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. 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 (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$^,$. À 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.
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.
À la mi-novembre 2018, 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, 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.
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.

### Variante Panfrost

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.

## Implémentations du processeur graphique 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 :
* Smartphone 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).