Gallium3D

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Gallium3D
Développeur Tungsten Graphics, Inc. (rachetée par VMware)
Environnements 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 qui avait pour but de remplacer Mesa 3D en amenant une compatibilité avec les versions plus récentes d'OpenGL, une architecture plus adaptée aux cartes 3D récentes, apportant par là-même une simplification du développement des pilotes de périphériques et enfin, une architecture indépendante du système, des pilotes se chargeant de s'adapter au système hôte (typiquement winsys et screen).

Il reste finalement un sous ensemble de Mesa 3D décliné en plusieurs architectures.

Principes[modifier | modifier le code]

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[modifier | modifier le code]

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.

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[modifier | modifier le code]

  • 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évolutionner 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 manipulation d'image et différentes fonctions d'aide fréquentes.

Pilotes[modifier | modifier le code]

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.

Équivalence Mesa3D et Gallium3d[modifier | modifier le code]

différence entre le pilote Gallium 3D et le pilote DRI

La principale équivalences entre les pilotes Mesa « Classique » (classic Mesa) et Gallium3D à l'automne 2014 en fonction des systèmes choisis[1] :

Gallium 3D Mesa3D classique
xorg + exa DDX + Xv
dri + mesa GL + GLSL
dri DRI2
KMS + Gallium3D DRM + DRI + DDX

Historique[modifier | modifier le code]

Ce projet à 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) 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[modifier | modifier le code]

  1. (en) « Current Status of Gallium3D Pipes and State Trackers », x.org,‎ 10 août 2013 (consulté le 17 octobre 2014)

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]

  • (en) Gallium3D Site officiel
  • (en) Pilote Cell Page du pilote Cell pour Gallium3D sur le site de Mesa 3D.
  • (en) [2] Statut des pilotes Gallium3D et comparaison avec les autres de Mesa