Comentario#1:

imagino que por eso siguen tirando de ideas obsoletas sin aplicar las optimizaciones de moviles como el tile rendering. que los ipad 3 en ¿2012? ya usaban en los juegos resolucion de 2048x1536p nada menos, lo logico sería que usaran tile rendering de una vez, que desde dreamcast es una tecnología ignorada por los demas fabricantes de gpus.

El concepto del Tile Rendering en realidad no es otro que el de partir el búfer de imagen en pequeñas partes y calcular estas en la memoria interna del chip con tal de no tener que tocar la memoria externa. El problema es que a nivel de costes esto no te exime en ningún momento en dar el suficiente ancho de banda de lectura a las unidades de texturas y a los shaders asociados. Es decir, se necesita tanto ancho de banda externo como interno y al final como la solución mejor es una memoria RAM rápida externa para lectura y escritura pues se tira de eso.

Pero me voy a poner un poco técnico, antes cuando se generaba un fragmento las GPUs solo podían operar con un solo fragmento a la vez y si el resto de la GPU estaba desocupado pues no había nada que hacer pero a partir de DX11 en adelante hemos visto como las GPUs pueden trabajar con varios fragmentos al mismo tiempo por el hecho que ahora el rasterizador puede sacar varios fragmentos para ser texturizado, el problema viene por el hecho que las GPUs siguen teniendo un solo procesador de comandos para gráficos. Es decir, podemos mezclar gráficos y computación de manera sincronizada y asincrona pero no podemos tener varios hilos gráficos que nos permitan dividir la pantalla en varias partes distintas.

¿Y como lo hacemos? El diagrama estándar de toda GPU es:

gpuestandar

El Tile Rendering divide el búfer de imagen en pequeñas partes, para ello crea una serie de listas de pantalla una vez ha realizado la rasterización por cada uno de esos fragmentos, los cuales pueden ser variables o fijos en cuanto a tamaño, en el caso concreto de los PowerVR el tamaño es fijo en bloques de 32×32 pixeles.

DirectvsTile

Si un triangulo se sitúa en dos fragmentos será calculado en ambos.fragmentos en este caso, pero el rasterizador una vez ha transformado la geometría de la escena en rasters dentro del espacio cartesiano lo que va a hacer es dividir la pantalla por tile… ¿Y que ocurre cuando el fragmento es lo suficientemente pequeño? Lo siguiente:

tilerenderer

Los ROPS pasan a formar parte de la Compute Unit junto a una pequeña memoria asociada que hace de búfer de imagen del Tile correspondiente, el cual una vez generado es copiado en el búfer de imagen frontal que se encuentra en la memoria externa de la GPU. En el caso del Deferred Rendering esto no es problema porque los MRTs de cada Tile se pueden almacenar en el mismo Tile y eso es lo que le da una ventaja enorme hoy en día al Tile Rendering.

Recordad que en el Deferred Rendering se utilizan unos 5 MRTs de media por lo que la formula sería:

Tasa de relleno de la GPU*Bytes por pixel (RGBA)*Número de muestras.

Esto sobre la memoria externa es mortal, sobre una memoria interna tiene un impacto realmente positivo y hace que el ancho de banda de la memoria no se vea impactado negativamente. Por el momento tanto Nvidia como AMD no han integrado los ROPS en la Compute Unit con una pequeña memoria asociada que hagá de Tile Buffer, pero estoy seguro que lo veremos con el tiempo, en especial no solo porque ahora ancho de banda sino que evita las contenciones con la memoria.

Comentario#2:

pensando en el checkerboard rendering, urian, se me ocurrió ayer que si en vez de usar tableros de 32 x 32 fueran de 36 x 36 podrian formar tiles de 3×3 fragmentos (de 2×2 cada uno) de modo que se saltarían el fragmento central (imagina un cuadrado de 3×3 al que le falta el bloque de en medio). es decir, ademas de saltarse uno de cada dos pixeles por calcular, tambien se ahorrarian otro 11%, calculando en total el 39% de la superficie de la pantalla en vez de la mitad.

por cierto dependiendo de la calidad del reescalado de la tv o monitor en pc interesa o no que reescale la gpu. esto viene a ser parecido pero con un algoritmo personalizado.

Comentario#3

me refiero a hacer una pasada previa de interpolacion para rellenar los huecos centrales de la muestra que contiene los fragmentos antes de dispersarlos en tablero con huecos.:

Interesante…

thinking-ape-evolution

No tengo un concepto del tamaño objetivo del Tile, tome como referencia la idea de Digital Foundry de crear fragmentos de 4×4 pixeles por un lado y el documento del Rainbow Six Siege para crear mi teoría de como funciona el Checkerboard Rendering en PS4 Pro… En realidad en pocos días deberíamos saber si mi hipótesis es correcta o me he equivocado por completo.

Comentario#4:

