Pile graphique Linux

Pile graphique Linux

Le but de cet article est de comprendre les différents composants de la pile graphique du système d'exploitation Linux. Il y a déjà au moins un article pour chaque composant, mais aucun qui explique leurs interactions.

Sommaire

Historique

Traditionnellement le serveur X.Org avait en charge notamment tout le travail graphique.

Il s'est avéré que, si le serveur X était un outil très puissant, ce n'était pas un outil très performant. Différentes méthodes ont été explorées pour pallier cette carence :

  • court-circuiter le serveur X lorsqu'il n'était pas utile, pour supprimer un intermédiaire : ainsi DRI (pour Direct Rendering Interface) permet à Mesa d'adresser le matériel sans passer par le serveur X (Mesa ne peut s'adresser lui-même au matériel, étant en espace utilisateur) (voir le paragraphe Composition d'un pilote graphique libre sous Linux ci-après),
  • des extensions ont été ajoutées au serveur X : XRender, XRandR, et Composite notamment.

Par ailleurs, un certain nombre de choses qui étaient gérées par X.Org ont été réaffectées au noyau (evdev, GEM et KMS) ou à des bibliothèques dédiées (Cairo, pixman, FreeType, Fontconfig, Pango etc.).

De X.Org à Wayland

Avec l'avènement des compositeurs (permettant des effets de transparence, d'ombre portée etc.), le fonctionnement de X.Org pour la gestion graphique ne semble plus optimal car il constitue une étape supplémentaire entre l'application et le compositeur ainsi qu'entre le compositeur et le matériel. Wayland a été proposé pour succéder à X.Org : un serveur Wayland joue à la fois le rôle de compositeur, de gestionnaire de fenêtres et de serveur d'affichage. Wayland s'appuie pour cela sur une partie de l'infrastructure existante : pilotes DRI, GEM et KMS.

Composition d'un pilote graphique libre sous Linux

Sous Linux, un pilote de carte graphique se décompose distinctement en trois parties :

  • DDX, le pilote d'affichage du serveur X
  • DRI, le pilote Mesa
  • DRM, le pilote du noyau

Quand on parle couramment de pilote graphique libre sous Linux, on évoque généralement le pilote DDX (pour Device Dependent X). C'est un pilote spécifique à chaque matériel (nommé xf86-video-ati pour les cartes AMD, xf86-video-nouveau pour les cartes Nvidia et xf86-video-intel pour les puces graphiques Intel) utilisé par le serveur X pour gérer la 2D, c'est-à-dire essentiellement pour les effets de composition et l'accélération vidéo (via les procédés d'accélération 2D du serveur X comme EXA et ses dérivés (UXA, SNA) ou encore Xv).

