Configuração do Modo Kernel vs. Framebuffer?

23

Com o KMS, os drivers gráficos são movidos para o kernel. Como o framebuffer já estava no kernel, eu não esperaria que isso afetasse a operação do framebuffer. No entanto, eu li que o KMS substitui o fb, aumenta o fb, requer o fb e requer que o fb support seja removido. O que o diabo? A resposta que estou procurando é uma explicação da relação entre o KMS e o framebuffer.

Eu tenho usado o uvesafb para obter resolução nativa no tty. Meu objetivo aqui é entender como isso vai funcionar em um sistema com o KMS. Também ajudaria a cobrir coisas como ... A rolagem é mais rápida com o KMS? Utilitários como fbterm e fbida funcionam da mesma maneira? A estabilidade é melhor?

    
por user5184 28.06.2011 / 02:28

2 respostas

6

Em primeiro lugar, existem basicamente dois tipos de drivers clássicos de framebuffer:

  • Hardware genérico & drivers de firmware (por exemplo, vga, vesafb / uvesafb, efifb)
  • Drivers específicos de hardware (por exemplo, rivafb, atyfb)

Todos os drivers clássicos de framebuffer tinham suporte básico para o ajuste de modos, mas eles expunham pouco ou nenhum suporte para a aceleração de hardware.

Com o design clássico do X, isso não era realmente um problema: para obter aceleração 2D, o servidor X era executado como root e podia acessar o hardware diretamente. Basicamente, ele ignorou completamente o driver framebuffer. Para suporte a 3d (e 2d em placas mais recentes), ele também usaria um driver de DRM do kernel que mediasse o acesso e a memória de vídeo gerenciada.

Nesta configuração, havia dois lugares em que o modesetting era feito: tanto no driver framebuffer do kernel, quanto no servidor X do espaço do usuário. Essa duplicação de código (e brigas ocasionais entre motoristas, por exemplo, no comutador VT) não era ideal.

Além disso, havia dois drivers separados no kernel para a mesma peça de hardware: o driver framebuffer e o driver DRM. Em alguns casos (por exemplo, pré-kms intelfb), você pode carregar um ou outro, mas não ambos ao mesmo tempo.

O KMS foi a solução para esses problemas. Isso:

  • Mescla o driver framebuffer específico do hardware do kernel e o driver drm em um único driver.
  • Fornece uma interface para o servidor X usar para controlar a configuração de modos, portanto, o servidor X não precisa acessar diretamente o hardware. (De fato, com o KMS, o servidor X não precisa mais de permissões de root.)

Algumas notas interessantes: A migração para o que é agora o KMS na verdade começou por volta de 2004; veja o e-mail de Jon Smirl na arquitetura do console .

Para responder às suas perguntas mais específicas:

  • A velocidade geralmente não será pior do que um dos drivers genéricos não acelerados (por exemplo, VGA, vesafb), mas o console de texto do framebuffer KMS foi projetado para conveniência e uso de emergência em vez de velocidade, e o console não está totalmente acelerado alguns drivers. Linhas longas embrulhadas são muito ruins em cartões de memória, por exemplo.
  • Aplicativos desenvolvidos para usar as antigas interfaces framebuffer ainda funcionarão em um framebuffer KMS.
por 26.06.2014 / 02:49
3

O KMS define a resolução de exibição e a profundidade no espaço do kernel em vez do espaço do usuário. Então, sim, isso substitui isso. Permite a resolução nativa no framebuffer.

Configuração do modo de kernel

    
por 28.06.2011 / 09:52