DirectX 12 e o futuro da Xbox One

DirectX 12 – Será a solução dos problemas da consola?

DX12

A Xbox One é uma consola que sofreu de graves problemas na sua concepção. A obsessão da Microsoft pela inclusão do Kinect com a consola levou a cortes no hardware que agora se reflectem na performance. E afinal tudo acabou por ser em vão devido à remoção do Kinect.

Estes cortes reflectiram-se não só nas unidades de processamento da placa gráfica, mas igualmente na quantidade de memória rápida usada, a eSRAM. E as consequências são uma menor capacidade de processamento gráfico, mas igualmente uma maior complexidade de programação que obriga a mapeamentos de memória, movimentação constante de dados e o uso de “tiling” (processamento por partes).

Apesar de os jogos actuais ainda estarem longe de terem total optimização para o hardware das consolas, estas dificuldades estão já notórias em vários jogos onde a Xbox One não consegue acompanhar a Playstation 4 a nível de resolução e de performance.



Um dos grandes, se não mesmo o maior problema que se coloca actualmente à optimização da Xbox One é a pequena dimensão da eSRAM que é de apenas 32 MB. Ora esta é uma situação que não existe no universo PC, habituado a grandes quantidades de RAM. E numa altura onde as consolas são tão parecidas com PCs, torna-se claramente mais fácil penalizar a consola a nível de performance/resolução, do que efectivamente dedicar tempo e recursos para resolver o problema da alocação de memória.

A realidade é uma placa gráfica não requer que toda a sua memória seja igualmente rápida. Apenas as operações mais cruciais requerem memória rápida e o resto pode ser realizado em memória mais lenta. E esta é a realidade que a Microsoft tentou assumir na criação da sua consola!

A questão é que 32 MB não só é pouco como tem tendência a ser cada vez menos. A complexidade da programação não está a diminuir e cada vez mais se requer mais e mais memória, particularmente no uso do GPGPU, que no caso da Xbox One não tem por onde esticar.

E isto vindo da empresa que referiu em tempos “640K deverão ser suficientes para todos” e que posteriormente andou anos e anos a penar com a gestão da memória mantendo uma memória base de 640 KB e tratando o resto como memória estendida e expandida, custa a perceber como a empresa caiu novamente no mesmo erro, desta vez com os 32 MB da Xbox One.

Felizmente os limites da memória possuem solução. Há que mapear todo o trabalho, calculando as situações menos importantes na DDR3 e apenas mantendo o importante na eSRAM. O problema é que mesmo assim esta memória nem sempre se revela suficiente dependendo do tipo de rendering e da complexidade e efeitos aplicados ao que se encontra em cena. E nesses casos há que recorrer ao processamento da cena por partes, o chamado “tiling”, um processo que não só é complexo, como gasta largura de banda e requer que no final a imagem seja reconstruida usando as várias partes, criando-se por vezes problemas visuais nas zonas de encaixe que obrigam a processamento adicional.

Ora não sendo o “Tiling” uma realidade normal do universo PC, nem todos os motores actuais se encontram adaptados à sua aplicação. E pior do que isso, nem todas as equipas querem perder tempo com isso quando é tão mais simples descer a resolução.

Brad Wardell é um programador e CEO da Stardock, sendo conhecido como o homem que mais tem defendido o futuro API da Microsoft, o DirectX 12, tendo em tempos referido que este iria duplicar a performance gráfica do GPU. Recentemente em uma conversa no Twitter surgiu a questão sobre o motivo pelo qual a Xbox One tinha tantos problemas em atingir os 1080p, particularmente a 60 fps, quando nos jogos em que isso foi conseguido na PS4 os programadores alegaram relativa facilidade em lá chegar, Wardell interveio após um outro interveniente ter respondido da seguinte forma:

Penso que tal tem a ver com a largura de banda e não se usar a eSRAM de forma eficiente

Ao que Wardell referiu:

Essa é tambem a nossa opinião . A Microsoft foi forreta na RAM

Wardell não só concorda, mas é igualmente da opinião que a Microsoft acabou por ser forreta com a RAM usada na Xbox One. Não só a DDR3, como a quantidade de eSRAM. A largura de banda da DDR3 é demasiadamente baixa para alimentar convenientemente um GPU e a eSRAM não sendo usada de forma eficaz cria-se um bottleneck nas performances que impedem que melhores resoluções e fps sejam atingidos.

Há por isso dois impedimentos gerais para se atingir os 1080p, a performance global (que foi agora melhorada com a libertação dos 10% de reserva do Kinect e que permitiu que jogos como Destiny pudessem subir a resolução), ou o mau uso da eSRAM. E para este último caso, maior performance gráfica não resolve o problema.  

