Xbox One – O que a está a limitar a 720p e o que esperar no futuro?

Os programadores são claros. A ESRAM está a ser a grande limitação da Xbox One. Mas há soluções para ultrapassar o problema.

vs

O Problema

A ESRAM da Xbox One está a ser simultâneamente a sua salvação e a sua perdição. Actualmente o maior problema que os criadores de software estão a encontrar é exactamente o superar os limites da ESRAM que se revela de uso essencial. Ela possui uma capacidades que se está a revelar limitada, mas  há como superar as limitações.

O facto é que apesar de uma consola possuir especificações superiores à outra, elas são bastante semelhantes em muitos aspectos e diferenças como as que vimos em COD: Ghosts com a PS4 a 1080p e a Xbox One a 720p não são normais.

Esses valores, com uma consola a mostrar-se capaz de processar 2,25 vezes mais pixels é uma anormalidade face à real diferença de performance espectável entre as consolas, e muitos dos seus jogos como Killer Instint, Battlefield 4 e Call of Duty: Ghosts não estão a conseguir passar dos 720p na XBox. Aliás mesmo Titanfall tem sobre si um rumor de que terá o mesmo problema, e Ryse está tambem preso nos 900p nativos..



Falando apenas nas capacidades máximas teóricas, a questão é que a PS4 usa GDDR5, uma memória toda ela acedida a 176 GB/s. Já a Xbox One usa DDR3 acedida a 68 GB/s, e compensa esta baixa velocidade com uma memória ESRAM com uma largura de banda de 204 GB/s.

Como é notório, a largura de banda da DDR3 é um grande impedimento ao processamento da grande quantidade de dados que o GPU requer para as altas resoluções. E daí que a ESRAM se revela essencial para compensar essa carência.

O grande problema é que esta ESRAM é de apenas 32 MB.

Mas então, se é assim, porque motivo a Microsoft não usou GDDR5 em vez de DDR3?

Na realidade o grande problema passou pelo facto de a Microsoft sempre ter olhado para a Xbox One como um sistema de entretenimento total, capaz de gerir a TV e de correr diversas aplicações lado a lado com os jogos. E isso foi algo que a Sony não fez olhando para a consola como um sistema para jogos.

Ora com esta ideia em mente, 4 GB era um valor reduzido para a RAM da Xbox One, e os 8 GB tornavam-se uma necessidade.

Assim na altura em que o hardware foi definido, não existindo na altura módulos GDDR5 capazes de criar mais do que 4 GB de RAM, e nem havendo data prevista para o lançamento de módulos de maior capacidade, a Microsoft viu-se obrigada a ir para a DDR3, ao passo que a Sony se manteve na GDDR5 criando uma consola com apenas 4 GB de RAM (o lançamento de módulos GDDR5 de maiores capacidades ocorreu um mês antes do lançamento da consola e, num golpe de sorte, permitiu à Sony aumentar a RAM para 8 GB apenas trocando os quatro chips de 1 Mega por outros com 2 Megas, uma alteração extremamente simples e semelhante à que a Microsoft havia feito com a XBox 360 que estava prevista sair com 256 MB de RAM e aumentou para 512 MB um mês antes da sua apresentação).

Ou seja, a escolha da DDR3 acabou por ficar definida à mais de 2 anos atrás, e tudo devido ao imperativo dos 8 GB absolutamente necessários para o conceito previsto na XBox One.

Mas mesmo com mais RAM a Microsoft sabia que a DDR3 não era rival para a GDDR5 da PS4, e então, para compensar a memória mais lenta, a Microsoft resolveu acrescentar uma memória mais rápida e embutida directamente no interior do SOC. E eis que surgiu a ESRAM.

Esta memória, apesar de possuir piores performances que a eDram usada na Xbox 360, revelou-se a melhor escolha por diversos motivos, sendo que os seus 204 GB/s de largura de banda se revelavam mais do que suficientes.

Mas porquê apenas 32 MB? Afinal até as placas gráficas da Intel integradas, as Haswell, e com performances bem piores que o GPU da XBox One, que usam esta mesma solução de uma memória aceleradora dos acessos à DDR3, possuem 128MB de eDRAM.

Comecemos por explicar que no processamento gráfico a memória rápida é essencial. No entanto, há operações que são mais sensíveis e críticas, mas que percentualmente face à memória total requerem um pedaço bastante reduzido. Daí que esta solução de uma memória aceleradora rápida de pequenas dimensões, apesar de não ser completa, é efectivamente uma boa solução alternativa.

Mas a realidade é que a inclusão do Kinect como obrigatório criou a necessidade de descer os custos de produção da consola em si, e o que se viu foi que a ESRAM aumentou, e bastante, as dimensões do SOC (ao ponto de surgirem teorias de esse espaço usado pela ESRAM poder ser ocupado por um segundo GPU). Esta situação criou problemas de custo de produção pois o número de transístores era gigantesco e aumentar mais a memória aumentaria ainda mais o número de transístores e, consequentemente, o custo.

Desta forma, para manter a sua consola competitiva a nível de preço, a Microsoft ficou-se pelos 32 MB.

Mas eis que agora os criadores se queixam que essa memória, nesta fase, se está a revelar insuficiente.

Como resolver os problemas

Infelizmente o problema é físico e como tal sem resolução uma vez que os 32 MB serão sempre 32 MB. No entanto há maneiras de se contornar a limitação.



