La nueva versión de Vulkan 1.3 ya fue liberada y estas son sus novedades
Después de dos años de trabajo, Khronos dio a conocer la publicación de la nueva versión de la especificación Vulkan 1.3. La nueva especificación incorpora correcciones y ampliaciones acumuladas durante dos años.
Ademas de ello se ha presentado un plan para implementar el soporte para la nueva especificación y extensiones adicionales en tarjetas gráficas y controladores de dispositivos. Intel, AMD, ARM y NVIDIA están preparando productos compatibles con Vulkan 1.3.
Por ejemplo, AMD ha anunciado que la compatibilidad con Vulkan 1.3 pronto estará disponible en la serie de tarjetas gráficas AMD Radeon RX Vega, así como en todas las tarjetas basadas en la arquitectura AMD RDNA. NVIDIA se está preparando para publicar controladores compatibles con Vulkan 1.3 para Linux y Windows, ademas de que ARM agregará compatibilidad con Vulkan 1.3 a las GPU Mali.
Para quienes desconocen de Vulkan, deben saber que esta es una API que se destaca por su simplificación cardinal de los controladores, la eliminación de la generación de comandos de GPU en el lado de la aplicación, la capacidad de conectar capas de depuración, la unificación de API para varias plataformas y el uso de representación de código intermedio precompilado para ejecución en el Lado de la GPU.
Para garantizar un alto rendimiento y previsibilidad, Vulkan proporciona aplicaciones con control directo sobre las operaciones de la GPU y soporte integrado para subprocesos múltiples de GPU, lo que minimiza la sobrecarga del controlador y hace que las capacidades del lado del controlador sean mucho más simples y predecibles. Por ejemplo, las operaciones como la administración de memoria y el manejo de errores implementadas en OpenGL en el lado del controlador se mueven a la capa de aplicación en Vulkan.
Vulkan abarca todas las plataformas disponibles y proporciona una única API para escritorio, dispositivos móviles y la Web, lo que permite utilizar una API común en varias GPU y aplicaciones. Con la arquitectura multicapa de Vulkan que crea herramientas que funcionan con cualquier GPU, los OEM pueden usar herramientas genéricas para la revisión, depuración y creación de perfiles de código durante el desarrollo.
Principales novedades de Vulkan 1.3
En esta nueva versión que se presenta de Vulkan 1.3 se destaca que la especificación SPIR-V 1.6 se actualizó para definir una representación intermedia de sombreadores que es universal para todas las plataformas y se puede usar tanto para gráficos como para computación paralela. SPIR-V implica la separación de una fase de compilación de shaders separada en una representación intermedia, lo que permite crear interfaces para varios lenguajes de alto nivel. Basado en varias implementaciones de alto nivel, se genera por separado un único código intermedio que pueden usar los controladores OpenGL, Vulkan y OpenCL sin usar el compilador de sombreado incorporado.
Otro de los cambios que se destaca es que se propone el concepto de perfiles de compatibilidad. Google es el primero en desarrollar un perfil básico para la plataforma Android que facilitará la determinación del nivel de soporte para las funciones avanzadas de Vulkan en un dispositivo que va más allá de la especificación Vulkan 1.0. Para la mayoría de los dispositivos, se puede proporcionar soporte de perfil sin instalar actualizaciones OTA.
Tambien se destaca la compatibilidad implementada para pases de renderizado simplificados (Streamlining Render Passes , VK_KHR_dynamic_rendering) que permiten comenzar a renderizar sin crear pases de renderizado y objetos framebuffer.
Ademas de ello se han agregado nuevas extensiones para facilitar la gestión de la compilación de una canalización de gráficos:
- VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2: agrega estados dinámicos adicionales para reducir la cantidad de objetos de estado compilados y adjuntos.
- VK_EXT_pipeline_creation_cache_control : proporciona control ampliado sobre cuándo y cómo compilar canalizaciones.
- VK_EXT_pipeline_creation_feedback : proporciona información sobre canalizaciones compiladas para facilitar la creación de perfiles y la depuración.
Por otra parte, tambien se destacan varias características que se han movido de opcionales a obligatorias. Por ejemplo, ahora es obligatorio implementar referencias de búfer (VK_KHR_buffer_device_address) y el modelo de memoria Vulkan, que define cómo los subprocesos paralelos pueden acceder a datos compartidos y operaciones de sincronización.
Ademas de ello se proporciona un control de subgrupos detallado (VK_EXT_subgroup_size_control) donde los proveedores pueden brindar soporte para múltiples tamaños de subgrupos y los desarrolladores pueden elegir el tamaño que deseen.
Se proporcionó una extensión VK_KHR_shader_integer_dot_product que se puede usar para optimizar el rendimiento de los marcos de aprendizaje automático a través de operaciones de productos de puntos acelerados por hardware.
Finalmente cabe señalar que los requisitos de la especificación Vulkan 1.3 están diseñados para el hardware de gráficos de clase OpenGL ES 3.1, lo que garantizará la compatibilidad con la nueva API de gráficos en todas las GPU compatibles con Vulkan 1.2.
El kit de herramientas Vulkan SDK está programado para publicarse a mediados de febrero. Además de la especificación principal, está previsto ofrecer extensiones adicionales para dispositivos móviles y de escritorio de gama media y alta, que serán compatibles como parte de la edición Vulkan Milestone.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.