ACO será o compilador de shaders padrão no Mesa 20.2 - Diolinux
Você sabia que o ACO (AMD Compiler) é um compilador de shaders criado pela Valve com o objetivo de substituir o LLVM? E, consequentemente melhorar o desempenho de jogos no Linux?
Dependendo de qual seja o seu hardware, utilizar o ACO pode fazer uma diferença significativa no desempenho dos seus jogos no Linux. Já que, ele foi criado do zero tendo em mente fazer com que os jogos rodando no Linux e utilizando uma GPU AMD consigam tirar o melhor proveito possível do seu hardware.
A.C.O quê?
Já fazem 9 meses desde que trouxemos as primeiras informações sobre o ACO aqui no blog. Desde então, o projeto está em constante evolução, tendo anunciado melhorias de desempenho, novas funcionalidades e até mesmo uma ampliação na compatibilidade adicionando suporte a GPU's AMD das microarquiteturas GCN 1.0.
Após termos noticiado todos os principais passos da evolução do ACO, nós produzimos um artigo ensinando você a utilizá-lo. E, para demonstrar que não é apenas "papo furado", também fizemos diversos testes utilizando o software e detalhamos os resultados para você em mais um artigo (no qual abordamos inclusive, se o GameMode também traz bons resultados).
A utilização do ACO passou a ser possível há bastante tempo, desde que o software passou a fazer parte do Mesa Driver na versão 19.3 (atualmente distros como Ubuntu e Fedora já utilizam a versão 20 do Mesa3D). Porém, por ainda estar em fase experimental, o ACO nunca chegou a ser o compilador de shaders padrão do Mesa Driver, que continua utilizando o LLVM.
Todavia, o crescimento pelo qual o ACO tem passado surtiu efeitos, e no dia de hoje (24/06/2020) o software criado pela Valve foi implementado como o compilador de shaders padrão na versão em desenvolvimento 20.2 do Mesa Driver.
ACO: o novo compilador de shaders padrão do Mesa Driver
Os procedimentos para tal implementação foram iniciados no início deste mês (Junho), e desde então os desenvolvedores estiveram trabalhando duro para viabilizar este objetivo.
A próxima versão do Mesa3D terá a sua etapa de "freezing", que é o momento em que as versões dos softwares são "congeladas" para que possam ser realizadas as etapas finais do desenvolvimento, em cerca de um mês. E que, ocorrendo tudo conforme o esperado, deve ser tempo suficiente para que todo o trabalho de implementação seja realizado. Assim, fazendo com que o ACO possa de fato ser o compilador de shaders padrão no Mesa 20.2, que tem o seu lançamento previsto para o final de Agosto.
Mesmo que as expectativas realmente se cumpram e o ACO se torne o compilador de shaders padrão, isso não significa que o LLVM será deixado de lado. Ao menos não por enquanto.
Para que o ACO possa ser utilizado, é necessária a utilização de um parâmetro de inicialização, caso nenhum parâmetro seja informado, o compilador padrão LLVM é utilizado. Quando o ACO se tornar o padrão a situação será exatamente o contrário, de forma que será necessário um parâmetro para ativar o LLVM, enquanto a não utilização deste parâmetro resultará no uso do ACO.
As razões para a não exclusão imediata do LLVM são para facilitar a comparação no desempenho de ambos os compiladores de shaders em casos específicos, e então, utilizar essas comparações para ajudar a rastrear bugs e aprimorar o desempenho do próprio ACO.
Tenho testado o ACO há vários meses, tendo visto diversos casos nos quais o software causou uma melhora no desempenho de jogos, e também, alguns outros casos nos quais não houve diferença significativa. De qualquer forma, até o presente momento, não me deparei com nenhum "contra" em utilizar o ACO. E é por isso que considero uma ótima notícia o fato de o mesmo estar prestes a se tornar o compilador de shaders padrão.
Essa é sem dúvidas uma vitória merecida para a Valve e todas as pessoas envolvidas direta e indiretamente no desenvolvimento do ACO. E para todos os usuários que cada vez mais poderão tirar proveito deste excelente recurso.
Você já ouviu falar ou já testou o ACO? Conte-nos como tem sido a sua experiência com o software, e quais são as suas expectativas para o futuro do mesmo.