Uma das soluções propostas pela Microsoft é o uso uma programação em tudo idêntica à usada na Xbox. Basicamente teríamos jogos Xbox One programados seguindo as mesmíssimas regras usadas para a Xbox 360, mas melhorados com resolução, texturas, polígono. física, etc. É simples de se perceber que se os 10 MB de eDRAM são suficientes na Xbox 360 a 720p, os 32 MB são mais do que suficiente para uma qualidade em tudo esmagadoramente superior em 1080p. E para isso a Microsoft fornece render targets já criados, optimizados e comprimidos que, com as devidas limitações já minimizadas ao máximo, cabem perfeitamente nos 32 MB de ESRAM.

Essa situação é uma possibilidade bem real, apesar de ser mais limitativa no que se pode criar. E funciona particularmente bem com o comprovam jogos que usam motores previamente criados para a Xbox 360, como é o caso de Forza, e que foi melhorado e expandido para a Xbox One.

De forma simplificada, a solução da Microsoft passa por jogos desenvolvidos a pensar na consola. Nada mais simples!

O grande problema é que actualmente, devido aos grandes custos de desenvolvimento, e onde a produção de um jogo demora anos e envolve muitos milhões de dólares, ninguém está interessado em criar um jogo com apenas uma determinada plataforma em mente (exclusivos com motores dedicados excluídos), mas cria motores multi-plataforma que são genéricos e não pensando apenas em um sistema. É esse o motivo pelo qual Ryse não consegue mais. O seu motor Cry-Engine é multi-plataforma e nunca foi pensado de raiz para a Xbox One, apesar de ter tido alterações para se adaptar à consola. TitanFall certamente sofrerá do mesmo problema por ter tido no PC a sua plataforma principal de desenvolvimento.

De notar contudo que isto não quer dizer que motores genéricos possuam forçosamente problemas. Apenas aqueles que requerem mais de 32 MB de memória rápida é que se queixam. Infelizmente, actualmente, são a maioria dos títulos AAA.



E diga-se que a facilidade da PS4 de usar os mesmissimos motores criados para PC, não vem simplificar a situação em nada, sendo que se torna muito mais simples e barato para os programadores simplesmente descerem a resolução na XBox One de forma a que a informação dos render targets seja menor, e caiba na memória rápida (o principal factor na dimensão do render target é exactamente a resolução do ecrã).

Resumindo, a melhoria das ferramentas de trabalho e o uso de equipas especializadas a criarem motores ou alternativas para motores, devidamente adaptadas a estas situações, irão permitir ultrapassar o problema. Mas isso vai requerer tempo, trabalho e dinheiro, e tal como com o Cell, conhecimento da consola.

Mas há outros problemas

Infelizmente as limitações que a ESRAM cria na Xbox One face à PS4 não se ficam por aqui.

Não só a a Xbox One possui 50% menos capacidade de cálculo no seu GPGPU (12 CUs contra 18 na PS4, sendo 4 deles especializados para GPGPU) , como este tipo de processamento vai requerer igualmente e obrigatoriamente memória rápida.

E com a dimensão da ESRAM a revelar-se problemática para o tratamento gráfico (GPU), o problema será ainda maior quando for preciso libertar parte dela para o GPGPU. Quer isso dizer que com o GPGPU a ser mais usado no futuro (e vai ser usado… e bem), isso vai requerer verdadeiros malabarismos de equilíbrio e de passagem de dados de uma memória para a outra. A PS4 ao não possuir esse problema, e ao ter no GPGPU o seu ponto forte, deverá, na altura em que o problema da resolução começar a ser suprimido e a aproximar-se entre as consolas, manter o fosso entre elas com aumentos na performance devido ao GPGPU que a Xbox One não conseguirá acompanhar.

Apesar de tudo há uma situação que pode melhorar consideravelmente a questão dos limites de largura de banda da DDR3, o uso de Tiled Resouces. Como o nome indica Tile=azulejo/ladrilho, logo tratam-se de texturas parciais que se repetem e conjugam para criarem mega texturas, mas usando muito menos memória no sistema.  Ao serem mais pequenas, estas texturas podem ser passadas sem problemas por larguras de banda menores, como a que a DDR3 oferece. Infelizmente isso nada ajuda com a questão dos render targets e das pequenas dimensões da ESRAM, pelo que ficamos dependentes da criatividade dos programadores para se encontrar uma solução. E diga-se que os Render Targets são apenas um dos buffers que requerem memória rápida, pois outros como o G-Buffer, Depth Targets, etc terão sempre de ser sacrificados na Xbox One pelo facto que a memória não os comporta a todos.

Nesta fase, a melhor solução para ultrapassar o problema é desenvolver o motor especificamente para a consola, usando as mesmas regras de programação dedicada da Xbox 360. Pois como Forza demonstra, os resultados nesses casos são muito bons.

Curiosamente a Xbox 360 não fica muito prejudicada se a sua eDRAM não for usada, e ultimamente os motores mais genéricos até a tem negligenciado um pouco sem problemas. Mas para a Xbox One esta base do uso da memória rápida é essencial para libertar o poder do GPU.

Mas como referido, o problema só se coloca em jogos que usem mais do que 32 MB de memória rápida. E há muitos jogos que não a requerem. Vejamos com o passar do tempo as soluções que os programadores eventualmente podem encontrar pois mentes criativas na industria é coisa que não falta. Seja como for, ninguém deve esperar milagres, pois tudo o que poderá existir são formas de contornar e minimizar o problema e não de o eliminar.

Nesta fase e até haverem motores optimizados para a One, os jogos que usem motores derivados de exclusivos Xbox 360, ou que tenham tido grandes optimizações para a Xbox 360 serão certamente a melhor aposta.



Posts Relacionados