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.