Conheça a Anatomia de um driver para GPU

Ao escrever o artigo sobre o primeiro driver para GPU Apple Silicon, me deparei com uma descrição interessante feita pelos desenvolvedores do Asahi Linux sobre a anatomia de um driver para GPU.

GPUs modernas são modulares e sua construção é constituída por basicamente três camadas:

  • Uma unidade de gerenciamento de memória em conjunto com uma interface que submete o mapeamento da memória para as outras camadas;
  • Um hardware com funções fixas de modelagem 3D, como rasterizar triângulos e testar a profundidade dos elementos;
  • Um conjunto de “núcleos shader” programáveis, que são como dezenas, centenas ou milhares de pequenos processadores, que trabalham em conjunto com o hardware de funções fixas.

Sendo assim, um driver de GPU também deve trabalhar de forma modular:

  • Uma camada contendo o Kernel, capaz de mapear a memória e submeter o mapeamento para o hardware;
  • Um driver capaz de traduzir as chamadas do OpenGL, ou do Vulkan, dentro da memória de vídeo, para as estruturas específicas do hardware;
  • Um compilador que traduz linguagens de programação de shading, como GLSL, para as instruções do hardware.

É claro que esta é uma visão superficial e dentro de cada setor existem vários módulos. Esta estrutura modular permite que atualizações, portes e novos drivers sejam produzidos com mais facilidade.

Você já conhecia a anatomia de um driver de GPU?

5 curtidas