Después de casi tres años de trabajo, el consorcio Khronos, que se encarga del desarrollo de estándares gráficos, ha publicado la especificación Vulkan 1.4, que define la API para acceder a las capacidades gráficas y de cálculo de las GPU. La nueva especificación ha incorporado las extensiones acumuladas, que anteriormente se presentaban como opcionales, así como ha ofrecido una serie de nuevas funciones y ha aumentado los requisitos mínimos de hardware. Se planea publicar el kit de herramientas Vulkan SDK en enero de 2025.
Los productos compatibles con Vulkan 1.4 están preparados para ser lanzados por las empresas AMD, Arm, Imagination, Intel, NVIDIA, Qualcomm y Samsung. Los controladores abiertos para GPU AMD (radv), Apple M1/M2 (honeykrisp), Intel (anv), NVIDIA (nvk) y Qualcomm (tu), desarrollados por el proyecto Mesa, ya han pasado todas las pruebas de compatibilidad con Vulkan 1.4 del conjunto CTS (Khronos Conformance Test Suite) y han sido incluidos en la lista de controladores certificados. También están incluidos los controladores de Samsung y Qualcomm para la plataforma Android, así como los controladores para GPU PowerVR D-Series DXT* de Imagination Technologies y los controladores propietarios de NVIDIA.
Novedades principales:
- Se ha añadido soporte para el mecanismo de «Streaming Transfers», destinado a garantizar la transmisión de grandes volúmenes de datos entre el sistema principal (host) y el dispositivo gráfico, sin interrumpir el renderizado ni ralentizar su rendimiento. Este mecanismo se implementa mediante una nueva extensión VK_EXT_host_image_copy, cuyo soporte es opcional.
- Se han clasificado como obligatorias las funciones orientadas a mejorar el rendimiento:
- Push Descriptors — una función que permite escribir actualizaciones de descriptores directamente en el búfer de comandos, en lugar de crear conjuntos de descriptores separados y enlazarlos al búfer de comandos.
- VK_KHR_dynamic_rendering_local_read — permite realizar lecturas de los búferes incrustados (attachments) y recursos escritos por shaders de fragmentos anteriores dentro de los pasos de renderizado dinámico (render pass).
- VK_EXT_scalar_block_layout — permite utilizar una estructura similar a C para bloques SPIR-V, donde se pueden alinear tipos no escalares según el tamaño de sus componentes.
- Se incluyen las extensiones VK_KHR_maintenance5 y VK_KHR_maintenance6, que proporcionan comandos y estructuras auxiliares para simplificar la gestión de recursos y shaders.
- Se garantiza el soporte de renderizado con una resolución de 8K (7680 x 4320 píxeles) y utilizando hasta 8 buffers de renderizado independientes.
- Incluye las siguientes extensiones:
- VK_KHR_global_priority
- VK_KHR_index_type_uint8
- VK_KHR_line_rasterization
- VK_KHR_load_store_op_none
- VK_KHR_map_memory2
- VK_KHR_push_descriptor
- VK_KHR_shader_expect_assume
- VK_KHR_shader_float_controls2
- VK_KHR_shader_subgroup_rotate
- VK_KHR_vertex_attribute_divisor
- VK_EXT_pipeline_protected_access
- VK_EXT_pipeline_robustness
- Se han convertido en obligatorias muchas funcionalidades que antes eran opcionales.
- Se ha añadido una gran cantidad de nuevos comandos y estructuras.
La API de Vulkan se destaca por la simplificación radical de los controladores, la transferencia de la generación de comandos GPU al lado de la aplicación, la posibilidad de conectar capas de depuración, la unificación de APIs para diferentes plataformas y la utilización de una representación intermedia de código precompilada para su ejecución en el lado de la GPU.
Para asegurar un alto rendimiento y previsibilidad, Vulkan proporciona a las aplicaciones herramientas para gestionar directamente las operaciones de la GPU y soporte incorporado para el procesamiento multihilo de comandos de GPU, minimizando la sobrecarga impuesta por el controlador, lo que simplifica y vuelve más predecibles las funcionalidades implementadas en el lado del controlador. Por ejemplo, operaciones como la gestión de memoria y el manejo de errores, que se implementan en OpenGL en el controlador, en Vulkan se trasladan al nivel de la aplicación.
Vulkan abarca todas las plataformas disponibles y proporciona una API única para sistemas de escritorio, móviles y web, permitiendo utilizar una API común para diferentes procesadores gráficos y áreas de aplicación. Gracias a la arquitectura de múltiples capas de Vulkan, que implica la creación de herramientas que funcionan con cualquier GPU, los fabricantes de hardware pueden utilizar herramientas estándar en el desarrollo para verificar código, depurar y perfilar.
Para crear sombreados se ofrece una representación intermedia portátil SPIR-V, basada en LLVM y que utiliza tecnologías básicas comunes con OpenCL. Con Vulkan también se puede utilizar el lenguaje de sombreado HLSL, aplicado en DirectX, a través de su traducción a SPIR-V. Para controlar dispositivos y pantallas en Vulkan, se ofrece una interfaz WSI (Integración del Sistema de Ventanas), que resuelve aproximadamente las mismas tareas que EGL en OpenGL ES. El soporte de WSI está disponible de forma nativa en Wayland: todas las aplicaciones que utilizan Vulkan pueden ejecutarse en un entorno sin modificaciones. servidores Wayland. La posibilidad de trabajar a través de WSI también está disponible para Android, X11 (con DRI3), Windows, Tizen, macOS e iOS.
Fuente: opennet.ru
