¿Servidor de visualización versus Administrador de ventanas versus Controlador de gráficos?

8

Estoy tratando de ordenar mi comprensión de las diferentes partes de los gráficos en Linux, y estoy confundido en cuanto a los roles desempeñados por cada uno de los siguientes conceptos.

  • Servidor de pantalla
  • Administrador de ventanas
  • Controlador de gráficos

Mis preguntas:

  • ¿Los controladores de gráficos se implementan dentro del kernel de Linux o afuera? Si fuera del núcleo, ¿por qué se excluyen cuando la red, el disco y el sistema de archivos están todos dentro del núcleo?
  • X Windows, Gnome, Ubuntu Unity, KDE, Mir, Wayland, ¿quién hace qué en términos de Display Server, Window Manager y Graphics Driver?

Mi objetivo para esta pregunta es comprender qué proyectos están contribuyendo, ¿qué partes de la experiencia de Linux Graphics?

ACTUALIZACIÓN http://blog.mecheye.net/2012/06/the-linux-graphics-stack/ tiene muchos de los detalles que estaba buscando.

ams
fuente

Respuestas:

3

El término "controlador de gráficos" se utiliza para referirse a varias cosas diferentes. Uno de ellos es un controlador de kernel. El controlador del núcleo en su mayoría solo establece el modo de video y facilita el paso de datos a / desde la tarjeta. También suele descargar el firmware en la GPU de la tarjeta. El firmware es un programa que ejecuta la GPU, pero desafortunadamente, los proveedores de gráficos solo lo proporcionan como un blob binario, por lo que no puede ver su código fuente.

Por encima de eso, generalmente tiene Xorg ejecutándose, que tiene su propio controlador que traduce las llamadas de dibujo genéricas X11 u OpenGL en comandos que la tarjeta comprende y los envía a la tarjeta para ejecutarlos. También puede hacer parte del trabajo en sí mismo dependiendo de los comandos que el gpu admite y no admite. En el caso de las llamadas OpenGL, la Infraestructura de renderizado directo permite que esta parte del controlador se ejecute directamente en la aplicación del cliente en lugar del servidor X, para obtener un rendimiento aceptable. También permite que el controlador en la aplicación cliente envíe sus comandos directamente a la gpu, gracias a la coordinación y la ayuda de Xorg y el controlador del kernel al inicio.

Se supone que Wayland y Mir reemplazarán a Xorg como un tipo simplificado de servidor de visualización.

Unity es tanto un shell (proporciona escritorio / lanzador) como un administrador de ventanas de composición en uno.

GNOME y KDE son entornos de escritorio. Son grandes proyectos que constan de muchos componentes. El núcleo de ellos son sus respectivos kits de herramientas de aplicación, que son GTK para GNOME y Qt para KDE. Este es un marco de biblioteca con el que se escribe una aplicación y proporciona la base sobre la cual se construye todo lo demás. Algunos de los servicios básicos que proporcionan son manejo de eventos y objetos, Windows, funciones básicas de dibujo, E / S y mucho más.

psusi
fuente
4
  • Los controladores de gráficos se implementan como módulos del núcleo que deben cargarse en él. Entonces, básicamente, están fuera del núcleo. Si se puede o no construir un kernel para contenerlos, es algo que debe responder alguien con más conocimiento que yo. Creo que fueron excluidos del kernel porque si un kernel está construido con, digamos, el nouveaucontrolador, tendría conflictos al cargar un controlador NVIDIA propietario más adelante.
  • X Windows, Wayland y Mir son servidores de visualización.
  • Gnome, Ubuntu Unity y KDE son entornos de escritorio, no gestores de ventanas. Un administrador de ventanas es parte de un entorno de escritorio (por ejemplo, Gnome usa metacity). Dicho esto, puede ejecutar administradores de ventanas independientes (sin entorno de escritorio) como awesome , xmonad o openbox

En cuanto a qué componente juega qué parte:

  • El controlador de gráficos es cómo el núcleo "habla" con la tarjeta gráfica.
  • El servidor de visualización es lo que crea y administra ventanas y otros elementos gráficos de su pantalla.
  • Un entorno de escritorio o administrador de ventanas actúa como un cliente para el servidor de visualización y le indica cómo debe dibujar / decorar ventanas, paneles, ...
Joseph R.
fuente
Los módulos del núcleo definitivamente se consideran "dentro" del núcleo.
psusi
@psusi Elegí leer el OP "adentro" y "afuera" como significado integrado en el núcleo vs. cargado en él desde "el exterior". Probablemente quiere decir "dentro" del núcleo en el sentido de que no son parte del espacio de usuario, ¿verdad?
Joseph R.
Sí, así es como interpreto "adentro" vs "afuera".
psusi