Développé par | Tungsten Graphics, Inc. (rachetée par VMware) |
---|---|
Environnement | Multiplate-forme |
Type | Synthèse d'image 3D |
Licence | MIT |
Site web | [1] |
Gallium3D est un projet de logiciel libre d'accélération 3D, commencé en 2007. Il a pour but de remplacer, au sein de Mesa 3D, les anciens pilotes trop complexes en amenant une compatibilité avec les versions plus récentes d'OpenGL, une architecture plus adaptée aux cartes 3D modernes, en simplifiant le développement des pilotes de périphériques et enfin, en apportant un contrôle plus direct entre l'application et le matériel et une architecture plus indépendante du système, des pilotes se chargeant de s'adapter au système hôte (typiquement winsys et screen)[Quoi ?].
Il devait initialement remplacer à terme Mesa 3D, mais en reste un sous-ensemble décliné en plusieurs architectures, afin de conserver l'ensemble des pilotes déjà disponibles et non portés.
Gallium 3D utilise un ensemble de modules interagissant entre eux et avec l'écosystème qui l'entoure. Ces modules sont divisés en trois catégories, les State trackers (suivi d'état), modules auxiliaires et pilotes.
Les « State Trackers » font la liaison entre Mesa et Gallium3D en convertissant les états (mode de mixage, état des textures, etc.) et appels de fonction (glDrawArrays, glDrawPixels, etc.) de Mesa en opération et objet du « pipe » de Gallium3D. LLVMpipe est présenté dès 2007 dans le but d’accélérer efficacement le calcul sur une architecture sans accélération matérielle 3D[1].
Si des fonctions d'anciennes versions d'OpenGL (1 & 2) sont utilisées, tentant d'accéder directement au rendu, elles sont d'abord converties en shaders, afin de décharger ensuite le travail aux accélérateurs dédiés.
Les pilotes sont chargés de communiquer avec le matériel. Il peut s'agir de matériel dédié à l'accélération graphique, du type GPU, ou bien du microprocesseur principal et de ses SIMD, comme dans le cas de LLVMpipe.
Les principales équivalences entre les pilotes Mesa « Classique » (classic Mesa) et Gallium3D à l'automne 2014 en fonction des systèmes choisis[2] :
Gallium 3D | Mesa3D classique |
---|---|
xorg + exa | DDX + Xv |
dri + mesa | GL + GLSL |
dri | DRI2 |
KMS + Gallium3D | DRM + DRI + DDX |
Ce projet a débuté en 2007 ; il est intégré au Git de Mesa 3D.
En janvier 2008, les pilotes pour les chipsets Intel i915 étaient pratiquement complets, les pilotes pour les chipsets Intel i965 commençaient, et la première version du pilote pour le processeur Cell (utilisé entre autres dans la console Sony PlayStation 3) permettait déjà de faire des rendus simples.
Le projet Gallium3D est principalement géré par la société Tungsten Graphics (rachetée par VMware en novembre 2008[3]) qui avait déjà développé les pilotes pour les cartes ATI à architecture R200 pour Mesa 3D.
En février 2008, le passage à DRI2 de Mesa est accompli avec la gestion de la mémoire autrefois gérée par le pilote DRI du serveur X gérée dorénavant par le pilote noyau DRM (Direct Rendering Manager). Les différentes cartes gérées dans Mesa sont rapidement portées vers la nouvelle architecture apportant plus de stabilité et de sécurité à la gestion de la 3D.
Le même mois, ATI dévoile enfin les spécifications d'une grande partie de ses puces graphiques, comme promis quelques mois auparavant par AMD, permettant une avancée majeure sur les pilotes r300 (architectures R300 à R520) dans l'accélération 3D.
En 2014, le projet LLVMpipe, qui offre une nouvelle approche en compilant à la volée, via LLVM, les langages des shaders pour un rendu logiciel, est activé par défaut dans Mesa 3D et améliore nettement ses performances.