Graphics Execution Manager
# Graphics Execution Manager

Graphics Execution Manager, ou GEM, est un gestionnaire de mémoire pour processeurs graphiques inclus dans le noyau Linux. Il est conçu pour décharger les pilotes graphiques de cette tâche.

GEM a été développé initialement pour les architectures Intel (qui ont la particularité d'avoir une mémoire partagée) par deux ingénieurs de la société : Keith Packard et Eric Anholt. Les pilotes des principales architectures graphiques (Intel, mais aussi AMD et NVIDIA) ont ensuite été adaptés pour en tirer profit.

Intégrer le gestionnaire de mémoire au noyau Linux était un prérequis à la gestion des modes d'affichage par le noyau (kernel-based mode-setting).

GEM est également conçu pour être compatible avec les noyaux BSD.

## Histoire

GEM a été présenté par Intel en mai 2008 comme une alternative au gestionnaire de mémoire graphique Translation Table Maps (TTM) développé par la société Tungsten Graphics (rachetée par VMware en novembre 2008) et qui était alors pressenti par la plupart des développeurs de X.Org pour intégrer le noyau Linux.

L’inclusion de GEM dans le noyau Linux à partir de sa version 2.6.28 sortie en décembre 2008 semble donner raison à Intel.

Comme résultat de cette hésitation première, les pilotes libres pour processeurs AMD et NVIDIA adoptent un fonctionnement mixte. Ces derniers utilisent en interne un gestionnaire graphique équivalent à TTM tout en s'appuyant sur l'interface de programmation de GEM pour communiquer avec le reste du système graphique.

La version 2.6.31 du noyau Linux intègre les composantes nécessaires pour permettre aux cartes ATI Radeon de bénéficier de ces avancées. À partir de Linux 3.12, TTM accède à la mémoire par GEM, la solution devient commune.

Suivront les architectures NVIDIA avec le projet Nouveau, et VIA avec le projet OpenChrome emmené par la société Tungsten Graphics.

