Publicado el estándar gráfico Vulkan 1.3

Después de dos años de trabajo, el consorcio de estándares gráficos Khronos ha publicado la especificación Vulkan 1.3, que define una API para acceder a las capacidades gráficas y informáticas de las GPU. La nueva especificación incorpora correcciones y ampliaciones acumuladas durante dos años. Cabe señalar que los requisitos de la especificación Vulkan 1.3 están diseñados para equipos gráficos de clase OpenGL ES 3.1, lo que garantizará la compatibilidad con la nueva API de gráficos en todas las GPU que admitan Vulkan 1.2. Está previsto que las herramientas Vulkan SDK se publiquen 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”.

Al mismo tiempo, se presenta un plan para implementar soporte para la nueva especificación y extensiones adicionales en tarjetas gráficas y controladores de dispositivos. Intel, AMD, ARM y NVIDIA se están preparando para lanzar productos compatibles con Vulkan 1.3. Por ejemplo, AMD anunció que pronto admitirá Vulkan 1.3 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. ARM agregará soporte para Vulkan 1.3 a las GPU de Mali.

Principales novedades:

  • Se ha implementado soporte para pases de renderizado simplificados (Streamlining Render Passes, VK_KHR_dynamic_rendering), lo que le permite comenzar a renderizar sin crear pases de renderizado ni objetos framebuffer.
  • Se han agregado nuevas extensiones para simplificar la gestión de la compilación de canalizaciones de gráficos (canalización, un conjunto de operaciones que convierte texturas y primitivas de gráficos vectoriales en representaciones de píxeles).
    • 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 controles avanzados sobre cuándo y cómo se compilan las canalizaciones.
    • VK_EXT_pipeline_creation_feedback: proporciona información sobre canalizaciones compiladas para facilitar la creación de perfiles y la depuración.
  • Varias funciones se han transferido de opcionales a obligatorias. Por ejemplo, ahora son obligatorias la implementación de referencias de búfer (VK_KHR_buffer_device_address) y el modelo de memoria Vulkan, que define cómo los subprocesos concurrentes pueden acceder a datos compartidos y operaciones de sincronización.
  • Se proporciona un control detallado de subgrupos (VK_EXT_subgroup_size_control) para que los proveedores puedan brindar soporte para múltiples tamaños de subgrupos y los desarrolladores puedan seleccionar el tamaño que necesitan.
  • Se ha proporcionado la extensión VK_KHR_shader_integer_dot_product, que se puede utilizar para optimizar el rendimiento de los marcos de aprendizaje automático gracias a la aceleración de hardware de las operaciones del producto escalable.
  • Se incluyen un total de 23 nuevas expansiones:
    • VK_KHR_copy_commands2
    • VK_KHR_renderizado_dinámico
    • VK_KHR_format_feature_flags2
    • VK_KHR_mantenimiento4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocación
    • VK_KHR_sincronización2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formatos
    • VK_EXT_extended_dynamic_state
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_image_robustez
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_datos_privados
    • VK_EXT_shader_demote_to_helper_invocación
    • VK_EXT_subgrupo_tamaño_control
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formatos
  • Se agregó un nuevo tipo de objeto VkPrivateDataSlot. Se implementaron 37 nuevos comandos y más de 60 estructuras.
  • La especificación SPIR-V 1.6 se actualizó para definir una representación de sombreador intermedio que es universal para todas las plataformas y puede usarse tanto para gráficos como para computación paralela. SPIR-V implica separar una fase de compilación de sombreadores separada en una representación intermedia, lo que le 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 utilizar los controladores OpenGL, Vulkan y OpenCL sin utilizar el compilador de sombreado integrado.
  • Se propone el concepto de perfiles de compatibilidad. Google es el primero en lanzar un perfil básico para la plataforma Android, que facilitará la determinación del nivel de soporte para las capacidades avanzadas de Vulkan en un dispositivo más allá de la especificación Vulkan 1.0. Para la mayoría de los dispositivos, se puede proporcionar compatibilidad con perfiles sin instalar actualizaciones OTA.

Recordemos que la API de Vulkan destaca por la simplificación radical de los controladores, la transferencia de la generación de comandos de GPU al lado de la aplicación, la capacidad de conectar capas de depuración, la unificación de la API para varias plataformas y el uso de una API precompilada. Representación intermedia de código 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 GPU y soporte nativo 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, operaciones como la gestión de memoria y el manejo de errores, implementadas en OpenGL en el lado del controlador, se trasladan al nivel de aplicación en Vulkan.

Vulkan abarca todas las plataformas disponibles y proporciona una única API para escritorio, dispositivos móviles y web, lo que permite utilizar una API común en múltiples GPU y aplicaciones. Gracias a la arquitectura multicapa de Vulkan, lo que significa herramientas que funcionan con cualquier GPU, los OEM pueden utilizar herramientas estándar de la industria para revisar, depurar y crear perfiles de código durante el desarrollo. Para crear sombreadores, se propone una nueva representación intermedia portátil, SPIR-V, basada en LLVM y que comparte tecnologías centrales con OpenCL. Para controlar dispositivos y pantallas, Vulkan ofrece la interfaz WSI (Window System Integration), que resuelve aproximadamente los mismos problemas que EGL en OpenGL ES. La compatibilidad con WSI está disponible de fábrica en Wayland: todas las aplicaciones que utilizan Vulkan pueden ejecutarse en un entorno de servidores Wayland no modificados. La capacidad de trabajar a través de WSI también se proporciona para Android, X11 (con DRI3), Windows, Tizen, macOS e iOS.

Fuente: opennet.ru

Añadir un comentario