Mas e o DirectX 12? Será que efectivamente este novo API poderá resolver os problemas da Xbox One? Na realidade… não!  

O DirectX 12 é um novo API que melhora e acrescenta novos comandos e novas técnicas mais eficazes do que o existente no DirectX 11.2. É igualmente um API que, pela primeira vez, trará aos PCs a realidade dos acessos de baixo nível. Ora os acessos de baixo nível já provaram em APIs como o Mantle que podem trazer ganhos (apesar de em casos muito específicos) de até 600% face a um API de alto nível como o DirectX 11.2. E a Microsoft chegou mesmo a afirmar que o API iria duplicar as performances do DirectX 11.2.  

Bem, presunção e água benta há muita. É que tal como os 600% de ganho do Mantle, estes 200% de ganho do DirectX 12 serão apenas uma realidade em casos específicos, e em média o que se pode esperar serão ganhos muito mais conservativos, e a realidade do Mantle é de ganhos médios de 20 a 30%, com os sistemas mais esganados a chegar aos 50 a 60%, algo que fica bem longe dos 600% que vimos (ou melhor, ouvimos dizer) até hoje apenas na demo de StarSwarm.  

A estimativa da Microsoft é bem mais conservadora, mas o certo é que o seu API também não será tão optimizado como o Mantle. Aliás nem pode, pois quanto maior for a diversidade do hardware, mais genérico terá de ser o código, e dessa forma, ao termos no DirectX 12 um API universal, a sua performance esperada terá de ser inferior à do Mantle.  

Bem, mas estas considerações são para PC… e para a Xbox One?  

Para a Xbox One os ganhos existirão! Melhor facilidade de conversão das versões PC trarão ganhos imediatos. Para além do mais este API possui novos comandos e rotinas optimizadas que serão mais eficientes do que as actualmente usadas (melhor optimização, melhor distribuição de trabalho pelo CPU, etc), bem como introduzirão novas metodologias até ao momento não suportadas (novos modelos de shaders, novos comandos e tecnologias). Mas se os ganhos serão uma realidade, há uma grande diferença face aos ganhos que veremos nos PCs.

É que a maior virtude do DirectX 12, o facto de ser um API de baixo nível que remove as sobrecargas no CPU, não será nada de novo para a XBox One. É que apesar de esta consola estar a usar um DirectX 11.2, este API foi totalmente alterado e optimizado para ela, e possui já acessos de baixo nível em tudo semelhantes aos do DirectX 12.   Os slides oficiais da Microsoft nunca esconderam isso:



Reparem nas características do DX 12 que já existem na Xbox One (e pedimos desculpa por repetir sempre o primeiro slide, mas o facto é que ele é esclarecedor), especialmente a linha que refere “Nearly Zero D3D resource overhead”. Esse é o ponto essencial de um API de baixo nível, o eliminar as sobrecargas no CPU quando há chamadas gráficas. Apesar de no global tudo se traduzir em performances adicionais é neste ponto que está o grande ganho de um API de baixo nível.

Apesar de tal, a restante situação já implementada revela-se igualmente relevante para o processamento da imagem, e ambas são as situações que aportam os maiores ganhos.

Estas realidades não são novidade, e para além de estarem presentes nos slides oficiais da Microsoft já tinham sido referidas por Wolfgang Engel, CEO da Confetti.

