Na base de código usada para a criação da versão Mesa 20.2, a mudança do RADV, driver Vulkan para chips AMD, para a utilização por padrão do backend para a compilação de shaders ««, que está sendo desenvolvido pela Valve como uma alternativa ao compilador de shaders LLVM. Essa alteração resultará em um aumento no desempenho dos jogos e na redução do tempo de inicialização. Para retornar ao backend antigo, existe uma variável de ambiente «RADV_DEBUG=llvm».
A mudança do driver RADV para o novo backend foi possível após o ACO atingir paridade funcional com o antigo backend desenvolvido pela AMD para o driver AMDGPU, que continua a ser usado no driver OpenGL RadeonSI. Os testes realizados pela Valve , mostram que o ACO é quase duas vezes mais rápido que o compilador de shaders AMDGPU na velocidade de compilação e demonstra um aumento de FPS em alguns jogos quando executados em sistemas com o driver RADV.
O backend ACO tem como foco garantir a geração de código que seja o mais otimizado possível para shaders de aplicativos de jogos, além de alcançar uma velocidade de compilação muito alta. O ACO é escrito em C++, desenvolvido com foco na possibilidade de uso para compilação JIT e utiliza estruturas de dados rápidas para varredura, evitando estruturas baseadas em ponteiros. A representação intermediária do código é totalmente baseada em SSA (Static Single Assignment) e permite a alocação de registradores, prevendo com precisão o registrador dependendo do shader.
Adendo: No momento, o ACO funciona apenas para o driver Vulkan Mesa RADV. Mas os desenvolvedores do ACO , afirmam que seu próximo passo será começar a trabalhar na expansão das capacidades do ACO para garantir suporte ao driver OpenGL RadeonSI, para que no futuro o ACO possa substituir por padrão o compilador de shaders LLVM para esse driver também.
Fonte: opennet.ru
