Consolas y APIs de bajo nivel

Comentario #1:

Urian, creo que algunos no han entendido la diferencia entre alto nivel y bajo nivel, y por eso se empeñan en la ganancia de rendimiento con DX12. Con DX12 habra ganancia de rendimiento con respecto a los mismo hecho en DX11, pero siempre tendrá peor rendimiento que algo hecho a bajo nivel (METAL) accediendo directamente al hardware y optimizandolo para ese hardware. A expensas de perder la portabilidad.

Por fin alguien ha entendido el mensaje, te mereces un aplauso. Applause El gran problema que tienen la mayoría de APIs de alto nivel actual (Derivados de OpenGL por un lado y Direct3D por el otro) es que sí hacemos un símil entonces vemos que funcionan como el departamente de logística interno de una empresa en la que un solo operario y no varios hacen el trabajo de enviar las tareas al departamento gráfico. Es por ello que los diferentes fabricantes de APIs han anunciado APIs de bajo nivel por el hecho que las de alto nivel son un cuello de botella.  Tenemos ya dos ejemplos en el mercado que son en primer lugar,  la API Metal de Apple : Cmd-Model-threads_2x Y por el otro Mantle de AMD: VjbqGo6 Pero ambas APIs de bajo nivel tienen truco, desde que Apple solo utiliza la arquitectura PowerVR Series 6 “Rogue” y derivados puede realizar la tarea de escribir directamente sobre el búfer de comandos y no necesitar un controlador y lo mismo podemos hablar de Mantle que funciona bajo la arquitectura GCN 1.1 de AMD. El hecho de escribir directamente al búfer de comandos es como si tuvieses el departamento gráfico al lado del departamento de dirección y pudieses entregarles directamente las directrices sin que haya un departamento de logística. ¿La desventaja de las APIs de bajo nivel? Pues que el manejo de los recursos se tiene que manejar de forma manual al 100% por lo que la aplicación  es la que se comunica con la GPU de forma directa y esto lo que lleva consigo es que la potabilidad del código se vea completamente comprometida a no ser que en una misma generación las consolas compartan un mismo set de instrucciones. La siguiente diapositiva es de la presentación de Direct3D/DirectX 12: phpyvyzpmp1010608u3x4k   Esta diapositiva es clave, Direct3D 12 no es descrita por Microsoft como una API de bajo nivel sino como una API de más bajo nivel que Direct3D 11, ¿como? dejando que la aplicación tenga acceso directo a ciertas funciones de la GPU pero no al 100% ya que en este caso tenemos un controlador por la disparidad existente entre los sets de instrucciones de arquitecturas gráficas dentro del mundo del PC. En Xbox One en cambio al haber un solo hardware entonces se supone que la API va dar el acceso a bajo nivel en lo que a la GPU se refiere, pero he aquí la historia que los que están dibujando el DX12 como el salvador de Xbox One obvian, ya existe una API de bajo nivel en Xbox One. ¿Como lo sabemos? Para empezar por la entrevista que concedió uno de los desarrolladores de Metro Redux a Digital Foundry donde dijo 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.

El hecho de nombrar GNM (la API de bajo nivel de PS4) es importante ya que nos da pistas sobre como puede ser esta API de bajo nivel: Captura de pantalla 2014-11-16 a la(s) 13.16.33 Captura de pantalla 2014-11-16 a la(s) 13.14.31 La segunda fuente son los arquitectos de Xbox One:

Hemos hecho mucho trabajo para quitar un montón de sobrecarga en términos de la implementación y para una consola podemos hacerlo de tal manera que cuando haces una llamada a la API D3D esta escribe directamente sobre el búfer de comandos para actualizar los registros de la GPU sin que haya ninguna otra llamada de funciones. No hay capas y capas de software. Hemos hecho un montón de trabajo en ese aspecto.

Dicho de otra manera, existe actualmente una API gráfica de bajo nivel en Xbox One que convierte en algo superfluo lo de DX12 por lo que el mensaje que se esta cacareando desde ciertos círculos no se sostiene y se cae por completo. La situación real de Xbox One es la misma que tuvo PS3 donde la primera generación de juegos se hizo bajo una API de alto nivel PSGL para luego pasar al libGCM (la API de bajo nivel de PS3) y ver como los juegos dieron un salto cualitativo. En el caso de One ocurrirá lo mismo para cuando los desarrolladores empiecen a lanzar los primeros juegos utilizando la API de bajo nivel, pero no hay que olvidar que PS4 también tiene una API de bajo nivel y existe una diferencia física (hardware) que es insalvable. Comentario#2: 

