La API de bajo nivel de Xbox One según el SDK oficial.

Comentario original:

Cobra bastante fuerza lo de que “como predecias al princpio”, XBO usaba direct3d casi a pelo al empezar la generación. Han ido mejorando las herramientas a toda prisa hasta lo que tenemos a dia de hoy. Con funciones eclusivas para la consola como SetFast y compute context recientemente incorporadas.
Tambien se habla de los cores que se usan.
https://forum.beyond3d.com/threads/xbox-one-november-sdk-leaked.56362/

Esta es otra de las entradas que tenía en borrador y se “perdieron” por un error con el reloj interno del blog, el tema ya lo trate en el pasado y quería dejarlo claro pero dado que estamos hablando de una fuente primaria, el SDK de Xbox One, esto tiene bastante relevancia.

Un aviso antes de nada, el contenido de esta entrada es un enorme Deja Vu, la he recuperado por un hecho muy, pero que muy simple: lo que se lee en la documentación confirma lo que yo he ido sosteniendo todo este tiempo y aún hay gente que lo niega.

En fin, a lo que toca:

Traducción:

El soporte para Direct3D estándar se ha retirado en el XDK de Mayo de 2014, en favor de Monolithic Direct3D.
Con el lanzamiento del XDK de Mayo de 2014, solo el runtime de Monolithic Direct3D estará disponible para el desarrollo en XDK. El runtime de Monolithic Direct3D ha sido el enfoque en el XDK para entregar las mejoras de potencia especificas de consolas y extensiones de carácteristicas de Direct3D a los desarrolladores. Con el añadido delsoporte para codificación/descodificación en el lanzamiento del XDK de marzo de 2014, este es el momento de retirar el runtime del Direct3D estándar. Los títulos/juegos deberán tomar ventaja del runtime Monolithic Direct3D, sí no lo han hecho previamente.

Sobre la definición de “runtime” en la Wikipedia podéis encontrar una buena explicación de lo que es.

Por lo que se deduce de esta párrafo los desarrolladores durante la primera generación de juegos estaba utilizando el Direct3D 11 estándar y no el Direct3D 11 especifico de Xbox One, por lo que ante la situación Microsoft dejo de darle soporte al estandar a partir del pasado mes de Mayo, lo cual es normal ya que el Direct3D 11 “Mono” es muy superior al estandar que hay en PC.

¿Pero que tiene de especial?  Veamos su descripción general.

 

Traducción:

Muchos de los cambios en Direct3D respecto a la versión de Windows son debido a que Xbox One utiliza una plataforma única y específica de hardware, y los títulos que corren bajo el Game OS requieren un rendimiento muy alto en gráficos. Debido a que el hardware objetivo es específico en vez de tener que ar apoyo a una varidad de CPUs y GPUs, se ha retirado una capa de abstracción para proveer un rendimiento más rápido.

El Monolithic runtime es requerido para todos los títulos. Hay un solo controlador Direct3D runtime y un controlador a nivel de usuario, retirando las abstracciones innecesarias se mejora el rendimiento.

Dicho de otra manera, al eliminar la capa de abstracción la API se comunica directamente con el procesador gráfico.

APIStack

Al eliminar la capa de abstracción por el hecho de ser hardware único el tiempo que la CPU se toma en cada fotograma se reduce y con ello la GPU gana rendimiento y dado que hacemos “bajar un nivel” la jerarquía y nos acercamos a la GPU a esto lo llamamos API de bajo nivel. Dichas APIs solo se dan en GPUsque compartan un mismo procesador de comandos y por tanto puedan entender lo que les dice la API de una misma manera. Por lo que la conclusión que sacamos de esto es que estamos hablando de una API de bajo nivel y por lo tanto estamos ante la API de bajo nivel de Xbox One.

Es más, no es la primera vez que hemos oído hablar de Mono,ya hablarón del mismo en el E3 2013:

“Desde el E3, un ejemplo es que nosotros hemos caído en lo que llamamos internamente nuestro controlador mono. Es nuestro controlador gráfico que esta 100% optimizado para el hardware de la Xbox One. Empiezas con el controlador base [DirectX] y vas eliminando las partes que no parecen ser de Xbox One y añades todo lo necesario para optimizar la experiencia. Casí todos nuestros socios lo están utilizando, pienso que realmente hace una mejora importante.”

Sabemos de su existencia por parte de la propia Microsoft y fue mencionado de pasada por uno de los desarrolladores de Metro Redux en una entrevista concedida a Digital Foundry.

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.

Metro Redux fue lanzado a finales de Agosto de 2014 mientras que Microsoft forzo el uso de Direct3D 11 Mono en Mayo de 2014. Esto significa que durante los primeros meses los desarrolladores al ver que podían utilizar el D3D 11 estándar, el cual ya dominaban en PC, decidieron tirar por ese camino lo que suponía una perdida de rendimiento por el hecho de ser una API de alto nivel. ¿Que significa esto? Pues que Xbox One tiene una API de bajo nivel operativa desde Mayo de 2014 y por tanto toda esa narrativa de lo mágico que es Direct3D 12 y como salvará Xbox One es eso, una narrativa innecesaria desde el momento en que la consola tiene su API de bajo nivel totalmente operativa y diseñada alrededor de la consola desde hace meses.

Perdón por el Deja Vu, pero he considerado oportuno recuperar el borrador.

Anuncios