Gallium3D
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).
Développé par | Tungsten Graphics, Inc. (rachetée par VMware) |
---|---|
Environnement | Multiplate-forme |
Type | Synthèse d'image 3D |
Licence | MIT |
Site web |
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.
Principes
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.
State Tracker
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.
Modules auxiliaires
- Module Draw (tracé), permet d’appeler des fonctions de tracés sur les puces graphiques n'ayant pas les fonctions modernes de shaders.
- Module TGSI, représentation interne et intermédiaire du langage d'ombrage (shader).
- Module RTASM, module de conversion en assembleur Just-in-Time.
- Module CSO, pour « Constant State Objects » (objet à état constant), permet de filtrer les objets ne changeant pas d'état et d'éviter ainsi de les retransmettre au processeur graphique. C'est un des points qui aura révolutionné l'industrie graphique, montrant qu'il est possible d'économiser CPU et bande passante, et inspiré OpenGL Next.
- Module util' (utilitaire), permet de déboguer, des manipulations d'image et différentes fonctions d'aide fréquentes.
Équivalence Mesa3D et Gallium3d
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 |
Historique
Ce projet a débuté en 2007 ; il est intégré au Git de Mesa 3D.
En janvier 2008, les pilotes pour les puces Intel i915 étaient pratiquement complets, les pilotes pour les puces 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.
Notes et références
- (en) « Gallium3D LLVM »,
- (en) « Current Status of Gallium3D Pipes and State Trackers », x.org, (consulté le )
- David Marshall, « VMware's year end acquisition of Tungsten Graphics », sur InfoWorld (consulté le )
Voir aussi
Articles connexes
Liens externes
- (en) Gallium3D Site officiel
- (en) Pilote Cell Page du pilote Cell pour Gallium3D sur le site de Mesa 3D.
- (en) Current Status of Gallium3D Pipes and State Trackers Statut des pilotes Gallium3D et comparaison avec les autres de Mesa