La culpa de todo el conflicto con DX12 en Xbox One la tiene Microsoft.

 

Cuando Digital Foundry entrevisto a uno de los programadores de Metro Redux me llamo la atención que dijera que Xbox One tuviese una GPU comparable a DX12 y al GNM de PS4.¿Que dijeron los desarrolladores de Metro Redux a Digital Foundry? Pues lo siguiente:

Realmente Microsoft no esta dormida. Con cada XDK que han lanzado tanto antes y después del lanzamiento de Xbox One han colocado encima de la mesa draw-calls más rápidas. Han añadido un sinfín de características con tal de poder evitar las limitaciones del modelo de la API de DX11 Incluso han hecho una API al estilo hazlo tu mismo DX12/GNM, pese a que no hemos podido utilizarla en Redux debido al limite de tiempo.

Cuando puse esto nadie se percato en dos detalles detalles.

El primero es la expresión “hazlo tu mismo” donde se refiere a que sea la aplicación la encargada de manejar las listas de comandos enviadas a la GPU, sobre esto entrare mas adelante. La segunda… ¿A que API se referían que no podían haber utilizado por falta de tiempo? Pues a la llamada DX11 “Mono”, integrada en el kit de desarrollo de Xbox One apenas un mes o dos antes del lanzamiento de Metro Redux.

xboxonesdk Xboxonesdk2 Xboxonesdk3

Esta API es llamada también DX11.X por parte de la propia Microsoft y ya fue mencionada en en la entrevista que los arquitectos concedieron a Digital Foundry. La respuesta de Andrew Goosen que podéis ver a continuación es clave para entenderlo todo:

Goosen

La parte interesante esta en el segundo párrafo:

Hemos tomado la oportunidad de ir y cambiar drasticamente el procesador de comandos de la GPU. De nuevo concentrandonos en el rendimiento de la CPUel bloque de interfaz del procesador de comandos es un componente clave en hacer que la sobrecarga de la CPU bastante eficiente.

Fijaos como la clave aquí no es otra que la reducción de la sobrecarga de la CPU, es decir, el tiempo que tarda la CPU en hacer su trabajo en el renderizado de la escena.

Así que hemos tomado la oportunidad  con Xbox One y con nuestro procesador de comandos a medida hemos creado extensiones encima de D3D que se adaptan suavemente a nuestro modelo D3D y que es algo que nos gustaría integrar a nuestra linea principal de 3D en PC también.

Dichas extensiones al estándar D3D son los añadido de DX11.X, el caso es que Microsoft está jugando al juego del trilero con esto.

Por un lado les tenemos diciendo que el DX 11.X no es DX12:

 

Pero por otro lado lo han portado a PC como el Feature Level 12.0:

 

¿Que tiene de extraño? Pues que tenemos las Nvidia Maxwell (serie 900, 860M) con el 12.1 y las GCN 1.1, a la que pertenece la GPU de Xbox One, con el 12.0. Siendo el 12.0 el mismo Feature Level que el 11.X, dicho de otra manera. DX12 es un port de la API de Xbox One a PC. ¿Recordáis que he citado a la entrevista a uno de lo desarrolladores de Metro Redux donde cita una API de Microsoft al estilo DX12/GNM? Para empezar GNM es la API de bajo nivel de PS4 y comparte con DX12 una de las mejoras de cara el rendimiento de la CPU que es la posibilidad de manejar múltiples núcleos de la CPU para crear múltiples listas de comandos.

 

Esto es algo que se esta mostrando como uno de los pilares de DX12 en PC:

 

Dicho de otra manera, los desarrolladores llevan teniendo “DX12” en sus manos en Xbox One, solo que con otro nombre, desde el año pasado y el motivo por el cual lo pongo entre comillas es porque este año de diferencia ha permitido a Microsoft pulir dicha API en su versión final y añadir una serie de elementos que la API de Xbox One no tiene y que ha visto implementada con DX12.

Pero aquí hay dos puntos de ingenuidad, el primero es pensar que DX12 es borrón y cuenta nueva respecto a anteriores versiones cuando toda nueva versión de una API se construye encima de la anterior y utilizando la anterior como cimiento, lo segundo es pensar que en una consola no se hacen diversas versiones con optimizaciones varias sobre esta con tal de aumentar el rendimiento de los juegos.

Microsoft ha guardado celosamente bajo llave la forma en la que Xbox One gestiona las listas de comandos en la CPU y no ha revelado jamás el como de cara el público, pero la evolución de rendimiento de DX11.X a DX12 en el tema de la CPU tendría que ser tan espectacular como lo va a ser en PC. No quiero crear una polémica estúpida, pero teniendo en cuenta que el AMD Jaguar no es muy potente por núcleo entonces el salto de una API a la otra debería hacer ganar un rendimiento sustancial en los juegos, pero acordaos de la entrada del Project Cars que hice hace unos días, un 7% de rendimiento de más solamente significa que en Xbox One y en concreto en DX11.X ya estaba implementado el manejo de múltiples listas desde múltiples núcleos y si a eso le sumamos las declaraciones del desarrollador de Metro Redux diciendo que la API es un “hazlo tu mismo” esto significa que DX12 en su Feature Level 12.0 es lo mismo que DX11.X, es decir, puro marketing por parte de Microsoft donde han decidido renombrar la API de Xbox One.

Anuncios