KMS , DRI, GEM, TTM,
Mesa, XFree86 4.x, X.Org, serveur X, VNC
pile graphique linux, pilotes propriétaires,
ATI et nVidia, Intel, XRandR, Composite, Wayland,
DDX: pilote d'affichage du serveur X, DRM: pilote du noyau,
xf86-video-ati, xf86-video-intel, xf86-video-nouveau.
POSIX, X Window System
système de fenêtrage, gestionnaires de fenêtre,
Cet article tente de faire modestement état du fonctionnement graphique sous linux depuis presque 6 années. Des avancées et des difficultés apparaissent.
Nouveaux matériels dont les pilotes ne sont pas communiqués ou au compte-goutte,
nouvelles fonctionnalités…
Des parties importantes du système sont remaniées en permanence.
L'exigence du Libre impose que ces parties essentielles des systèmes Linux ne soient pas sous-traitées à des sociétés commerciales qui créeraient immédiatement des distributions propriétaires fermées, pour ensuite mieux les détruire.
Si le système linux devenait dépendant d'intérêts privés, cela conduirait à son éclatement puis à sa disparition. Personne ne le souhaite dans le Monde du Libre. Les utilisateurs conquis par l' architecture efficace de ce système d'exploitation sont impatients et attentifs aux évolutions en cours.
Il ne s'agit pas seulement de tenter de gagner les utilisateurs de jeux, mais de conserver simplement les utilisateurs actuels !!
A moins que ces derniers ne décident de n'acheter que du matériel de quatres années au moins. Cette durée est approximativement celle qu'il faut en moyenne pour développer des pilotes alternatifs. Il faudrait dans ces conditions garder son matériel, ou se tourner vers de l' occasion.
Les grandes sous-parties: - KMS - La pile graphique Linux - le serveur X.
http://fr.wikipedia.org/wiki/Kernel-based_mode-setting
Kernel-based mode-setting, ou KMS, est un procédé permettant la gestion des modes d'affichage par le noyau Linux.
Il est intégré au noyau Linux depuis la version 2.6.29.
Compatible dans un premier temps uniquement avec les architectures Intel, son usage s'étend aux autres architectures (comme les processeurs ATI Radeon à compter du noyau Linux 2.6.31).
Sans KMS c'est le pilote graphique qui se charge de la gestion des modes d'affichage graphique, ce qui est loin d'être optimal.
Ce travail est fait une première fois par le noyau Linux pour l'affichage des messages durant la phase de démarrage,puis le pilote graphique réinitialise à nouveau le mode d'affichage lorsqu'il est lui-même chargé.
KMS dépend de GEM
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. Selon des tests préliminaires effectués par le premier, les performances d’une puce Intel i915 étaient augmentées de 50 à 60 %.
Maintenant que GEM est intégré au noyau Linux, les pilotes des principales architectures graphiques (Intel, ATI Technologies, etc.) devraient rapidement être 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.
Le gestionnaire de mémoire pour processeurs graphiques Translation Table Maps (TTM), “un système à la fois concurrent et complémentaire du gestionnaire” Graphics Execution Manager (GEM) inclus dans le noyau Linux.
Bien que TTM ait été supplanté par GEM, cette société est à l' origine de ces produits novateurs et indispensables aux système linux d'aujourd'hui: Mesa 3D et DRI.
Mesa 3D est une bibliothèque graphique libre. Elle fournit une implémentation générique d'OpenGL pour réaliser des rendus graphiques tridimensionnels en temps réel. Le projet Gallium3D que l'on retrouve aujourd'hui intégré à MESA 3D a été développé par Tungsten Graphics.
Direct Rendering Infrastructure ou DRI (infrastructure pour le rendu direct), 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 le serveur X. La plupart des pilotes libres de cartes graphiques implémentent ce procédé aujourd'hui.
Le serveur X utilisant souvent le matériel, il a été préférable de placer le contrôle de celui-ci au niveau du noyau, pour éviter qu'une fermeture brutale du serveur entraîne un redémarrage de la machine. Le module noyau s'appelle le DRM, pour Direct Rendering Manager, de nombreuses cartes sont supportées par le noyau Linux, mais certaines le sont aussi par les noyaux FreeBSD et NetBSD.
XFree86 a été tué par X.Org; X.Org devrait être remplacé par Wayland.
http://fr.wikipedia.org/wiki/XFree86
XFree86 est une implémentation libre du système graphique X Window System. XFree86 fonctionne sur la plupart des systèmes d'exploitation de type Unix et également sur Windows en utilisant Cygwin. Il a été pendant plusieurs années le système graphique utilisé par la plupart des distributions Linux et systèmes BSD, jusqu'au fork de X.Org en 2004.
La version 4.4, sortie en février 2004, a vu sa licence changée. Ce changement fut très controversé. Il a abouti à la décision de nombreuses distributions de Linux de migrer vers X.Org (un fork de XFree86, réalisé juste avant le changement de licence).
On pourrait dire, malgré les rares mises à jour de XFree86, que le projet totalement libre X.Org a en quelque sorte “tué” XFree86.
http://fr.wikipedia.org/wiki/X.Org
X.Org est un serveur X, – la famille de système de fenêtrage la plus connue – libre issu d'un fork de XFree86. Son développement est mené par la fondation X.Org et fait partie de l'effort de standardisation de Freedesktop.org.
Xgl, apparu en 2006, est un serveur X basé sur X.Org et recourant à OpenGL.
AIGLX a été développé en réaction à Xgl. Il s'appuie sur X.Org pour proposer une accélération matérielle via OpenGL. AIGLX a été fusionné avec le projet X.Org à partir de la version 7.1 de ce dernier.
La version 7.2, sortie le 15 février 2007, apporte l'autoconfiguration, et une meilleure intégration des gestionnaires de fenêtres utilisant openGL comme Compiz et Beryl.
La version 7.3, sortie le 6 septembre 2007, intègre Xserver 1.4 et ajoute, entre autres, le support du Input hotplug, permettant ainsi de se passer dans la majorité des cas de fichier de configuration.
La version 7.4, sortie le 23 septembre 2008, intègre Xserver 1.5.1 qui inclut de nombreuses améliorations dans le support de EXA.
Dans l'intervalle, Xserver 1.6 sortie le 25 février 2009 intègre DRI2, dans le cadre de l'effort réalisé pour mettre à jour l'architecture de rendu de Xserver qui avait fini par être dépassée.
X11R7.6 : La version 7.6 de X.org est sortie le 20 décembre 2010.
Le serveur X.org a d'abandonné sa dépendance à HAL (sur les systèmes GNU/Linux, X Server s'appuiera donc directement sur libudev).
Les pilotes propriétaires posent évidemment des problèmes :
Les pilotes propriétaires des cartes graphiques ATI (à partir de la version 8.8.25) et nVidia pour Linux supportent X.Org (ainsi que XFree86).
Intel a annoncé en août 2006 que ses pilotes pour les chipsets i965 seraient développés sous licence GNU GPL avec la communauté freedesktop.org.
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.).
Wayland a été proposé pour succéder à X.Org.
Sous Linux, un pilote de carte graphique se décompose distinctement en trois parties :
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, - xf86-video-intel pour les puces graphiques Intel.
Le pilote DDX est 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 est 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,(produite par Tungsten Graphics). - 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.
X Window System X11 ou simplement X
est un environnement graphique de type « fenêtré » qui gère l'interaction homme-machine par l'écran, la souris et le clavier de certains ordinateurs en réseau (ou non).
Ce modèle de communication permet notamment l'affichage de fenêtres et autres éléments d'interfaces graphiques, en local (logiciel client et serveur sur la même machine) ou déporté sur un autre ordinateur à travers le réseau (un logiciel graphique tourne sur une machine distante et est affiché sur une station de bureau ou portable).
Il est souvent appelé X Window à ne pas confondre avec x windows (?).
C'est le système standard ouvert d'interaction graphique avec l'utilisateur sur les UNIX (Linux, BSD, etc.).
Le serveur X est optionnel sur Mac OS X (qui utilise nativement Quartz).
Il est possible d'installer un serveur X sur la plupart des systèmes d'exploitation, dont Windows. On dit communément d'une application qu'elle tourne sous X lorsqu'elle est conçue pour l'environnement X.
Parmi les clients X, on en distingue généralement un en particulier : le gestionnaire de fenêtres dont le rôle est de gérer l'affichage, la sélection, le déplacement, le redimensionnement et les décorations des fenêtres (une fenêtre particulière étant la root-window c'est-à-dire fenêtre-racine).
En informatique un « gestionnaire de fenêtres » (« window manager » en anglais) est un logiciel chargé de l'affichage et du placement des fenêtres d'applications. Les plus connus sont ceux utilisé par le système de fenêtrage X (sur les systèmes Unix, Linux et BSD). Il en existe aussi sous Windows comme LiteStep.
Le gestionnaire de fenêtres constitue l'intermédiaire entre le système de fenêtrage et l'environnement graphique.
Le gestionnaire de fenêtres offre des moyens pour déplacer, redimensionner et icônifier les fenêtres affichées par les autres clients. De plus, il ajoute une décoration aux fenêtres qui consiste souvent en un cadre et une barre de titre
http://fr.wikipedia.org/wiki/Syst%C3%A8me_de_fen%C3%AAtrage
Un système de fenêtrage est un logiciel qui permet à /l'utilisateur d'un ordinateur d'interagir via un clavier et un dispositif de pointage comme une souris avec plusieurs applications graphiques visibles simultanément/.
Chaque application s'affiche dans une ou plusieurs fenêtres qui sont des zones rectangulaires de l'écran. Ces fenêtres peuvent se recouvrir les unes les autres. L'utilisateur peut déplacer et redimensionner les fenêtres, les fermer temporairement ou leur faire occuper tout l'écran.
Un système de fenêtrage virtuel peut tourner de manière distante et permettre à l'utilisateur d'interagir avec plusieurs applications fenêtrées de cette machine. C'est le cas des systèmes de type VNC. Pour des performances correctes, le protocole X n'est pas utilisé.En effet, avec X, le protocole est de bas niveau, et nécessite une bande passante importante.
Metisse, Qtopia, Quartz Compositor pour Mac OS X, Twin (Text WINdows),X Window System…
DM, GEM, Intuition, NeXTSTEP DPS.
GEM a été présenté par Intel en mai 2008, puis intégré dans le noyau Linux à partir de sa version 2.6.28 sortie en décembre 2008.
GEM est une alternative au gestionnaire de mémoire graphique Translation Table Maps (TTM).
TTM est développé par la société Tungsten Graphics (rachetée par VMware en novembre 2008), voir ci-dessous. Il était pressenti par la plupart des développeurs de X.Org pour intégrer le noyau Linux.Ce qui ne s'est pas fait.
Comme résultat de cette hésitation première, les pilotes libres pour processeurs ATI 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 carte ATI Radeon de bénéficier de ces avancées.
http://fr.wikipedia.org/wiki/Tungsten_Graphics
Tungsten Graphics est une compagnie créée par quelques uns des développeurs de Precision Insight Inc. après la fusion de celle-ci avec VA Linux. En novembre 2008, elle a été rachetée par VMware, société spécialisée dans la virtualisation.
Elle est spécialisée dans le graphisme 3D à qui l'on doit un certain nombre d'avancées en matière d'affichage, notamment pour les systèmes d'exploitation GNU/Linux.
Son travail se retrouve ainsi dans :
- Translation Table Maps (TTM), - Mesa 3D, - DRI.
Article quasi exhaustif et relativement pédagogique (contenu et mise en page)qui présente les enjeux de l' affichage sous linux en 2005. Cet article reste pertinent fin 2011.
Le_traitement-graphique_sous_linux
4 ans plus tard, en 2009, Pavel Rojtberg fait le point sur ce qui a avancé ou pas.
Technical Blog of Pavel Rojtberg_4-years-later
http://fr.wikipedia.org/wiki/Pile_graphique_Linux
http://fr.wikipedia.org/wiki/Kernel-based_mode-setting
http://www.icaunux.org/doku.php?id=ubuntu_et_les_chipset_video_intel&#des_solutions
http://wiki.ubuntu.com/X/Bugs/Lucidi8xxFreezes