Mesa est l'implémentation libre d'OpenGL pour Linux (OpenGL étant un procédé d'accélération 3D). Précisément, Mesa se décompose en deux parties : la bibliothèque Mesa 3D proprement dite, et les pilotes DRI chargés de traduire les fonctions gérées par la bibliothèque Mesa 3D en instructions compréhensibles par la carte graphique. Le résultat est envoyé à la carte graphique via DRM (pour Direct Rendering Manager), le pilote du noyau correspondant qui gère seul dorénavant les accès au matériel (DDX avait également accès au matériel avant que KMS ne permette de transférer la gestion des modes d'affichage au noyau ; aujourd'hui DDX passe par DRM pour accéder au noyau). L'accélération 3D requiert donc une prise en charge à la fois par Mesa et le noyau.

Mesa 3D ou Gallium3D

Gallium3D est présenté comme le successeur de Mesa 3D : il consiste à proposer un plus grand niveau d'abstraction du matériel afin de mutualiser au maximum les ressources au sein de cette bibliothèque et de simplifier corrélativement le développement des pilotes de cartes graphiques. Toutefois à la date du 8 octobre 2011 seuls les pilotes libres pour cartes Nvidia (projet Nouveau) et AMD l'utilisent[1] [2], tandis qu'Intel (qui développe lui-même les pilotes libres pour ses puces) n'a pas souhaité investir dans ce changement et continue de proposer des pilotes Mesa classiques[3]. Cependant Google développe actuellement une variante Gallium3D du pilote i915 d'Intel, nommée i915g[4].

Les pilotes graphiques par modèles

AMD

Pilotes Gallium3D : le pilotes r300g sert aux puces R300, R400, RS690 (chipset AMD 690) et R500 ; le pilote r600g sert aux puces plus récentes : R600, R700, Evergreen, Northern Islands[5]...

Nvidia

Pilotes Gallium3D : Issus du projet Nouveau, le pilotes nvfx sert aux puces NV30 (Geforce 5, GeForce FX) et NV40 (GeForce 6, GeForce 7) tandis que le pilote nvc0 (qui nécessite au minimum Mesa 7.11 et Linux 2.6.38) sert aux puces plus récentes[6].

Intel

Pilotes Mesa classiques[7] : le pilote 3D existe en deux versions :

  • le pilote i915 concerne les puces Intel (à fonctions fixes) de troisième génération : 915G[M], 945G[M][E] et PineView.
  • le pilote i965 concerne les puces Intel (programmables) de quatrième génération et postérieures (Ironlake, que l'on trouve dans les processeurs Clarkdale et Arrandale, représente la cinquième génération, et Sandy Bridge, la sixième génération) : X3000, X3100, X3500, 4500, X4500, X4500HD, 4500MHD, HD Graphics, HD Graphics 2000 et HD Graphics 3000...

Attention à ne pas confondre : le pilote 2D, commun à tous les circuits, est communément appelé i915.

Il existe un pilote Gallium3D développé indépendamment d'Intel, nommé i915g (cf ci-dessus).

Cas particulier des GMA x00

Pour accompagner ses processeurs Atom, Intel utilise le circuit graphique GMA 500 (nom de code : Poulsbo) ou son successeur : le GMA 600. Ces circuits n'ont pas été développés en interne mais sont basés sur le PowerVR SGX 535 d'Imagination Technologies. Ils nécessitent des pilotes spécifiques dont la version libre est peu avancée à la date du 28 octobre 2011.

Prochaine étape : accélération 2D via OpenGL ?

À terme la distinction entre accélération 2D et accélération 3D au sein de la pile graphique de Linux devrait s'effacer. Plusieurs initiatives parallèles et complémentaires sont en développement [8]:

Cairo-gl est un backend OpenGL pour Cairo introduit avec la version 1.10 de ce dernier[9] et initié par Eric Anholt[10][11].

Glamor est un procédé d'accélération 2D général basé sur OpenGL. Glamor se compose d'une bibliothèque générique pouvant s'interfacer avec le pilote DDX, et qui vise à convertir les opérations du serveur X en instructions OpenGL qui seront traitées par Mesa. Un pilote DDX modifié pour tirer partie de Glamor, EGL et KMS rend possible le démarrage d'un serveur X via Mesa/EGL sans système de fenêtrage natif[12]. Eric Anholt et Zhigang Gong, tous deux développeurs pour Intel, en sont les principaux développeurs initiaux. À noter que Gallium3D dispose de la même façon d'un backend permettant d'accélérer EXA via les fonctions 3D de la puce graphique.

Notes et références

Liens internes

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Pile graphique Linux de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • Linux Terminal Server Project — (LTSP) est un ensemble de programmes permettant à plusieurs personnes d utiliser le même ordinateur. Cela est réalisé par la mise en place d un réseau informatique composé d un serveur sous Linux et de clients légers. Le serveur héberge et… …   Wikipédia en Français

  • Fedora (Linux) — Pour les articles homonymes, voir Fedora. Fedora (Linux) …   Wikipédia en Français

  • Fedora (distribution Linux) — Fedora Pour les articles homonymes, voir Fedora (homonymie) …   Wikipédia en Français

  • Noyau Linux — Pour les articles homonymes, voir Noyau et Linux (homonymie). Linux …   Wikipédia en Français

  • X Window System — Pour les articles homonymes, voir X11.  Ne pas confondre avec le système d exploitation Windows de Microsoft qui prend un s à la fin X Window System ou X11 ou simplement X est un environnement graphique de type « fenêtr …   Wikipédia en Français

  • Mesa (OpenGL) — Pour les articles homonymes, voir Mesa. Mesa 3D …   Wikipédia en Français

  • X.Org — Développeur Fondation X.Org Dernière version …   Wikipédia en Français

  • Xgl — Développeur Novell Inc. Environnement Linux, * …   Wikipédia en Français

  • Direct rendering infrastructure — ou DRI (infrastructure pour le rendu direct en anglais), est un procédé de XFree86 4.x / X.Org permettant aux applications Mesa 3D (implémentation libre d OpenGL) de gagner du temps en accédant directement au processeur graphique sans passer par… …   Wikipédia en Français

  • Nouveau (informatique) — Pour les articles homonymes, voir Nouveau. Nouveau …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”