Convém aliás não esquecer que o DirectX 12 nasceu para trazer para o PC aquilo que já existia na Xbox One, apesar de este ir melhorar o que já existe nesta consola que é baseado no DirectX 11.2, o que se comprova na entrevista à Eurogamer dos engenheiros da Microsoft e no blog oficial da empresa onde podemos ler que para o DirectX 12 a Microsoft estava em diálogo com os seus parceiros e que ele incluiria trazer as capacidades ligeiras de execução (sem sobrecargas (overheads) da Xbox One para os PCs ( including bringing the lightweight runtime and tooling capabilities of the Xbox One Direct3D implementation to Windows).

Quer isto dizer que a Xbox One não terá no DirectX 12 nenhuma revolução a nível de performances, apesar de ser inegável que os ganhos serão uma realidade face à melhoria do API e implementação dos dois pontos que o slide de cima referem ainda estar ausentes. Daí as frases de Phil Spencer, o responsável Xbox, que refere que o DX 12 não será uma diferença grande na Xbox One. Os ganhos existirão, mas não serão maciços como no PC, sendo apenas optimizações face ao já existente, ou seja, um patamar bem diferente do que os PCs irão ver uma vez que a Xbox One já está devidamente optimizada. E é esta situação com programadores a falar de forma descontextualizada da versão PC que muitos sites interpretam como adequadas à Xbox One trazendo confusão para cima da mesa.

A questão que surge agora é: E a resolução? Será que os problemas da resolução serão resolvidos?

Na realidade não há garantias!

Como já referimos  o problema não passa pela falta de performance, ou capacidade da consola, mas sim pelo facto de haver má utilização da eSRAM e respectiva falta de programação específica para ultrapassar o problema. Isso quer dizer que a superação dessa limitação não vai passar pelo DX 12, mas sim pelos criadores de software. Serão eles que terão de superar o problema dedicando-se ao contorno do mesmo, e adaptando os seus motores a essa realidade. O DX 12 apenas lhes dará a justificação para se dedicaram a adaptar os motores, mas se as rotinas que permitirão passar esses problemas são ou não implementadas dependerá apenas dos programadores.

Para percebermos tudo o que dissemos até agora e perceber a resposta a esta pergunta, vamos voltar um pouco atrás e analisar as discussões de Brad Wardell, de forma a podermos tirar a limpo a sua afirmação que fez a capa de várias publicações de que o DX 12 iria suplicar as performances do GPU da Xbox One. Assim, o mesmo foi re-questionado sobre o assunto e respondeu: 

Eu referi que iria duplicar a performance gráfica (aliás a Microsoft é que o disse, eu apenas concordei baseado no que vimos com o Mantle)

 

Basicamente o que se conclui é que Wardell nunca falou de nenhum sistema em particular. Ele falou do DX 12 e baseou-se no Mantle e nos ganhos que ele trazia. E esta é uma comparação apenas 100% válida… para PC.

O motivo é que o Mantle é um API de baixo nível, que o DirectX 11.2 PC não é! Já o DirectX 11.2 Xbox é! De forma alguma poderemos esperar o mesmo nível de ganhos na consola que tal como a PS4 já implementa um APIs de baixo nível e que como tal já deverá apresentar ganhos do género.

Para percebermos isso, eis uma resposta de Sebastian Sylvan, Engenheiro gráfico que trabalha para a Microsoft quando questionado sobre os possíveis ganhos do DX 12 para a Xbox One:

Não tenho informação interna sobre isso (não trabalho no DX 12). Provavelmente será mais interessante para o PC do que para as consolas que já são baixo nível.

Todas estas situações confirmam a realidade. A Xbox One já implementa um API de baixo nível e como tal os ganhos com o DirectX 12 não serão enormes. Mas que fique bem claro que existirão!

Mas onde é que um API de baixo nível pode mostrar o seu valor face a um de alto nível. Bem, olhando para o Mantle e a Demo de StarSwarm temos a resposta. Quanto mais coisas no ecrã maior a sobrecarga causada no CPU pelas chamadas gráficas. E como um API de baixo nível não possui essas sobrecargas o seu ganho será maior em jogos com muitas coisas no ecrã.

Eis a resposta de Brad Wardell quando questionada sobre qual o ganho médio que poderemos então esperar com um API de baixo nível:

Depende do jogo. Quantos mais objectos no ecrã maior será o ganho. Significará pouco para um típico FPS, mas muito para um RTS.

Finalmente Wardell foi questionado sobre se o DirectX 12 resolverá os problemas da resolução da Xbox One. E a sua resposta está de acordo com o referido anteriormente:

Não há uma resposta definitiva. Depende do criador.

 



Resumindo e concluindo, o Dx 12 trará várias ferramentas e comandos destinados a simplificar o bom uso da eSRAM, e a optimizar ainda mais as performances da consola. No entanto os ganhos não serão nada de gigantesco e muito longe do salto que vamos ver acontecer nos PCs, e acima de tudo os problemas de resolução continuarão sempre a depender da dedicação do criador do software. Daí que o que vamos ver será consequência dessa dedicação e não do DX 12 em si, apesar que certamente a adaptação dos motores para este API dará mais do que desculpas para que se façam alterações adicionais para se resolver este problema.

O certo é que a Xbox One, com 1080p ou sem eles continuará sempre a ser uma excelente consola e uma consola que justifica adquirir, nem que seja pelos seus fabulosos exclusivos que foram até agora e continuarão no futuro a ser anunciados. E vai ainda melhorar bastante. E por muito que falemos de resolução e performance, o que conta são… os jogos!

Fonte de informação de citações: Gamepur



Posts Relacionados