O driver Vulkan agora usa o back-end de construção ACO da Valve

Na base de código usada para formar a versão Mesa 20.2, o driver RADV, Vulkan para chips AMD mudou para backend padrão para compilar shaders »ACO«, desenvolvido pela Valve como uma alternativa ao compilador de sombreador LLVM.

Esta mudança especificada foi feito com o fim de obter um aumento na produtividade dos jogos e redução do tempo de lançamento.

Alterar do controlador RADV para o novo backend foi possível depois de atingir a paridade na funcionalidade ACO com o antigo back-end desenvolvido pela AMD para o driver AMDGPU, que continua a ser usado no driver RadeonSI OpenGL.

Os testes da Valve mostraram que o ACO é quase duas vezes mais rápido do que o compilador de construção do shader AMDGPU e demonstra um aumento no FPS em alguns jogos quando executado em sistemas com o driver RADV.

Os drivers AMD OpenGL e Vulkan atualmente usam um compilador de sombreador que faz parte do projeto upstream do LLVM. Esse projeto é enorme e tem muitos objetivos diferentes, e a compilação online de shaders de jogos é apenas um deles. 

Isso pode levar a compensações de desenvolvimento, onde melhorar a funcionalidade específica do jogo é mais difícil do que seria de outra forma, ou onde recursos específicos do jogo são frequentemente quebrados acidentalmente por desenvolvedores de LLVM trabalhando em outras coisas.

O backend de ACO visa garantir que o código seja gerado da maneira mais ideal possível para shaders de app de jogo e atingir uma velocidade de compilação muito alta.

ACO é escrito em C ++, desenvolvido tendo em mente a aplicabilidade para compilação JIT, e use os mais rápidos para iterar em estruturas de dados, evitando estruturas baseadas em ponteiros, como listas e strings vinculadas, usando def. A representação intermediária do código é totalmente baseada em SSA (Single Static Allocation) e permite a alocação de registros, calculando com precisão o registro com base no shader.

A representação intermediária do código é totalmente baseada em SSA (Single Static Allocation) e permite a alocação de registros, calculando com precisão o registro com base no shader.

Atualmente, apenas pixels são suportados (fragmentos) e sombreadores de computação em GPUs AMD discretas (dGPU VI +). No entanto, ACO já coleta corretamente os shaders para todos os jogos testados, incluindo shaders complexos de Shadow of the Tomb Raider e Wolfenstein II.

O protótipo ACO proposto para o teste é quase duas vezes mais rápido que o compilador de sombreador AMDGPU e demonstra um aumento no FPS em alguns jogos quando executados em sistemas com o controlador RADV.

Para entender um pouco mais sobre a relevância da adoção do código da Valve, é importante destacar que o objetivo é garantir a melhor geração de código possível para shaders de app de jogo, bem como velocidade de compilação muito alta.

O compilador shader disponível no Mesa usa componentes LLVM, Eles não permitem atingir a velocidade de compilação desejada e não permitem o controle total do fluxo de controle, o que no passado já causava erros graves.

Além disso, evitar o LLVM torna possível implementar uma análise mais agressiva discrepâncias e gerenciamento de carga de log mais preciso, permitindo a geração de arquivos executáveis ​​mais eficiente.

Finalmente, é também É importante notar que no momento ACO funciona apenas para o controlador Mesa RADV Vulkan. Mas os desenvolvedores do ACO confirmaram que seu próximo passo será começar a trabalhar na expansão dos recursos do ACO para suportar o driver OpenGL RadeonSI, de forma que no futuro e para este driver, o ACO possa substituir o compilador de sombreador LLVM padrão. .

E em quanto aqueles que preferem continuar com o back-end que foi usado anteriormente do compilador de sombreador LLVM, eles podem retornar a ele, apenas precisam alterar uma variável.

A variável de ambiente fornecida para fazer essa mudança é "RADV_DEBUG = llvm".


Um comentário deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   VariadoPesado dito

    E como um usuário escolhe com qual back-end executar um jogo? Quais arquivos ele precisa modificar?