Mesa 3D

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Mesa.
Mesa 3D
Développeur Brian Paul, Tungsten Graphics, Inc. (rachetée par VMware), Intel et al.
Environnements Multiplate-forme
Type Synthèse d'image 3D
Licence X11
Site web www.mesa3d.org
La pile graphique de Linux comprend Mesa 3D
L’implémentation de EGL plus libwayland-EGL in Mesa 3D et Wayland

Mesa 3D est une bibliothèque graphique libre, initialement développée par Brian Paul, à partir d'août 1993, qui fournit une implémentation générique d'OpenGL pour réaliser des rendus graphiques tridimensionnels en temps réel, et ce sur de multiples plates-formes. Bien que Mesa 3D ne soit pas une implémentation officielle d'OpenGL, les structure, syntaxe et sémantique de son API sont celles d'OpenGL.

En juillet 2007, Mesa 3D est la seule[réf. nécessaire] implémentation d'OpenGL complètement open source. Elle est principalement utilisée par l'implémentation X.Org du système de fenêtrage X, qui l'utilise pour le rendu OpenGL pour les pilotes open-source DRI X.Org/OpenGL. X.Org fournit les fonctionnalités essentielles à la plupart des applications graphiques fonctionnant sous les plates-formes de type Unix, comme GNU/Linux.

Une mise à jour importante a été faite en juillet 2009 avec l'incorporation du travail réalisé sur Gallium3D, développé principalement par la société Tungsten Graphics (rachetée par VMware) et initialement prévu pour remplacer Mesa 3D. Cette nouvelle version simplifie le développement des pilotes graphiques en proposant un niveau d'abstraction unique sollicité par les pilotes graphiques et qui peut lui-même recourir à différents procédés d'accélération basés sur OpenGL, OpenGL ES, OpenCL[1], OpenVG voire Direct3D (auquel Wine pourrait avoir recours). D'une manière générale, elle doit permettre une meilleure exploitation des capacités des processeurs graphiques actuels et peut fournir un procédé de décodage vidéo universel[2]. Enfin, Gallium3D rend possible l'utilisation du processeur graphique (GPU) pour des tâches de calcul, autrefois dévolues au processeur central (CPU) (on parle alors de General-Purpose computation on GPUs ou GPGPU).

Sur l'architecture x86, les pilotes libres pour puces AMD et Nvidia utilisent Gallium3D. Intel en revanche continue de recourir à Mesa pour les pilotes libres de ses puces graphiques. Du code assembleur pour l'accélération des calculs via SIMD x86 et x86_64 (AMD64) sont également présents.

Sur l'architecture ARM, il n'y a pas de code assembleur pour l’accélération SIMD (neon), et seul freedreno, le pilote libre dédié aux processeurs graphiques Adreno de Qualcomm est intégré à la branche principale de développement.

Les auteurs du pilote Lima, pour les GPU Mali d'ARM préfèrent conserver leur pilote en dehors de l'arborescence, en raison de ses mises à jour plus fréquentes, et que celui-ci soit compilé indépendamment.

Fonctionnalités[modifier | modifier le code]

Mesa 3D implémente les Interfaces de programmation graphiques suivantes :

et pilotes pour matériel graphique.


  • Dans sa forme actuelle, Mesa 3D est disponible et peut être virtuellement compilée sur toutes les plates-formes modernes.
  • Bien que n'étant pas une implémentation officielle d'OpenGL pour des raisons de licence, l'auteur de Mesa 3D a travaillé à garder l'API conforme avec les plus standards d'OpenGL et de ses tests de conformité, comme définis par l'OpenGL Architecture Review Board (ARB).
  • Bien que Mesa 3D supporte l'accélération graphique de plusieurs cartes, elle peut aussi être compilée comme un moteur de rendu uniquement logiciel. Comme son code source est également disponible, il est possible d'en étudier le fonctionnement interne pour réaliser un rendu de type OpenGL.
  • Il est parfois possible de trouver des bogues dans les applications OpenGL en liant l'application avec Mesa 3D et en utilisant un débogueur pour pister les problèmes au niveau des couches internes de la bibliothèque.
  • OpenVG.
  • Depuis la version 10.1, Mesa 3D implémente la version 3.3 d'OpenGL. À noter que Mesa doit être compilé avec le paramètre --enable-texture-float pour pouvoir bénéficier des floating-point texture compte tenu d'une revendication de brevets faite par Silicon Graphics[3].

Historique[modifier | modifier le code]

Initialement, Mesa 3D réalisait tout le rendu des graphismes 3D au niveau du processeur central (CPU), mais l'architecture de Mesa 3D s'est ouverte pour implémenter le rendu en accélération matérielle au niveau du processeur graphique (GPU) afin de décharger le processeur central de cette tâche. Un des premiers pilotes à supporter l'accélération matérielle a été le pilote 3dfx pour l'API Glide pour les cartes graphiques très populaires Voodoo I/II et autres. Tout le rendu était fait de manière indirecte dans le serveur X, ce qui n'était pas optimal en termes de vitesse de rendu.

Le Direct Rendering Infrastructure (DRI) a finalement succédé à l'ancienne architecture au sein de Mesa 3D en fournissant une interface de rendu 3D direct pour les applications OpenGL.

La version 7.4 a permis aux matériels supportés (Intel d'abord, ATI et NVidia ultérieurement) de tirer profit des évolutions du système graphique de Linux que sont le Graphics Execution Manager (GEM) et DRI2 puis le code de Gallium3D a été intégré dans la version 7.5[4].

La version 7.5 sortie le implémente la version 2.1 d'OpenGL[5].

La version 7.6, sortie le 28 septembre 2009, inclut le support OpenVG et une implémentation alpha de llvmpipe (Low-Level Virtual Machine) développée par José Fonseca et Zack Rusin pour VMware[6], permettant d'accélérer certaines parties du codes lors d'interprétation purement logicielle en précompilant le code.

La version 7.7, sortie le 21 décembre 2009, ajoute le pilote Gallium "SVGA" de VMware, permettant de faire bénéficier de l'accélération 3D aux systèmes invités dans le cadre de la virtualisation.

La version 8.0 sortie le implémente la version 3.0 d'OpenGL.

La version 9.0, sortie le apporte le support d'OpenGL 3.1. S'agissant spécifiquement des pilotes libres basés sur Gallium3D, cette version ajoute le support d'OpenCL pour les puces Nvidia et AMD (le pilote R600g semblant toutefois le plus avancé des pilotes libres en la matière)[7], et celui de VDPAU (pour le moment limité à MPEG1 et MPEG2).

La version 9.1, sortie le , apporte le support d'OpenGL ES 3.0.

La version 9.2, sortie le , intègre le pilote Gallium3D des puces Adreno, conçues par Qualcomm pour équiper les SoC ARM Snapdragon.

La version 10.0 sortie le intègre DRI3 et offre la prise en charge de OpenGL (3.2 et) 3.3.

Notes et références[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]