GLnext ha muerto, ¡Larga vida a Vulkan!

Noticias de Portada. Cualquier hilo iniciado aqui aparecera en Portada.

GLnext ha muerto, ¡Larga vida a Vulkan!

Notapor f5inet » 06 Mar 2015, 14:14

Imagen

El grupo Khronos ha hecho tres grandes anuncios en la GDC 2015: Vulkan (hasta ahora conocido como GLnext, principal competidor de DirectX12), OpenCL 2.1 y SPIR-V.

Antes de entrar en lo que todo lo que es y hace, vamos a rascar un poco en la superficie para ponernos en situacion. En primer lugar, Khronos diseña sus tecnologías para ser autosuficientes. Como tal, mientras que habrá algunos requisitos mínimos de hardware, el sistema operativo más o menos sólo necesitara tener un controlador compatible Vulkan. Vulkan no se limitará a Windows 10. Si un proveedor de GPUs quiere tomarse la molestia de desarrollar el driver, titanica en si misma, Vulkan puede usarse en Windows 8.x, Windows 7, Windows Vista, y posiblemente, a pesar de sus peculiaridades, tal vez incluso en Windows XP.

Aparte de Windows, el grupo Khronos es el proveedor dominante en el resto de plataformas. Es de esperar que Vulkan este disponible en Linux, Mac, sistemas operativos moviles y donde quiera que haya una GPU. A proposito de eso, no habra ningun 'Vulkan ES'. Vulkan es Vulkan, y correra por igual en escritorios, moviles, gafas de realidad virtual, consolas que sean lo suficientemente abiertas e incluso coches y robots. Desde el punto de vista de Hardware, cualquier trasto que soporte OpenGL ES 3.1 podra soportar Vulkan. Este requisito puede parecer algo elevado para dispositivos moviles, pero es la version mas baja de OpenGL ES que soporta 'compute shaders', que es un componente esencial de Vulkan (Lo siento Wii-U, Vulkan no sera para ti, me temo). El presentador no hizo ninguna referencia a los requisitos para ordenadores Desktop, aunque no parecio darle ninguna importancia al respecto. De todas formas, seran los fabricantes quienes tengan que hacer los anuncios oficiales sobre la compatibilidad con Vulkan.

¿Que es lo que Vulkan hace mejor y en que se diferencia de Mantle?
El trabajo principal de un API de gráficos es hacer todas las tareas necesarias para que una GPU presente los objetos que se elaboran de acuerdo a su geometría y materiales. Sobre todo, esto significa mantener los shaders de la GPU cargado con tanto trabajo relevante como puedan. Esto ayuda a aumentar el número de lotes(batches) por frame, que es a menudo un lote(batch) por objeto/material.

Esto es donde Mantle y DirectX 12 brillan: un monton de drawcalls para un monton de objetos en escena. También permite reducir el uso de CPU, ya que cada hilo/thread es más sencillo, y múltiples núcleos pueden arrimar el hombro, todo lo cual redunda en un menor consumo de energía (especialmente útil para aplicaciones móviles que traen una gran cantidad de objetos simples). Vulkan hace todo esto. La creación de "Commands Buffers" se puede hacer en varios subprocesos mientras otro hilo ensambla y gestiona una cola de comandos que alimentara a la GPU.

Vulkan incluso permite que el desarrollador de juegos pueda desactivar la mayor parte de la comprobación de errores para el código de producción. En lugar de tener a la API vigilando por encima del hombro del desarrollador del juego para asegurarse de que no haga nada malo, como OpenGL y OpenGL ES hace, ahora la API 'confia' en el buen hacer del desarrollador y realizara gran parte de los mandatos sin demasiado enfasis en el control de errores. Con esto, el driver puede ser mas sencillo y el desarrollador no tiene que esperar a que el controlador de el visto bueno a los comandos para seguir trabajando, haciendo la parte dependiente de CPU mas eficiente.

