Os programadores da 4Dev deram uma entrevista na qual dão bastante a conhecer sobre a realidade das novas consolas. Analisamos e comentamos esses dados.
Metro Redux é uma re-conversão dos anteriores Metro Last Light e Metro 2o33 para as consolas de antiga geração. Daí que não foi novidade que soubéssemos que na conversão as novas consolas estavam longe de serem exploradas ao máximo. Afinal novas tecnologias e metodologias que podem ser utilizadas com estas consolas não são exploradas devido ao código antigo não pensado para esse fim.
Foi no entanto interessante perceber que este código antigo pode chegar a ser um empecilho para as novas consolas, chegando mesmo a abrandar o novo hardware
Atentem na seguinte questão que a Eurogamer colocou a Oles Shishkovstov, um dos membros da 4Dev.
Nota: Traduções manuais livres, tentando manter o significado o mais próximo do original possível.
Digital Foundry: Como é que conseguiram ter uma noção do que estas consolas eram capazes na altura em que receberam os kits e desenvolvimento?
Oles Shishkovstov: Bem, limitamos-nos a converter os nossos jogos e a realizar uma série de testes!
Um exemplo que posso dar: O Metro Last Light em ambas as anteriores consolas possui tarefas de geração de texturas vectorizadas e optimizadas à mão. Uma delas demora 0.8 ms num SPU da PS3 e 1,2 ms num dos núcleos Hyper-Thread da Xbox 360. Assim que as perfilamos pela primeira vez – já vectorizadas via AVX+VEX – na PS4, demorou mais de 2ms! E isto é mau para um frame de 16 ms. A questão é, a tarefa apenas existia com a função de libertar alguns ciclos nos antigos GPUs, o que é contra produtivo na actual geração de consolas. Esse processo foi puramente desactivado.
É um caso curioso e que mostra o problema não só das conversões, mas igualmente de código eventualmente partilhado em motores multi-plataforma. A optimização nestes casos nunca será perfeita a não ser que haja rotinas específicas dedicadas a cada hardware específico.
Outra questão interessante levantada na entrevista foi relativa às diferenças entre as consolas:
Digital Foundry: O menor número de compute Units da Xbox One, largura de banda e problemas com a ESRAM estão bem documentados. Diferenças de resolução em jogos multi plataforma são comuns e em alguns titulos vemos 720p vs 1080p. Qual a sua perspectiva nas diferenças entre a Xbox One e a PlayStation 4?
Oles Shishkovstov: Bem, vocês basicamente respondeu à sua própria questão – A PS4 é um bocado mais poderosa. Esqueceu-se de mencionar o número de ROPS, é igualmente importante – e não vamos esquecer que ambas as consolas partilham largura de banda entre CPU e GPU. Vi uma série de casos com a Xbox One onde o GPU podia actuar com a performance desejada, mas apenas quando o CPU não fazia praticamente nada. Infelizmente tambem vi o caso contrário, quando o CPU tinhas as performances esperadas mas apenas com o GPU sem fazer quase nada, mesmo sabendo que o CPU tem acesso prioritário de acesso à memória. Este é o motivo pelo qual a decisão da Microsoft de subir as velocidades de relógio antes do lançamento foi o mais sensato de se fazer com o design já fixo.
Mas a contagem de pixels não é melhor maneira de se medir a diferença entre elas. Há muitos outros factores (e mais importantes) que afectam a qualidade de imagem para além da resolução. Poderemos puxar 40% mais pixels por frame na PS4, mas não é 40% um melhor resultado. Os vossos olhos não dirão isso.
Para além da realidade de performance já conhecida, basicamente Oles falam de uma situação que curiosamente abordamos à pouco em diálogo nos comentários. A degradação da largura de banda tanto na PS4 como na Xbox One quando ambos os sistemas acedem em simultâneo à RAM. Nestes casos a PS4 perde quase 20 GB de largura de banda efectiva de acordo com os dados da Sony. Desconhecem-se os valores para a Xbox One, mas como as palavras deixam perceber, a situação, tal como tinha sido dito por nós nos comentários, e comprovada com slides da Microsoft, é idêntica nessa consola.
A imagem que se segue é na parte superior um slide da Sony e inferior um slide da Microsoft.
O outro ponto curioso é relativo à vantagem de resolução. Efectivamente ela nota-se, mas não é, para todos os efeitos num ganho visual equivalente ao valor da resolução. Mesmo no caso pior, ninguém pode afirmar que a diferença de 720p re-escalados para 1080p nativos, apesar de ser 225% mais pixels corresponde a uma imagem 225% melhor visualmente. Apesar do ganho visual ser perceptível, isso não é uma realidade!
O que acho que não deve porém ser esquecido, e daí a referência a que essa não é a melhor maneira de se medir a diferença entre as consolas, é que essa é apenas uma forma de se gastar a potência adicional. Caso a resolução fosse mantida idêntica, esses 225% (no caso de 720p vs 1080p) ou 44% (no caso de 900p vs 1080p) de processamento adicional poderiam ser usados em outras coisas, nomeadamente efeitos adicionais, maior número de partículas, HDR, Anti Aliasing, efeitos gráficos, melhor iluminação, ou outras situações que criariam maior disparidade visual do que a resolução.
Mas continuando com a entrevista:
Digital Foundry: É assim tão difícil de trabalhar com a ESRAM?
Oles Shishkovstov: Na realidade os problemas não vem da ESRAM, mas da quantidade dela. Quanto à performance – é suficiente para o GPU que está na Xbox One. Sim, é verdade que a sua largura de banda máxima teórica – que é de certa forma comparável à da PS4 – pode raramente ser atingida (normalmente com escritas e leituras simultâneas, como Blending FP16) mas na prática apenas vi alguns casos onde ela se torna um factor limitativo.
Mais uma vez estes dados confirmam o que aqui sempre foi dito. Apesar de ser um pouco mais limitada no caso de termos só escritas ou só leituras(onde só temos 109 GB/s máximos teóricos caso só existam escritas ou só leituras, a ESRAM possui uma largura de banda média efectiva (no caso de escritas e leituras simultâneas) em tudo semelhante à da GDDR5 da PS4. E nunca foi pela sua largura de banda que ela foi criticada, mas sim pelo facto de a memória ser de tal forma reduzida que parte do processamento necessita de ser realizado da DDR3. E nesse caso sim, a largura de banda da DDR3 é limitativa. Mas a da ESRAM nunca o foi, sendo que a memória só peca por ser escassa. Já referimos aliás que 64 MB, ou idealmente 128 MB, teriam resolvido todos os problemas da Xbox One.
Digital Foundry: DirectX 11 vs GNMX vs GNM (as duas variantes do API global da PS4 (o PS4SL é apenas a parte gráfica) – Qual a vossa opinião face aos APIs disponíveis para os criadores com a Xbox One e a PlayStation 4? Na altura do lançamento havia queixas acerca da performance da driver XO e de alguma sobrecarga do CPU no GNMX.
Oles Shishkovstov: Vamos por a coisa desta maneira – já vimos cenários na Xbox One onde um único núcleo de CPU estava totalmente utilizado a fazer chamadas de desenho na (e isso na ‘mono’ driver com várias chamadas de ‘caminho rápido’ utilizadas). Então, o mesmo cenário na PS4, onde era até difícil encontrar essas chamadas de desenho nos gráficos de perfil do CPU, porque eles basicamente não usavam tempo de ocupação nenhum e como consequência eram difíceis de serem vistos.
No geral – Não percebo porque escolheram o DX11 como ponto de partida para a cosnola. É uma consola! Porque haver preocupação com as questões de “Legacy”?? Na PS4, a maior parte dos comandos de GPU são apenas uns DWORD escritos no buffer de comandos, ou seja apenas uns ciclos de relógio. Na Xbox One, facilmente pode ser um milhão de vezes mais lento devido a toda a escrituração que o API faz.
Mas a Microsoft não anda a dormir, a sério! A cada XDK que é lançado, antes e depois do lançamento da Xbox One, há cada vez chamadas de desenho mais e mais rápidas na mesa. Eles adicionaram centenas de caracteristicas para contornar as limitações do DirectX11. Até fizeram um API faça você mesmo ao estilo DirectX 12/GNM – apesar de não o termos usado com o Redux devido a restrições de tempo.
Em tempos aqui na PCManias fomos tremendamente criticados porque achamos imensa piada às frases de Albert Penello quando este referiu “As pessoas tem consciência que a Microsoft possui dos programadores gráficos mais inteligentes DO MUNDO. Nós CRIAMOS o DirectX, o API standard que todos usam“. Mas a realidade é só uma. O DirectX é um API muito, mas mesmo muito pouco optimizado. Tem vindo a melhorar a cada nova versão, mas muito pouco, e comparativamente ao que a PS4 possuía no seu lançamento, o DirectX 11 é, de forma simpática, um API de menor qualidade. E não há outra comparação possível. Esta era uma ideia consensual, e tanto que era que a AMD, vendo o estado em que se encontrava o DirectX avançou com o seu API, o Mantle.
Como já discutimos aqui, na altura do lançamento da Xbox One a situação era bem pior. Apenas alguns programadores (como a Turn 10), tiveram acesso a ao API de baixo nível da Xbox One, sendo que os primeiros jogos da consola usavam praticamente o DX 11 Standard. Essa foi uma situação que se alterou com o tempo, sendo que agora este API de baixo nível está disponível para todos. E a questão da performance foi melhorada, atingindo o seu pico com a libertação da reserva do Kinect que permitiram à Xbox poder agora explorar na sua totalidade os seus 1,31 Gflops teóricos. Da mesma forma a Sony resolveu entretanto o problema das sobrecargas no seu CPU e acredita-se estar igualmente em situação de poder explorar os seus 1,84 Gflops teóricos.
Aqui na PCManias sempre tivemos consciência destas realidades. Daí que quando nas nossas análises referíamos a superioridade da PS4 sobre a Xbox não era meramente pelo Hardware, ou por questões de gosto ou preferências. Era apenas porque… era verdade e dizer o contrário seria enganar. A Xbox One possuía, especialmente com as especificações com que foi lançada, tremendas limitações.
Se as limitações do Hardware nunca poderão ser superadas, as do software podem. E a consola tem vindo a melhorar com a diminuição das limitações do seu software, sendo que, muito certamente, atingirá o pico com o DirectX 12. Esse é um dos motivos pelos quais, e quem nos acompanha saberá, ao longo do tempo tempos vindo a alterar a nossa postura face à consola da Microsoft. A consola está, para todos os efeitos, bem mais apetecível agora do que quando foi lançada. Aliás a minha decisão de compra de uma XBox One aconteceu no momento em que me apercebi que presente API de baixo nível existente na consola estava disponível de forma aberta a todos os programadores, e que finalmente poderíamos começar a ver mais performance e grandes jogos na consola.
Acreditamos aliás que a Microsoft se vai dedicar em pleno a estas optimizações, e extrair dela tudo o que é possível, o que será bem acima do que existe hoje. E diga-se que a XBox One, é cada vez mais uma consola que possui características que a tornam bastante desejável, independentemente das performance ou jogos da concorrência que possam existir.
Eis uma frase de Oles relativamente aos APIs, e que mostra bem as diferenças entre um API de baixo nível e o DirectX 11:
Digital Foundry: A Xbox 360 e a PS3 eram designs ambiciosos para 2006/7. A Xbox One e a PS4 são muito mais viradas para uma construção económica e acessível – Será que possuem o que é preciso para durar tanto como as suas antecessoras?
Oles Shishkovstov: Bem, obviamente que elas não possuem o hardware de topo que podemos comprar nos PCs (apesar que por valores insanos de dinheiro). Mas elas são peças de hardware relativamente bem balanceados que poderão fazer bem acima daquilo que as pessoas estão a obter agora a nível de performance. E não vamos esquecer que a programação perto do metal normalmente significa que se pode obter 2x a performance do PC equivalente. Mas atingir essa performance leva tempo.
Apesar de o DirectX 12 não ir fazer os mesmo milagres na Xbox One que irá fazer no PC, os ganhos existirão. Note-se porém que a realidade de que a equipa fala é a encontrada no API usado para o seu jogo, e não no novo que refere existir, já ao estilo DX 12/GNM, mas que, como podemos ler na questão anterior, não usou por falta de tempo.
É sabido oficialmente, tendo sido referido em congressos e seminários da Microsoft sobre o DX 12 que a Xbox One está a prototipar o DirectX 12. No entanto, como se pode comprovar pela entrevista, ainda há muitos programadores que nos seus projectos, especialmente nestas reconversões, estão a usar versões antigas e menos optimizadas do API, e esse está longe do actual da PS4, particularmente na gestão do CPU.
Digital Foundry: Em que extensão o DX 12 será util na Xbox One? Não há já baixa sobrecarga no CPU quando se dirige ao GPU?
Oles Shishkovstov: Não, é importante!. Todo aquele registo de dependências tira uma boa parte do processamento do CPU. E se falamos de geração de buffers de comando para processamento multi-núcleos – o modelo do DX 11 é basicamente um falhanço, ao passo que o DX 12 deverá corrigir isso.
Naturalmente não era lógico ou coerente que sendo os CPUs de ambas as consolas semelhantes, mas o da Xbox One correndo a 1750 Mhz e o da PS4 a 1600 Mhz, os benchmarks revelassem a PS4 como a consola com o processador mais rápido. Esta situação prende-se com a melhor qualidade do seu API que na altura em que foram conhecidos esses benchmarks, não estando disponível o novo, conseguia acessos baixo nível de menor sobrecarga no CPU que só estão acessíveis na Xbox One com o novo API , e ficarão optimizados na sua totalidade com o lançamento final do DirectX 12.
Mas recorde-se mais uma vez que essa é uma realidade com o API base da consola, o DX 11, e não o será com o novo actualmente existente e referido como sendo ao estilo DirectX 12/GNM, que já oferece à Xbox One muito do que se vai conseguir com a versão final do futuro API.
Seja como for, somente nessa altura ambas as consolas se equivalerão a nível de software, sendo que daí para a frente, para voltarmos às grandes diferenças será preciso que as equipas comecem a explorar o hardware e a tirar partido das consolas como deve ser. Algo que como este programador deixou igualmente a entender, ainda só foi explorado por alguns jogos e de forma algo superficial, pelo que nunca vimos o real potencial de ambas as máquinas
Um situação curiosa que não pode deixar de ser referida é a chamada de atenção da 4Dev para o facto que os 10% de reserva libertados podem traduzir-se, na prática, em ganhos bem mais pequenos. Mas isso é algo que depende do que está implementado no jogo. No presente caso os programadores queriam FPS estáveis, e os 10% só garantiam isso com um aumento de pouco mais de 1% de resolução. Daí que o jogo tenha passado de 900p para 912p, e não mais.
É naturalmente uma situação que depende dos limites já atingidos pela consola. Se por exemplo as larguras de banda estavam já esganadas, mais performance de pouco ou nada vale. E como a reserva que existia era efectuada baseando-se em tempos de ocupação do GPU e não com impedimentos físicos de acesso ao hardware, era possível levar-se alguns componentes ao limite mesmo sem se ter disponível a performance total do GPU.
A totalidade da entrevista está aqui.