Créditos: Montagem: Bruno Pires (Adrenaline)
- Publicidade -

AMD tá HORRÍVEL em DX11? Testamos pra descobrir o que aconteceu

API mais antiga parece ter algum problema em placas Radeon

Enquanto testávamos Dying Light 2 em múltiplos hardwares, nos deparamos com alguns resultados curiosos: a Radeon RX 6800 XT entregou 87 quadros de média em 4K, depois 87 quadros de média em 1440p e por fim... 88 quadros em FulllHD. A incapacidade da placa escalonar não fazia sentido, já que estamos falando de uma redução de 4x na resolução da imagem e o restante do sistema não apenas tinha capacidade, como conseguia entregar taxas maiores com placas até piores que a RX 6800 XT. Que diabos estava acontecendo aqui?

Para piorar, esse nosso caso não é isolado. Vídeos no canal CandidoN7Nigro & Cominotti relatam alguns elementos parecidos: a placa não está em carga máxima, seja por conta de usos bem abaixo dos 100%, seja por frequências de operação muito mais baixas, e ainda assim algo impede a taxa de quadros de aumentar. E o denominador comum é bastante claro: a API DirectX 11. Basta trocar Dying Light 2 para DX12 e os resultados ficam bem mais próximos do que esperaríamos, com a performance escalonando junto com a redução na resolução:

Aparentemente, as AMD Radeon não são muito boas com o DX 11. Então, basta ir lá e usar DX12 ou Vulkan. Problema encerrado, sobe os créditos, certo?

Na verdade... não. Por mais que tanto o DirectX 12 quanto a Vulkan sejam sempre visadas por serem APIs de baixo nível e, por essa característica, prometerem um acesso mais próximo ao hardware e maior otimização, além de serem mais completas e contarem com tecnologias novas como o Ray Tracing, a verdade é que não dá pra simplesmente trocar pra elas como solução pra tudo.

O motivo começa no legado.  Uma das vantagens de jogar no PC é que não existem gerações. Podemos jogar games antigos como quisermos, e clássicos como Mass Effect, The Witcher 3, Elder Scrolls Skyrim, Portal 2 e tantos outros estão nessas tecnologias ou até anteriores.

A segunda questão é que o DirectX 11 não está no passado. Ele ainda é o presente. Entre os 10 games mais jogados da Steam no momento que esse artigo é escrito, 6 não tem compatibilidade nem com o DX12 nem com Vulkan.

E como se não fosse suficiente, ficou claro que o defeito afeta principalmente a capacidade das Radeon de atingir altas taxas de quadros, algo péssimo para jogos como Apex: Legends e PUBG. Testamos os dois jogos, usando o seguinte hardware:

Hardware utilizado nos testes:
- AMD Ryzen 7 3800X
- Aorus X370 Gaming 7 Wi-Fi
- 2x8GB Kingston DDR4 @3200MHz CL16
- Fonte Cooler Master V850
- Bancada aberta

- Continua após a publicidade -

Placas de vídeo:
- PowerColor Radeon RX 6800 XT Red Devil
- Nvidia GeForce RTX 3060 Ti

Observação: Alguém mais atento talvez tenha reparado que estamos usando placas assimétricas. A Radeon RX 6800 XT é encontrada por preços a partir R$ 8.799, enquanto a RTX 3060 Ti sai por R$ 6,3 mil. Sim, estamos aliando um pouco de ofensa a injúria nesse comparativo, colocando uma GeForce mais "fraca" na disputa.


Começando pelo cenário "positivo", a Radeon não apresentou problemas em Apex: Legends. Ela manteve os 144fps praticamente o tempo todo ao longo do gameplay com excelente estabilidade. Tanto a RTX 3060 Ti quanto a Radeon RX 6800 XT raramente entregam menos que os 144fps, porém em cenários diferentes: a 3060 Ti realmente chegou ao seu limite de gerar quadros, com 99% de uso da GPU e não dando conta de fazer a taxa de quadros limite do jogo, enquanto a Radeon RX 6800 XT começa a apresentar oscilações no uso, não operando em toda sua capacidade e, ainda assim, tendo ligeiras quedas. Mas, novamente, ambas as placas se mostraram bastante capazes de rodar o game.

Olhando para PUBG, a coisa piora e MUITO. A performance fica muito abaixo do que a mais barata GeForce tem para oferecer, com um desempenho que consegue oscilar até abaixo dos 60fps em pontos críticos. Também temos mais presença de stutterings no gameplay, algo que não é incomum em PUBG, mas que está pior na Radeon.

A frequência de operação em alta carga de uma RX 6800 XT com ótimo projeto como essa Red Devil que usamos é na casa dos 2300MHz, e, como está no print, também percebemos o gameplay abaixo dos 1000MHz em vários momentos, nos mandando 10 anos de volta no tempo. Claramente, falhas de otimização mantém esse chip de alta performance ocioso muito tempo.

Na sequência, temos Fortnite. O game também está em uma situação deplorável em DX11 na Radeon RX 6800 XT, mas felizmente o jogo tem o DirectX 12 em fase experimental. Apesar disso, ele repete o padrão que vimos ao longo de todos os testes, melhorando em muito a performance da Radeon.

- Continua após a publicidade -