El Grupo Khronos también ha afinado el lado GPU. Hasta ahora, hemos tenido una guerra entre GLSL en OpenGL y HLSL en DirectX. HLSL fue muy popular debido a que Windows y Xbox son plataformas muy populares para juegos. Cuando AMD hizo Mantle, uno de sus puntos de venta era que el lenguaje de 'shading' era sólo HLSL. Esto significaba que los desarrolladores de juegos pueden seguir usando el lenguaje de shader que saben, y AMD no necesitaría mantener toda una cadena de compilador / intérprete independiente.

Cuando no estas limitado por las restricciones de draw calls, otro cuello de botella podría ser la cantidad de codigo que puedes procesar a través de los shaders. Un buen ejemplo de incrementar la carga sobre shaders estaría aumentando resolución (a no ser que se quede sin memoria de vídeo o ancho de banda de memoria de vídeo en primer lugar). Cuando AMD eligió HLSL, significaba que podían hacer que los shaders de Mantle podian correr tan rápido como los shaders de DirectX. Esto quiere decir que no estarían limitando una GPU potente al tener una CPU debil.

Khronos está haciendo algo completamente distinto.

En lugar de adoptar HLSL o la esperanza de que los desarrolladores de controladores podrían mantener la paridad entre GLSL y HLSL, eliminaron completamente la compilación del shader desde el controlador. Inpirandose en su trabajo en OpenCL 2, los shaders en Vulkan serán compilados por los desarrolladores de juegos en un bytecode derivado de LLVM, llamado SPIR-V. El driver sólo tiene que aceptar esta representación intermedia pre-compilada y aplicarlo a su arquitectura.

Esto implica varias cosas interesantes. Primero, los desarrolladores pueden escribir su codigo fuente en el lenguaje que prefieran. HLSL y GLSL estan basados en un subconjunto de C, mientras que SPIR-V puede ser un subconjunto de C++, algun lenguaje de script, o incluso HLSL. Khronos esta actualmente trabajando en un compilador GLSL -> SPIR-V.

Esto no sólo disminuye el tiempo de compilación del shader, porque SPIR-V es pre-compilado, sino que esto probablemente significa que un shader SPIR-V será mucho más simple que el equivalente GLSL o HLSL. Estos lenguajes tienen construcciones especificas de matematica vectorial y matricial, procesamiento de textura, y así sucesivamente.

Todo este lenguaje intermedio SPIR-V, el compilador GLSL->SPIR-V, los shaders escritos en cualquier lenguaje, y todo lo demas, que pudiera parecer muy complejo y que fuese algo que jamas van a integrar los drivers de GPU, es algo que ya estan haciendo actualmente con OpenCL. un compute shader OpenCL se puede escribir en cualquier lenguaje y luego es compilado a un codigo intermedio, que en tiempo de ejecucion es traducido al bytecode de la unidad de computo donde se va a ejecutar. No es mas que aplicar lo mismo que actualmente se esta haciendo con OpenCL, pero a nivel de shaders de OpenGL.

Las especificaciones de OpenCL 2.1 y SPIR-V fueron liberadas ayer. Vulkan aun no, pero se espera que este disponible "antes de final de 2015". El presentador tambien hizo hincapié en que "antes de final de 2015" puede ser mucho antes de lo que la frase puede dar a entender.

La presentacion:


https://www.khronos.org/assets/uploads/ ... -Mar15.pdf
https://www.khronos.org/assets/uploads/ ... _Mar15.pdf
Mike escribió:
No hemos sido ni locos, ni profetas. Tan solo hemos sido hombres honestos.[...] Hemos pasado de ser una secta, a ser la única web en ESPAÑA que ha traido la verdad desde el principio.
Avatar de Usuario
f5inet
HSA Gurú
HSA Gurú
 
Mensajes: 1714
Registrado: 08 Jun 2014, 23:20
Has thanked: 64 times
Been thanked: 787 times

Re: GLnext ha muerto, ¡Larga vida a Vulkan!

Notapor Lolako » 06 Mar 2015, 15:04

Antes de nada, gracias por el post, muy interesante.