Me parece que Microsoft y algunos desarrolladores ya han dicho varias veces que sí está pensada para DX12, paso de buscar la fuente, esto ya lo tendrias que tener mas que sabido y asumido Urian, tu hablas mucho de fuentes primarias como las llamas, pero según para que te interesen, por ejemplo, es cierto que One tiene ya una api de bajo nivel, pero no está optimizada, ya lo dijeron los de Turn 10 y Phil Spencer, One tiene algunas cosas de DX12, pero Full DX12 llegará mas adelante. La verdad no se a que viene esto ahora de que Xbox One no se hizo pensando en DX12, sino en DX11, pensaba que eso ya lo habiamos superado, en fin parece que el downgrade de One vuelve precisamente cuando la consola ha ido mejorando su rendimiento cada vez que Microsoft actualiza los sdk. Saludos.

Confundes churras con merinas, el hecho que soporte DX12 es igual desde el momento en que ya existe una API de bajo nivel en Xbox One por lo que la necesidad que pretende cubrir en la consola ya esta cubierta. Por otro lado… ¿Una API de bajo nivel que no esta optimizada?… 11993d1335488597-ayuda-volumen-o-definir-hahahaha Una API de bajo nivel que da acceso directo al búfer de comandos es lo más optimizado que hay en cuanto a rendimiento y actualmente ya tenemos eso en Xbox One por lo que DX12 no va en ese sentido ya que por si misma es una API gráfica de más bajo nivel que DX11 pero no es la API de bajo nivel de la consola. ¿Como me atrevo a decir esto? Pues por el hecho que son palabras de Sebastian Aaltonen, desarrollador del Trials HD para Xbox One y PS4 que utiliza en foros el nick de sebbbi y es muy prolífico en foros como Beyond3D. En uno de sus mensajes en dicho foro dice esto: Captura de pantalla 2014-11-22 a la(s) 13.50.22   Sebbbi diciendo que las APIs de consola son de más bajo nivel que DX12… ¿entonces que utilidad tiene DX12? Pues será la nueva API de alto nivel de la consola, obviamente sí Sony no mejora el GNMX (su API de alto nivel) en los juegos que utilicen las APIs de alto nivel se recortara la diferencia. Por otro lado no se de que Phil Spencer me habláis cuando este ya ha dejado bien claro que el DX12 no será un salto sustancial: SpencerDX12 La última ha sido lo siguiente:

En el tema del DX12, fui preguntado anteriormente por la gente sobre sí el DX12 iba a incrementar las capacidades gráficas de la Xbox One y les dije que no lo haría. No estoy intentando joder a nadie, pero la CPU, la GPU y la memoria que están en Xbox One no van a  cambiar cuando utilizas DX12. Lo que hace DX12 es facilitar algunas de las cosas en las que Xbox One ya es buena en ello, lo cual estará bien y veréis mejoras en los juegos que lo utilicen, pero la gente me pregunta sí será un cambió dramáticoy pienso que respondí no en su tiempo y diré lo mismo.

Obviamente se refiere al salto desde DX11 a DX12, pero si hablamos de la API de bajo nivel de la consola (la cual ya pueden utilizar los desarrolladores) no es necesario dar el salto, aunque dicha API de bajo nivel va en contra de la potabilidad de juegos entre plataformas. ¿Pero si supuestamente ambas GPUs utilizan la arquitectura GCN 1.1/Sea Islands? Pues por el hecho que aunque la arquitectura sea la misma Microsoft modifico el procesador de comandos de la GPU, seguramente adrede para evitar la portabilidad de un sistema a otro del código gráfico a bajo nivel.

En conclusión, esto significa que todo el argumentario en ciertos foros acerca de DX12 siendo la Parusia de Xbox One es completamente falso y por tanto una pérdida de tiempo. Dicho de otra manera: Creéis en una falsedad, ahora la negáis e incluso atacáis a aquellos que os lo están señalando pero al final aceptareis la verdad.

Anuncios