O problema é a tag "experimental" que o DX12 recebe. Isso nos deixa inseguros sobre o foco da equipe de desenvolvimento do game nessa API comparado com o tradicional DX11. Outro problema é o cuidado adicional que o gamer precisa ter de mudar a API, já que por padrão o game se configura em DX11. 

Nesse trecho, aproveitamos para aprofundar nossa análise. Como um dos principais suspeitos pela baixa performance é uma péssima otimização de uso de threads nas Radeon em DX11, começamos fazendo uma substituição: sai o Ryzen 7 3800X e entra o Ryzen 5 1600, um processador com menos threads e, principalmente, menos performance por thread. O resultado foi inesperado em Dying Light 2.

Mesmo piorando o processador, a situação segue idêntica ao teste com o CPU mais potente. É um comportamento realmente imprevisível, sem contar que fica difícil encontrar onde está esse gargalo das placas da AMD na API mais antiga.

Por fim, um dos principais lançamentos do ano: investigamos o desempenho de God of War na Radeon RX 6800 XT. Não foi preciso avançar muito no game para achar trechos com quedas pavorosas de performance, e totalmente diferentes do que recebemos jogando em uma GeForce de preço e potência inferiores.

Aproveitamos a diferença muito explícita desse trecho bastante controlado do gameplay para capturar dados e fazer uma análise mais aprofundada. Como um dos suspeitos número 1 é um overhead de driver que sobrecarrega apenas um thread, causado por uma péssima otimização das Radeon em DX11, capturamos o uso de cada um dos 12 threads do Ryzen 5 1600 ao longo do teste, sempre agrupando do que está sendo mais usado para o mais ocioso. E há uma clara diferença no comportamento da Radeon e da GeForce:

 

 

Está bem evidente que ambas as placas de vídeo usam de forma semelhante o thread mais ativo, porém, na medida que vamos seguindo para os demais, uma diferença cada vez maior se forma. Sinceramente, temos aqui um problema de " qual veio primeiro: o ovo e a galinha", já que eu não sei se 1) a taxa de quadros está mais baixa porque o uso de threads está mais ineficiente, ou 2) se o uso de threads está menor porque a taxa de quadros que o jogo está rodando está mais baixa. Mas, sem dúvidas, é o principal indicativo do que está causando a diferença de performance. Outro fator que reforça essa teoria são os stutterings em carregamentos de novos mapas ou inimigos, mostrando que realmente pode haver um gargalo que sobrecarrega apenas um thread e leva ao congelamento momentâneo do game.

Conclusão

Fica evidente que tem algo errado na otimização das Radeon em DirectX 11. Apesar do escopo desse efeito ser limitado a um cenário específico, que são os games limitados a DirectX 11 ou anterior, essa é uma tecnologia muito difundida e a AMD não pode se dar ao luxo de ignorar essa falha e só focar nas APIs mais modernas.

Apesar de não estar limitado a eles, os games mais afetados parecem ser os de altas taxas de quadros, com os problemas surgindo em Dying Light 2 quando está acima dos 70fps. Mas isso também pode afetar vários outros games, os impedido de rodar estável acima dos 60fps, como vimos em God of War e PUBG. 

Pelas características do problema, temos claramente uma questão de otimização que antecede a ação da placa de vídeo. As GPUs testadas ficam muito abaixo de sua performance máxima, tanto em uso quanto em frequência de operação, então temos muito potencialmente algum overhead de driver ou alguma falha que parece utilizar apenas um thread e causar esses dois sintomas: baixas taxas de quadro médias e, em alguns momentos críticos, especialmente em carregamentos de novas áreas e modelos, muitos microtravamentos, os stutterigns, que não chegam a comprometer o gameplay.

Apesar de ser possível jogar, ver essas oscilações de performance é extremamente frustrante, porque você literalmente vê a placa sendo sub-usada e, ao mesmo tempo, não entregando performance, o que é surreal. E fica pior ainda vendo como as rivais GeForce não tem esse problema e acabam entregando mais performance com literalmente menos hardware e custo.

O que me sobra é pedir encarecidamente para a AMD: pare de se sabotar e corrija o problema. É fácil projetar a culpa em um jogo, e afirmar que há desinteresse da desenvolvedora otimizar para Radeon, mas, como ficou evidente nos testes, temos um problema bem mais abrangente do que Dying Light ter apoio da Nvidia. DirectX 12 não chegou sempre entregando performances consistentes, e nem tem como simplesmente fazer de conta que DirectX 11 não existe mais.

Espero que o time vermelho se mexa, pois é crucial termos boas opções Radeon. Afinal, sem placas da AMD, essencialmente só sobra a Nvidia, e ter um só produto "competitivo" é terrível para o consumidor. Quer dizer, pelo menos é a situação enquanto esperamos para ver o que sai do lado azul da força com as placas Intel Alchemist. Então, é melhor se mexer mesmo, time Radeon.

Assuntos
Tags
  • Redator: Diego Kerber

    Diego Kerber

    Formado em Jornalismo pela Universidade Federal de Santa Catarina (UFSC), Diego Kerber é aficionado por tecnologia desde os oito anos, quando ganhou seu primeiro computador, um 486 DX2. Fã de jogos, especialmente os de estratégia, Diego atua no Adrenaline desde 2010 desenvolvendo artigos e vídeo para o site e canal do YouTube