Servidor de exibição x Gerenciador de janelas x Driver de gráficos?


8

Estou tentando classificar meu entendimento da parte diferente dos gráficos no Linux e estou confuso quanto aos papéis desempenhados por cada um dos seguintes conceitos.

  • Servidor de exibição
  • Gerenciador de Janelas
  • Driver de gráficos

Minhas perguntas:

  • Os drivers gráficos são implementados dentro do Kernel Linux ou fora? Se fora do kernel, por que eles são excluídos quando rede, disco e sistema de arquivos estão todos dentro do kernel?
  • X Windows, Gnome, Ubuntu Unity, KDE, Mir, Wayland, quem faz o que em termos de servidor de exibição, gerenciador de janelas e driver de gráficos?

Meu objetivo para esta pergunta é entender quais projetos estão contribuindo com quais partes da experiência gráfica do Linux?

ATUALIZAÇÃO http://blog.mecheye.net/2012/06/the-linux-graphics-stack/ tem muitos detalhes que eu estava procurando.

Respostas:


3

O termo "driver gráfico" é usado para se referir a várias coisas diferentes. Um deles é um driver de kernel. O driver do kernel apenas define o modo de vídeo e facilita a transmissão de dados de / para o cartão. Ele também geralmente baixa o firmware na GPU do cartão. O firmware é um programa que a GPU executa, mas, infelizmente, os fornecedores gráficos apenas o fornecem como um blob binário, para que você não possa ver o código fonte.

Acima disso, você normalmente tem o Xorg em execução, que possui seu próprio driver que traduz chamadas genéricas de desenho X11 ou OpenGL em comandos que o cartão entende e as envia para o cartão para executar. Também pode fazer parte do trabalho, dependendo de quais comandos a gpu faz e não suporta. No caso das chamadas OpenGL, a Infraestrutura de Renderização Direta permite que essa parte do driver seja executada diretamente diretamente no aplicativo cliente, e não no servidor X, para obter um desempenho aceitável. Ele também permite que o driver no aplicativo cliente envie seus comandos diretamente para a gpu, graças à coordenação e ajuda do Xorg e do driver do kernel na inicialização.

Wayland e Mir devem substituir o Xorg como um tipo simplificado de servidor de exibição.

O Unity é um shell (fornece desktop / iniciador) e um gerenciador de janelas de composição em um.

GNOME e KDE são ambientes de desktop. Eles são grandes projetos que consistem em muitos componentes. O núcleo deles são os respectivos kits de ferramentas de aplicativos, que são GTK para GNOME e Qt para KDE. Essa é uma estrutura de biblioteca na qual um aplicativo é escrito e fornece a base sobre a qual tudo o mais é construído. Alguns dos serviços básicos que eles fornecem são manipulação de eventos e objetos, Windows, funções básicas de desenho, E / S e muito mais.


4
  • Os drivers gráficos são implementados como módulos do kernel que precisam ser carregados nele. Então, basicamente, eles estão fora do kernel. Se um kernel pode ou não ser construído para contê-los é uma questão que resta de alguém com mais conhecimento do que eu para responder. Eu acho que eles foram excluídos do kernel porque se um kernel for construído com, digamos, o nouveaudriver, haveria conflitos ao carregar um driver proprietário da NVIDIA posteriormente.
  • X Windows, Wayland e Mir são servidores de exibição.
  • Gnome, Ubuntu Unity e KDE são todos ambientes de desktop, não gerenciadores de janelas. Um gerenciador de janelas faz parte de um ambiente de área de trabalho (por exemplo, o Gnome usa metacity). Dito isto, você pode executar gerenciadores de janelas independentes (sem ambiente de desktop) como awesome , xmonad ou openbox

Quanto a qual componente desempenha qual parte:

  • O driver gráfico é como o kernel "fala" com a placa gráfica.
  • O servidor de exibição é o que cria e gerencia janelas e outros elementos gráficos da sua exibição.
  • Um ambiente de área de trabalho ou gerenciador de janelas atua como um cliente para o servidor de exibição e o instrui sobre como ele deve desenhar / decorar janelas, painéis, ...

Os módulos do kernel são definitivamente considerados "dentro" do kernel.
— Psusi

@psusi Eu escolhi ler o OP "dentro" e "fora" como significado embutido no kernel vs. carregado de "fora". Você provavelmente quer dizer "dentro" do kernel no sentido de que eles não fazem parte do espaço do usuário, certo?
— Joseph R.

Sim, é assim que eu interpreto "dentro" vs "fora".
— Psusi
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.