Contents

A Radeon RX 7900 XTX da AMD supera o DX12 em uma demonstração de desempenho impressionante!

A apresentação da Microsoft na semana passada não impactou muito os usuários, apesar dos benefícios da nova parte do DX12 serem evidentes. Por isso, e já oficial, a AMD quis mostrar a todos os seus utilizadores um pequeno espectáculo, uma antevisão, do que está por vir, já que a tecnologia Work Graphs é verdadeiramente um passo em frente no caminho correcto. Armada com um RX 7900 XTX e ditos Work Graphs , a AMD mostrou o aumento de desempenho que podemos alcançar em condições ideais.

Na verdade, é amplamente reconhecido que uma avaliação de desempenho rápida pode não captar totalmente a essência da experiência de jogo num ambiente do mundo real. No entanto, a extensão do aprimoramento alcançado através deste processo de otimização é substancial o suficiente para fornecer um avanço notável para os usuários que possuem hardware adequado. Apesar da complexidade inerente ao assunto, procuremos elucidar as principais melhorias, os mecanismos envolvidos e os consequentes resultados.

AMD mostrou e falou na GDC 2024 sobre Work Graphs e como isso mudará o cenário em hardware e jogos

/images/Microsoft-Work-Graphs-Nodos.jpg

Em resumo, conforme expresso por Shawn Hargreaves, Gerente Sênior de Engenharia D3D da Microsoft, para aqueles que podem ter perdido a recente apresentação da Microsoft apresentando ofertas de parceiros, uma recapitulação concisa seria a seguinte:

Work Graphs é o resultado de vários anos de colaboração entre Microsoft, AMD e outros parceiros. Sempre soubemos que gostaríamos de expandir essa capacidade além da computação pura para abranger também eles Draw Nodes ( nodes of drawing , ou também chamadas nodes of calls ), estamos muito satisfeitos em ver que isso O protótipo já roda em hardware real e esperamos continuar nossa forte associação à medida que adicionamos essa funcionalidade a uma versão futura do Direct3D.

O problema que temos atualmente e que foi amenizado com o DX12, as Draw Calls e sucessivas melhorias na API é que ainda existe um limite dentro do chamado Compute Shader, o que apresenta um problema para a CPU e Dispatch.

Works Graphs vem para acabar com parte de todo o problema que gera a CPU, e pelo menos, elimina aquele Compute Shader Dispatch (vindo de Dispatch Graphs como tal) enviando grande parte das informações para serem renderizadas diretamente para o GPU.

/images/Work-Graphs.jpg

Ou seja, a CPU não é mais o gargalo da garrafa (a necessidade de ir em busca de"trabalho"é eliminada nela) e o processamento e alimentação da cena é passado para a GPU, algo que nós já discutido meses atrás nos comentários sobre como o DX12 funcionava como API com esses dois componentes.

Resumindo o conceito, podemos dizer que agora temos uma central de Node Graphs onde cada nó pede trabalho para os demais, eles se alimentam, não precisa esperar a CPU enviar a informação é * *totalmente paralelizável** , pelo qual ajuda o desenvolvedor a simplificar a programação no hardware e deixar esse trabalho para a API, que decide como executar o trabalho (Broadcasting, Threads ou Coalescing) na melhor ordem de acordo com os nós sendo mais ou menos carregado, sem latência externa.

Na verdade, a Epic Games expressou grande admiração por esta atualização em relação ao Unreal Engine 5, Nanite e Lumen.

Compactação de desenho vazio (EDC) e nós de malha

/images/DX12-Dispatch-Graph-mediante-Work-Graph.jpg

Para dar um contexto um pouco mais rápido e poder entender o que veremos no gráfico abaixo que a AMD deslizou e sua importância, primeiro você deve ter claro onde o trabalho aponta os gráficos além de terminar o Compute Shader Despacho na CPU. A AMD afirma que graças a esta tecnologia vai acabar na raiz Empty Draw Compaction , que afirma gastar um tempo significativo de otimização e limitar um pouco o desempenho, sendo outro gargalo que a CPU não consegue salvar facilmente.

EDC nada mais é do que um método de compactação de dados que irá parar a CPU. Normalmente existem dois cenários que causam o colapso do Dispatch nos logs e posteriormente no cache do processador: resoluções baixas em jogos, mas com FPS alto na renderização ( 1080p a 360 FPS ou superior ), ou bem, alto resoluções com FPS moderadamente alto ( 4K a 120 FPS ou superior ).

Em geral, a situação inicial exige uma dependência significativa da unidade central de processamento (CPU) e, como tal, o Direct3D 12 incorpora duas estratégias para compactação de dados.

Nenhum dos métodos funciona bem. quando os recursos que nossa CPU possui transbordam, então a solução é Work Graphs, mas como? Dividindo o Draw do processamento cruzado em cenas complexas. Isso resultou em um grupo menor de Draw Calls e, segundo a AMD, em seu hardware permite mudanças frequentes de PSO (Pipeline State Object) também completamente.

E novamente, como eles fazem isso? Através de Mesh Nodes, que nada mais é que um novo tipo de nó para controlar os Mesh Shaders. Portanto, e em resumo rápido, work Graphs agora combina Mesh Nodes , que por sua vez, controlam Mesh Shaders.

Execute Indirect e como ele é aprimorado por Work Graphs em um RX7900 XTX

/images/AMD-RX-7900-XTX-Work-Graphs-64-mas-de-rendimiento.jpg

Agora entendemos como os Work Graphs vão funcionar com Meshes Nodes e como eles vão migrar para a GPU para que ela libere do trabalho para a CPU. Pois bem, a AMD (e a Microsoft) chama esse trabalho que a CPU estava fazendo e aquele parcialmente feito pela GPU como Execute Indirect (execução indireta), já que era um trabalho fora dos gráficos que nos cenários citados agia como um gargalo.

Então, este Execute Indirect é substituído por Mesh Nodes (Work Graphs) e levado para a GPU em paralelização em nós para cálculo e resolução interna (feedback) onde agora será amplamente paralelizável (desculpem a redundância) através dos Mesh Shaders, o desempenho Deve aumentar bastante.

/images/Microsoft-Work-Grahps-GPU-retroalimentacion.jpg

A AMD garante que tudo se move em um único Work Graphs através de uma única remessa , então a Empty Draw Compaction deixa de existir para também terminar (e graças a isso) com as alterações do PSO (Pipeline State) Object) internal , o que por sua vez também faz com que o gerenciamento de memória ocorrido deixe de ser feito.

Resultado simplificado? Menos recursos do sistema, menor latência, mais desempenho e um canal de comunicação mais direto com a GPU. A AMD compara seu desempenho com Execute Indirect vs. Work Graphs e, como você pode ver, o desempenho é 64% melhor em um RX 7900, o tempo de renderização é muito menor.

Como a Microsoft já disse, Mesh Nodes com Work Graphs estará disponível no final do ano, justamente quando os novos RTX 50 e RDNA 4 estiverem no mercado, então o ano de 2025 assume-se como interessante no mundo dos jogos mercado para tudo comentado.

*️⃣ Link da fonte:

AMD mostrou aumento de desempenho ,