Valve abriu um novo compilador de shader para GPUs AMD

Empresa de válvulas sugerido A lista de discussão de desenvolvedores Mesa tem um novo compilador de shader ACO para driver Vulkan RADV, posicionável como alternativa ao compilador de shader AMDGPU usado nos drivers OpenGL e Vulkan RadeonSI e RADV para chips gráficos AMD.
Assim que os testes forem concluídos e a funcionalidade finalizada, o ACO está planejado para ser oferecido para inclusão na composição principal do Mesa.

O código proposto pela Valve visa fornecer a geração de código o mais ideal possível para shaders de aplicativos de jogos, além de atingir uma velocidade de compilação muito alta. O compilador de shader Mesa utiliza componentes LLVM, que não fornecem a velocidade de compilação desejada e não permitem controle total do fluxo de controle, o que já causou sérios erros no passado. Além disso, o afastamento do LLVM permite implementar análises de discrepâncias mais agressivas e um controle mais preciso da carga de registros, o que permite gerar executáveis ​​mais eficientes.

ACO é escrito em C++, projetado com a compilação JIT em mente e usa estruturas de dados iterativas rápidas, evitando estruturas baseadas em ponteiros, como listas vinculadas e cadeias de uso def. A representação do código intermediário é inteiramente baseada em SSA (Static Single Assignment) e permite a alocação de registro pré-calculando com precisão o registro dependendo do shader.

Atualmente, apenas pixel (fragmento) e shaders de computação são suportados em GPUs AMD discretas (dGPU VI+). No entanto, o ACO já coleta corretamente shaders para todos os jogos testados, incluindo shaders complexos de Shadow of the Tomb Raider e Wolfenstein II. O protótipo ACO proposto para teste é quase duas vezes mais rápido que o compilador de shader AMDGPU em termos de velocidade de compilação e demonstra aumento de FPS em alguns jogos ao rodar em sistemas com driver RADV.

Valve abriu um novo compilador de shader para GPUs AMD

Valve abriu um novo compilador de shader para GPUs AMD

Fonte: opennet.ru

Adicionar um comentário