Pues no sé si es una gran noticia o es para estar preocupado, hablando de videoconsolas.

Según deduzco, Playstation 4 puede beneficiarse considerablemente con Vulkan, ¿no?
Imagen
Avatar de Usuario
Lolako
Usuario de TG
Usuario de TG
 
Mensajes: 451
Registrado: 05 Sep 2014, 17:36
Ubicación: Barcelona
Has thanked: 29 times
Been thanked: 80 times

Re: GLnext ha muerto, ¡Larga vida a Vulkan!

Notapor FLASHBACKMAN » 06 Mar 2015, 15:44

Lolako escribió:Antes de nada, gracias por el post, muy interesante.

Pues no sé si es una gran noticia o es para estar preocupado, hablando de videoconsolas.

Según deduzco, Playstation 4 puede beneficiarse considerablemente con Vulkan, ¿no?


Igual que de Mantle.

Pero el problema es que hay mejoras "limitadas" vía hardware.
Para que estas APIs luzcan se necesitan multiples interpretes, paralelización real, a través de todo el sistema para que "varios Pipes" gestionen todo eso con armonía y flow.

Y lamentablemente PS4 es una tecnología moderna. No es Next Gen.
[+] SPOILER (click para abrir)
Tal y como alguien me dijo hace unos meses... "Mike, your work is done" You've got it.Imagen

Imagen
Avatar de Usuario
FLASHBACKMAN
Nostradamus Digital
Nostradamus Digital
 
Mensajes: 8829
Registrado: 20 Jun 2014, 20:00
Ubicación: Barcelona
Has thanked: 2152 times
Been thanked: 2871 times

Re: GLnext ha muerto, ¡Larga vida a Vulkan!

Notapor Sumotai » 06 Mar 2015, 17:21

Pues si es parecido a Mantle ya Cerny y Dice aclararon que la Api de Ps4 ya tiene soluciones similares y no necesita esto. Sin ser util en consolas, y con Dx12 en Pc y Movil Phone, no se que futuro tiene Vulkan. Android?
Imagen
Avatar de Usuario
Sumotai
Usuario de TG
Usuario de TG
 
Mensajes: 2246
Registrado: 27 Jun 2014, 19:19
Has thanked: 154 times
Been thanked: 540 times

Re: GLnext ha muerto, ¡Larga vida a Vulkan!

Notapor Lolako » 06 Mar 2015, 17:34

Sumotai escribió:Pues si es parecido a Mantle ya Cerny y Dice aclararon que la Api de Ps4 ya tiene soluciones similares y no necesita esto. Sin ser util en consolas, y con Dx12 en Pc y Movil Phone, no se que futuro tiene Vulkan. Android?


Es libre, lo soporta cualquier hardware compatible con OpenGL 3.1, Source y Unreal Engine lo soportarán, en PC no sólo existe W10, está Linux/MacOS X, Valve está detrás, entre otras muchas compañías, ...

Yo si le veo futuro.
Imagen
Avatar de Usuario
Lolako
Usuario de TG
Usuario de TG
 
Mensajes: 451
Registrado: 05 Sep 2014, 17:36
Ubicación: Barcelona
Has thanked: 29 times
Been thanked: 80 times

Re: GLnext ha muerto, ¡Larga vida a Vulkan!

Notapor Mattmaddrid » 06 Mar 2015, 21:58

Gracias F5inet!! Buen post explicado claro para todo el público más o menos entendido. Lo mejor que podría pasarle a Microsoft son competidores para que cada solución de programación a bajo nivel inspire una lucha sana que beneficie a medio y largo plazo al consumidor. Lo que no tengo claro es la solución que ha determinado Valve con sus Steam Machines y el hecho de adaptar hardware a esta API... Iremos viendo más adelante.
Imagen
Avatar de Usuario
Mattmaddrid
Usuario de TG
Usuario de TG
 
Mensajes: 2109
Registrado: 28 Jun 2014, 17:53
Ubicación: Navalcarnero (España)
Has thanked: 1260 times
Been thanked: 454 times


Volver a Portada