Direct3D 12, la ESRAM en Xbox One y cosas varias

En la entrada titulada el 20% de la discordia os he comentado que el Direct3D 11 Monolithic de Xbox One equivale a la Feature Level 12.0 del Direct3D 12, dejando la 12.1 con el soporte completo y para procesadores gráficos que aparecerán a finales de año, aunque se dice que la arquitectura Maxwell de Nvidia ya lo soporta. Obviamente dado que D3D12 es principalment un “port” del D3D11 Mono de Xbox One a PC Microsoft ha renombrado la API a D3D12 por motivos de marketing y para evitar confusiones.

Todo esto no significa que Microsoft deje abandonada a Xbox One  a favor del PC ni que tampoco mejore el kit de desarrollo de la misma. Brad Wardell, desarrollador, puso lo siguiente en su twitter acerca de las mejoras de rendimiento en la siguiente versión para el SDK de Xbox One:

WardellDX12XBO

Esto son muy buenas noticias para los desarrolladores de Xbox One, en todo caso la ESRAM no es un elemento que procese nada sino un pozo de memoria. El aumento de su rendimiento vendrá seguramente en la cantidad de datos que puede enviar y recibir en un periodo de tiempo, por lo que indirectamente acabará beneficiando a la GPU de Xbox One, ya que las GPUs por su naturaleza depende del ancho de banda. Pero esta API es una APU

Lo que llama poderosamente la atención es la nueva API para el manejo de la ESRAM, la cual es una parte controvertida del hardware de la consola de Microsoft.

WardellDX12XBO2 WardellDX12XBO3

¿Cual es el problema de la ESRAM y por qué PIX es una herramienta tan importante? Wardell lo explica muy bien en su blog personal:

“Aquí es donde DirectX 12 entra en escena. Primero, están rehaciendo las APIs para tratar con la eSRAM basadas en el feedback dado por los desarrolladores. Segundo, tienen una maravillosa herramienta llamada “Pix” que ahora tiene una carácteristica (o la tendrá muy pronto) que permitirá a los desarrolladores intentar diversas estrategias a la hora de usar a eSRAM y ver el rendimiento de esta sin tener que recontruir el proyecto (pueden simularla en la herramienta). Esto también es muy grande.”

PIX es una herramienta clásica de los SDK de Xbox, es el equivalente al Performance Analyzer de Sony en PlayStation y te permite saber el grado de utilización y el rendimiento de cada componente para poder optimizar el código. En el caso de la ESRAM Microsoft acabo dando la razón a los que criticaron su problema principal, la falta de densidad de la misma y no lo esta diciendo ahora, lo lleva diciendo desde hace ya varios meses:

 

Traducción: como el búfer de imagen no os va a caber entero dentro de la ESRAM lo mejor es que ciertas partes del escenario se calculen sobre la DRAM y las que sean más sensibles al rendimiento en la ESRAM. Esto significa que los render targets (recordad que hoy en día se trabaja con varios búfers de imagen) no tienen que almacenarse al 100% en un mismo lugar sino que los desarrolladores pueden escoger almacenar una parte en la ESRAM y otra en la DRAM, por lo que en el fondo es una forma de reconocer por parte de Microsoft que la densidad de la ESRAM pero al ser un elemento del hardware de la consola es inmutable.

Ahora si me permitís voy a responder a un comentario:

Un inciso, la mejora del 20% es la en la parte GPU pero en lo que a CPu se refiere comentaron que era de un 50% pero esto dependerá de la cpu que tengas por ejemplo con los procesadores AMD es mayor.
Con respecto a las gráficas AMD un par de desarrolladores han comentado que son tier 3 y que son capaces de hacer CR conservative rasterizacion por hardware.
http://forums.anandtech.com/showthread.php?t=2422223

Interesante…

Building a hardware for conservative rasterization will probably a huge help for Intel and NVIDIA, but not for AMD. They already use a robust solution, and GCN has much more registers than any other architectures.
The real question is what’s possible in the APIs. GNM may use some features that are unaccessible on the present PC APIs.

http://forums.anandtech.com/showthread.php?t=2422223&page=2

Asi que me imagino que esto también se puede aplicar a la Xbox one.

El soporte del que hablas es para las GCN 2.0 en adelante, la de Xbox One es una GCN 1.1.

No obstante hay una serie de cosas de Direct3D 12 que si que soporta el hardware de Xbox One. Mirando el artículo de Anandtech sobre Direct3D 12 lo que me ha llamado la atención es lo siguiente:

La Conservative Rasterization esta siendo añadida en Direct3D para permitir el uso de nuevos algoritmos que no caen bajo la naturaleza imprecisa del point sampling. Como el VTR, los voxels juegan una parte importante aquí desde que la Conservative Rasterization puede ser utilizada para construir un voxel.

Quedaos con lo de Point Sampling por el momento. que luego entraremos en ello

¿Que es el VTR?

VTR

¿No os suena? A mi si.

La diapositiva habla de pixeles volumétrics, aka voxels, y esto me hace recordar a los Sparse Voxel Octree utilizado en la version preliminar del Unreal Engine 4, la que corría en la GeForce GTX 680 pero que al final eso se descarto por requerir demasiada potencia de cálculo y en la versión de consola aún más por el hecho que ninguna de las dos consolas tenía suficiente potencia. No obstante Sony comento el año pasado una variación de la misma que no utilizaba el Octree:

PS4SVC

 

El primer punto de los pros tiene que ver con el point sampling antes mencionado, digamos que si se operan con los PRT no hace falta la Conservative Rasterization para hacer esto.

PS4SVC2

PS4SVC3

¿Os suena? Es precisamente lo mismo a lo que le han dado soporte en Xbox One.

El otro tema que me parece curioso es lo de los “bundles” y digo que me parece curioso porque OpenGL lo soporta desde la versión 3 y es raro que Microsoft haya tardado tanto en darle apoyo. ¿Que es un Bundle? Como sabéis lo que se hace es enviar listas de comandos desde la CPU a la GPU, pues bien, muchas veces dichas listas de comandos se repiten. Un Bundle es una lista de comandos concreta en un paquete asociado, de tal manera que no hace falta llamar a las instrucciones una por una sino que es suficiente con llamar al Bundle que las contiene.

Eso es todo.

Anuncios