Exibir servidor vs. Gerenciador de janela vs. Driver de gráficos?

8

Estou tentando classificar minha compreensão da parte diferente dos gráficos no Linux, e estou confuso quanto aos papéis desempenhados por cada um dos conceitos a seguir.

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

Minhas perguntas:

  • Os drivers gráficos são implementados no kernel do Linux ou fora dele? Se fora do kernel, por que eles são excluídos quando a rede, o disco e o sistema de arquivos estão todos dentro do kernel?
  • X Windows, Gnome, Ubuntu Unity, KDE, Mir, Wayland, que faz o que em termos de Display Server, Window Manager e Graphics Driver?

Meu objetivo para essa pergunta é entender quais projetos estão contribuindo com quais partes da experiência do Linux Graphics?

UPDATE link tem muito do detalhes que eu estava procurando.

    
por ams 10.07.2013 / 18:49

2 respostas

3

O termo "driver de gráficos" é 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 passagem de dados para / do cartão. Geralmente também baixa o firmware para a GPU do cartão. O firmware é um programa que a própria GPU executa, mas, infelizmente, os fornecedores de gráficos apenas fornecem isso como um blob binário, então você não pode olhar para o seu código-fonte.

Acima disso, você geralmente 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 a placa entende, e os envia para a placa a ser executada. Também pode fazer parte do trabalho em si, dependendo de quais comandos o gpu suporta ou não. No caso das chamadas OpenGL, a Infraestrutura de Renderização Direta permite que esta parte do driver seja realmente executada diretamente no aplicativo cliente em vez do servidor X, para obter um desempenho aceitável. Ele também permite que o driver no aplicativo cliente envie seus comandos diretamente ao 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.

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

GNOME e KDE são ambientes de desktop. São projetos grandes que consistem em muitos componentes. O núcleo deles são seus respectivos kits de ferramentas de aplicação, que são o GTK para o GNOME e o Qt para o KDE. Esta é uma estrutura de biblioteca na qual um aplicativo é escrito e fornece a base sobre a qual todo o resto é 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.

    
por 10.07.2013 / 20:47
3
  • 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 deixada por alguém mais experiente do que eu para responder. Eu acho que eles foram excluídos do kernel porque se um kernel é construído com, por exemplo, o driver nouveau , ele teria conflitos carregando um driver NVIDIA proprietário mais tarde.
  • X Windows, Wayland e Mir são servidores de exibição.
  • O Gnome, o Ubuntu Unity e o KDE são todos ambientes de área de trabalho, 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 isso, você pode executar gerenciadores de janelas autônomos (sem nenhum ambiente de área de trabalho) como impressionante , xmonad ou openbox

Com qual componente é reproduzido qual parte:

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