Os drivers do kernel para o Linux (os arquivos .ko) tratam apenas o acesso ao hardware, bem como algumas funcionalidades básicas.
Para drivers gráficos, isso seria
- modo de texto
- modo gráfico framebuffer (incluindo aceleração 2D simples como "copie esta área")
- uma interface para a fila de comandos de renderização
tudo isso pode ser implementado em alguns kilobytes, especialmente quando outros componentes são reutilizados.
Operações complexas como renderização OpenGL, compilação e envio de Shader, etc. não são tratadas no kernel, pois isso prejudicaria a estabilidade do sistema. Em vez disso, elas são tratadas em um processo separado, geralmente o servidor X ou um programa que usa gráficos 3D, e uma lista de comandos é enviada ao driver, que simplesmente passa para o cartão. Novamente, esse driver reutiliza componentes com muita força.
No Windows, a filosofia é espremer tudo isso no módulo do kernel (.sys), já que não há benefícios da componentização (os vários fornecedores geralmente não trabalham juntos).