Le fonctionnement avancé de l'affichage graphique sous Linux

Mots-clés

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,

Intérêt et but de cet article

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.

Progrès ?

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.

Exigence du libre

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.

N'oublions pas que ce n'est pas l'intérêt général qui prévaut, mais l'appât du gain de quelques sociétés privées à tendance monopolistique !

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.

Quels enjeux pour Linux ?

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.

Voir l' article Icaunux de base sur le fonctionnement graphique d'un ordinateur

Plan

Cet article vise une étude non technique, mais détaillée du système graphique. L'évolution de celui-ci n'est pas forcément facile à saisir.Il s'agit avant tout de vulgarisation.

Les grandes sous-parties: - KMS - La pile graphique Linux - le serveur X.

Kernel-based mode-setting

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

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

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.

Tungsten graphics et ses produits

Voir en Annexe, l'historique.

TTM

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.

DRI

DRI et Mesa

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 4.x versus X.Org

XFree86 a été tué par X.Org; X.Org devrait être remplacé par Wayland.

XFree86 4.x

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.

X.Org

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.

Dérivés Xgl et AIGLX

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.

Historique des versions

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.

Cela a sans doute à voir avec le fait que le fichier xorg.conf est maintenant vide.

Xserver

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.

DRI2

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).

Pilotes propriétaires

Les pilotes propriétaires posent évidemment des problèmes :

  • les spécifications des cartes ne sont pas disponibles, ainsi il est impossible de développer des pilotes libres rapidement et efficacement (depuis fin 2007 AMD/ATI publie les spécifications de ses cartes graphiques) ;
  • le développement des pilotes libres se fait par tâtonnements et parfois rétro-ingénierie, ce qui est une grande perte de temps et de ressources qui pourraient être réutilisées sur d'autres projets ;
  • les pilotes propriétaires ne sont pas redistribuables avec les distributions libres, ne sont pas intégrés au système, et nécessitent une installation et une configuration séparée et spécifique ;
  • l'installation d'un simple pilote graphique propriétaire fait perdre tout le bénéfice d'un système entièrement libre.

ATI et nVidia

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 août 2006

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.

La pile graphique Linux

Fonctionalités

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

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.

Utiliser XRandR, Composite

Des extensions ont été ajoutées au serveur X : XRender, XRandR, et Composite notamment.

c'est XRandR qui permet de gérer le multi-écrans facilement.

Décharger le serveur X sur le noyau et des bibliothèques dédiées

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.).

http://fr.wikipedia.org/wiki/Pile_graphique_Linux

Wayland

Wayland a été proposé pour succéder à X.Org.

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).

Le pilote DDX

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).

DRI: le pilote Mesa

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.

DRM: son rôle

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 vs DRM et KMS

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.

Le serveur X

Ses noms

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).

Utilité

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).

Divers serveur X

Il est souvent appelé X Window à ne pas confondre avec x windows (?).

Il est difficile de trouver de l' information sur “x windows” avec un x minuscule.

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.

Le gestionnaire de fenêtres: un client 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).

Le début de ce qui suit (gestionnaires de fenêtre, système de fenêtrage) est repris plus en détail et complété dans l' article d'Icaunux nommé “Compréhension basique du fonctionnement graphique d'un ordinateur”. Néanmoins pour la cohérence de l'article en cours, nous laissons les grandes lignes de ces thèmes ici.

Les gestionnaires de fenêtre

Gestionnaire_de_fenetres

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

Le système de fenêtrage

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.

VNC

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.

Quelques systèmes de fenêtrage

Compatibles avec POSIX X

Metisse, Qtopia, Quartz Compositor pour Mac OS X, Twin (Text WINdows),X Window System…

Non compatibles POSIX

DM, GEM, Intuition, NeXTSTEP DPS.

Annexes: GEM vs TTM et Tungsten graphics

Historique

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.

Fonctionnement mixte

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.

Annexe 2: La société Tungsten Graphic

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.

Liens

fonctionnement_avance_affichage_graphique_linux.txt · Dernière modification: 2011/11/20 20:07 (modification externe)
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0