Comme vous le savez sûrement, la gestion de toute la pile graphique a beaucoup évolué ces dernières années. Une des évolutions majeures dans ce domaine à été l'introduction de l'API
Gallium3D, initialement développée par Tungsten Graphics (aujourd'hui rachetée par VMware).
Pour résumer, Gallium3D est une API de type middleware qui se situe directement au dessus du matériel et vise à en exposer les fonctionnalités de manière générique aux API orientées application comme
OpenGL et
Direct3D (D3D). Contrairement à
Mesa 3D, dont il se veut le remplaçant, Gallium 3D n'utilise pas de backend spécifique à chaque matériel, mais délègue toute la partie dépendante du matériel à l'infrastructure DRI2 du kernel. L'ensemble forme ainsi une pile graphique plus cohérente et mieux segmentée, ce qui réduit la duplication de code/fonctionnalités et améliore les performances générales.
À l'heure actuelle, peu de pilotes supportent cette API. Parmi ceux la supportant, on retrouve principalement des pilotes libres pour Nvidia et ATI :
Nouveau et les pilotes
Radeon R300-R600. Les
pilotes libres pour Intel ne l'implémentent pour l'instant
que de manière partielle.
Dans une pile basée sur Gallium 3D, toutes les API applicatives se retrouvent à égalité vis à vis du matériel. Ainsi, OpenGL devient, pour une application, une des façons possibles d'exploiter la carte graphique.
C'est dans ce contexte que Luca Barbieri a décidé d'implémenter l'API Direct3D, version 10/11, directement au-dessus de Gallium 3D. Suite à son
premier commit (12 septembre 2010), une
discussion s'est ouverte sur liste mesa-dev. Direct3D devient ainsi une API graphique native sous Linux (ou tout système disposant de Gallium3D). L'avantage est double : la première utilisation qui vienne à l'esprit est bien entendu Wine. Pour rappel, Wine implémente actuellement une partie de Direct3D au-dessus d'OpenGL, c'est à dire que chaque appel à une fonction D3D est traduit en l'équivalent OpenGL, ce qui dans certains cas relève plus de l'émulation que de la traduction. Cette étape d'émulation pourra être éliminée. Ceci devrait largement améliorer les performances de Wine coté jeux. Le second avantage de la disponibilité de D3D sous Linux concerne évidement le portage des jeux en natif sur notre système préféré qui en sera grandement facilité.
Enfin, Direct3D est, selon le développeur, largement supérieur à OpenGL : "
Thanks to a very clean and well-though design done from scratch, the Direct3D 10/11 APIs are vastly better than OpenGL and can be supported with orders of magnitude less code and development time, as you can see by comparing the lines of code of this commit and those in the existing Mesa OpenGL implementation." (extrait du
changelog de son 1er commit). Il annonce de meilleures performances et une stabilité accrue pour les futures applications basées sur son implémentation de D3D grâce aux qualités intrinsèques de ce dernier.
NdM : Cette annonce est une très bonne nouvelle pour le jeu sous Linux, une très bonne application pratique de Gallium3D, mais reste à voir si dépendre de Microsoft ne va pas poser problème...