Vulkan es el nuevo estándar abierto para un API gráfico. Se le conoce coloquialmente como la siguiente generación de OpenGL. Khronos, que es un consorcio que trabaja en ciertos esatándares, por ejemplo en paralelismo, ha puesto un avance sobre los detalles técnicos. Igualmente, se ha liberado una especificación provisional para Open CL 2.1.
Vulkan es el resultado de todo un nuevo diseño para OpenGL, un API que no solamente toma en cuenta la parte gráfica, sino también la del procesamiento de información. El cambio de nombre refleja el hecho de que, lamentablemente, el nuevo estándar no es compatible hacia atrás con OpenGL. Y esto en general siempre es una dificultad, porque se obliga a los programadores a reaprender lo que ya sabían hacer muy bien en el estándar anterior. Sin embargo, a veces hay que tomar estas decisiones para mejorar significativamente estos estándares.
P
Vulkan es una especificación unificada que minimiza el uso del manejador gráfico y permite comandos para la GPU que sea multihilos (multithread) para poder sacar ventaja óptima de las plataformas móviles, de escritorio, de consola e incluso sistemas embebidos. La especificación e implementación inicial se espera para este mismo año y se hace un llamado, por parte de Khronos, a las compañías interesadas en participar en este desarrollo.
Microsoft se unió a Khronos el pasado agosto (2014) y no cabe duda que esto tiene que ver con el hecho de que Vulkan hace a una lado a OpenGL en la manera de manejar los programas “shaders”, favoreciendo el enfoque de Direct 3D. Los desarrolladores pueden compilar los shaders en una forma intermedia llamada SPIR-V. Se afirma que SPIR-V es el primer estándar API abierto de plataformas cruzadas en forma de un lenguaje intermedio para el cómputo en paralelo y las gráficas. Esto permite a los desarrolladores el poder usar el mismo compilador para cualquier otra plataforma, facilitando la portabilidad, el viejo sueño de todos los programadores “write once, run everywhere”.
SPIR-V será usado tanto por Vulkan como por OpenCL 2.1, y ya la especificación provisional ha sido liberada. Su característica más importante es que introduce un nuevo lenguaje para el kérnel basado en un subconjunto de C++.
De acuerdo al comunicado de prensa: “El lenguaje del kérnel OpenCL C++ mejorará significativamente la productividad de la programación en paralelo dando funciones lambda, clases, templates, operadores, sobrecarga y muchas otras características de C++ para liberar a los desarrolladores de la codificación de bajo nivel sin sacrificar el desempeño”.
Referencias: