Serveur d'affichage vs gestionnaire de fenêtres vs pilote graphique?

8

J'essaie de trier ma compréhension des différentes parties des graphiques sur Linux, et je suis confus quant aux rôles joués par chacun des concepts suivants.

  • Serveur d'affichage
  • Gestionnaire de fenêtres
  • Pilote graphique

Mes questions:

  • Les pilotes graphiques sont-ils implémentés à l'intérieur du noyau Linux ou à l'extérieur? Si en dehors du noyau, pourquoi sont-ils exclus lorsque le réseau, le disque et le système de fichiers sont tous à l'intérieur du noyau?
  • X Windows, Gnome, Ubuntu Unity, KDE, Mir, Wayland qui fait quoi en termes de serveur d'affichage, de gestionnaire de fenêtres et de pilote graphique?

Mon objectif pour cette question est de comprendre quels projets contribuent quelles parties de l'expérience graphique Linux?

UPDATE http://blog.mecheye.net/2012/06/the-linux-graphics-stack/ contient beaucoup de détails que je cherchais.

ams
la source

Réponses:

3

Le terme "pilote graphique" est utilisé pour désigner plusieurs choses différentes. L'un d'eux est un pilote de noyau. Le pilote du noyau définit principalement le mode vidéo et facilite le transfert de données vers / depuis la carte. Il télécharge également généralement le firmware dans le GPU de la carte. Le firmware est un programme que le GPU exécute lui-même, mais malheureusement, les fournisseurs de graphiques ne le fournissent que sous la forme d'un blob binaire, vous ne pouvez donc pas consulter son code source.

Au-dessus de cela, vous avez généralement Xorg en cours d'exécution, qui a son propre pilote qui traduit les appels de dessin génériques X11 ou OpenGL en commandes que la carte comprend, et les envoie à la carte pour les exécuter. Il peut également effectuer une partie du travail lui-même en fonction des commandes que le GPU prend en charge et ne prend pas en charge. Dans le cas des appels OpenGL, l'infrastructure de rendu direct permet à cette partie du pilote de s'exécuter directement dans l'application client plutôt que sur le serveur X, afin d'obtenir des performances acceptables. Il permet également au pilote de l'application client d'envoyer ses commandes directement au processeur graphique, grâce à la coordination et à l'aide de Xorg et du pilote du noyau au démarrage.

Wayland et Mir sont censés remplacer Xorg en tant que type de serveur d'affichage simplifié.

Unity est à la fois un shell (fournit un bureau / lanceur) et un gestionnaire de fenêtres de composition en un.

GNOME et KDE sont des environnements de bureau. Ce sont de grands projets composés de nombreux composants. Le noyau d'entre eux sont leurs kits d'outils d'application respectifs, qui sont GTK pour GNOME et Qt pour KDE. Il s'agit d'un cadre de bibliothèque avec lequel une application est écrite et fournit la base sur laquelle tout le reste est construit. Certains des services de base qu'ils fournissent sont la gestion des événements et des objets, Windows, les fonctions de dessin de base, les E / S et bien plus encore.

psusi
la source
4
  • Les pilotes graphiques sont implémentés en tant que modules du noyau qui doivent y être chargés. Donc, fondamentalement, ils sont en dehors du noyau. La question de savoir si un noyau peut être construit pour les contenir ou non est une question qui appartient à quelqu'un de plus compétent que moi pour répondre. Je pense qu'ils ont été exclus du noyau parce que si un noyau est construit avec, disons, le nouveaupilote, il y aurait des conflits lors du chargement d'un pilote NVIDIA propriétaire plus tard.
  • X Windows, Wayland et Mir sont des serveurs d'affichage.
  • Gnome, Ubuntu Unity et KDE sont tous des environnements de bureau et non des gestionnaires de fenêtres. Un gestionnaire de fenêtres fait partie d'un environnement de bureau (par exemple, utilise Gnome metacity). Cela dit, vous pouvez exécuter des gestionnaires de fenêtres autonomes (sans environnement de bureau) comme awesome , xmonad ou openbox

Quant à savoir quel composant joue quel rôle:

  • Le pilote graphique est la façon dont le noyau "parle" à la carte graphique.
  • Le serveur d'affichage est ce qui crée et gère les fenêtres et autres éléments graphiques de votre affichage.
  • Un environnement de bureau ou un gestionnaire de fenêtres agit en tant que client du serveur d'affichage et lui indique comment dessiner / décorer les fenêtres, les panneaux, ...
Joseph R.
la source
Les modules du noyau sont définitivement considérés comme "à l'intérieur" du noyau.
psusi
@psusi J'ai choisi de lire l'OP "à l'intérieur" et "à l'extérieur" comme signifiant intégré dans le noyau plutôt que chargé dedans de "l'extérieur". Vous voulez probablement dire "à l'intérieur" du noyau dans le sens où ils ne font pas partie de l'espace utilisateur, non?
Joseph R.
Oui, c'est comme ça que j'interprète "intérieur" vs "extérieur".
psusi