“Es decir, es como si la potencia de la GPU fuese de 3.68 TFLOPS en vez de los 4.2 TFLOPS anunciados.”

Por ejemplo.. Si yo tengo mi PC con la GTX960 2gb que da unos 2.2 TF.. y decido reemplazarlo por una Rx480 que da 5.2 TF. Pero en vez de cambiar Procesador (FX8320e) sólo le hago un Overclock de 3.2ghz a 4.0ghz… Mi GPU no da 5.2TF?! WHAT THE FUCK ARE YOU SAYING?!!

El procesador funciona mas rápido, y la GPU es mas potente y mas rápida, eso mejora TODO, aunque ahora el balance GPU/CPU esté en favor de la primera, una no le quita potencia a otra. El CPU sólo puede ser cuello de botella en juegos que usen mas este que laGPU, juegos quenecesiten un intenso uso para la IA o físicas, sin embargo eso se puede lograren GPU hoy en día sin problemas.

A veces me pregunto si la gente suelta las cosas así como así sin pensar o que es lo que pasa… Lo dire de manera más adecuada: El hecho de pasarle el trabajo de la CPU a la GPU significaría tener que rehacer el código del juego por un lado y por otro que parte de la potencia de la GPU se vería completamente tocada. Pero parece que existe el miedo a reconocer que el mayor problema que tiene PS4 (y Xbox One) es su ridícula CPU de Netbook.

El tema de la entrada original es muy simple, un fotograma es tiempo de CPU y tiempo de GPU, hacer más potente la parte posterior sin apenás aumentar la parte anterior significa que el rendimiento de la segunda queda tocado. La gente piensa que la GPU hace todo el trabajo y es falso… En realidad la GPU solo calcula como se ve la escena pero no calcula como es la escena  y eso va en manos de la CPU. Por mucha computación de proposito general que haya en una GPU para ciertos elementos estas no están pensadas para calcular los cambios de la escena en cada momento, es decir, para hacer una descripción de la nueva escena y crear una lista de comandos para la GPU.

Si tienes un tiempo fijo por fotograma y la CPU es una puta mierda lo que va a ocurrir es que el tiempo que tenga disponible la GPU para si será mucho menor y el rendimiento visual peor. Si en cambio no tienes tiempo fijo vas a sumar milisegundos de más en el fotograma y la tasa de fotogramas se va a resentir respecto al ideal. No es que PS4 Pro no mejore respecto a PS4, es que PS4 Pro tiene una CPU que no le permite sacar todo el potencial a la GPU. Si el año que viene Sony sacase una PS4 Pro+ con el AMD Zen entonces verías cierto nivel de mejora en los juegos con el simple cambio de la CPU y sin cambiar nada más respecto a la PS4 Pro estándar.

Comentario#5:

http://digiworthy.com/2016/09/11/amd-zen-custom-socs-project-scorpio/ aqui lo dice scorpio no usara zen…. zen para las consolas estara lista para 2018 saludos.

Es falso que no se pueda hacer un SoC con un CPU Zen en 2017 desde el momento en que tenemos esto venido de la propia AMD

RavenRidge

 

Es decir, en 2017 va a ser posible un SoC con AMD Zen… ¿Entonces como es que Sony no ha retrasado PS4 Pro? Pues por el hecho que lanzarla este año y al precio que tiene forma parte de la estrategia. En el caso de Scorpio… paciencia porque tengo pensada desde hace tiempo una entrada en ese sentido.

Comentario#6:

entonces la unica razon para que no salga en 2016 es la hbm2, posiblemente su coste este año

Esto es complicado de explicar pero… Bueno, en realidad no lo es para nada.

HBM23

La memoria convencional escala ampliando la interfaz a la vez que la densidad, escala por el número de pilas pero la densidad en cada pila es variable. Sony podría haber sacado una PS4 Pro con un chip de memoria HBM2 con una pila de 8 pisos y tendría la configuración de 8GB, una reducción enorme en la placa, no se vería comprometido el ancho de banda y un mayor espacio en el consumo para un overclock respecto a la PS4 Pro y esto por no hablar de una reducción enorme en el consumo.

Una sola pila HBM2 puede tener el mismo ancho de banda que 8 chips GDDR5 con una interfaz de 2Ghz, que es la velocidad máxima del estándar GDDR5 pero con una serie de ventajas asociadas que solo se explican por alto precio que tiene la memoria HBM2 en estos momentos por el hecho que por el momento no se encuentra en los productos para el mercado de masas sino en gamas muy, pero que muy altas.

¿Y esto a que es debido? Pues al hecho que si colocamos varios chips uno encima del otro si sale uno defectuoso entonces tienes que descartar la pila entera. Es decir, la memoria HBM2 pese a tener ventajas en cuanto a espacio y consumo tiene la desventaja en cuanto al coste que es mortal para su uso en una consola a no ser que se utilice una configuración de un solo piso… 😉

Esto es todo por esta entrada.