Estándar de gráficos Vulkan 1.3 publicado

Despois de dous anos de traballo, o consorcio de estándares gráficos Khronos publicou a especificación Vulkan 1.3, que define unha API para acceder ás capacidades gráficas e informáticas das GPU. O novo prego incorpora correccións e ampliacións acumuladas ao longo de dous anos. Nótese que os requisitos da especificación Vulkan 1.3 están deseñados para equipos gráficos da clase OpenGL ES 3.1, o que garantirá o soporte para a nova API de gráficos en todas as GPU que admitan Vulkan 1.2. Está previsto que as ferramentas Vulkan SDK se publiquen a mediados de febreiro. Ademais da especificación principal, está previsto ofrecer extensións adicionais para dispositivos móbiles e de escritorio de gama media e alta, que serán compatibles como parte da edición "Vulkan Milestone".

Ao mesmo tempo, preséntase un plan para implementar soporte para a nova especificación e extensións adicionais en tarxetas gráficas e controladores de dispositivos. Intel, AMD, ARM e NVIDIA prepáranse para lanzar produtos compatibles con Vulkan 1.3. Por exemplo, AMD anunciou que en breve admitirá Vulkan 1.3 na serie de tarxetas gráficas AMD Radeon RX Vega, así como en todas as tarxetas baseadas na arquitectura AMD RDNA. NVIDIA prepárase para publicar controladores compatibles con Vulkan 1.3 para Linux e Windows. ARM engadirá soporte para Vulkan 1.3 ás GPU de Mali.

Principais novidades:

  • Implementouse o soporte para pases de renderizado simplificados (Racionalización de pases de renderizado, VK_KHR_dynamic_rendering), o que lle permite comezar a renderizar sen crear pases de renderizado e obxectos de framebuffer.
  • Engadíronse novas extensións para simplificar a xestión da compilación de pipeline de gráficos (pipeline, un conxunto de operacións que converte as primitivas e texturas de gráficos vectoriais en representacións de píxeles).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2: engade estados dinámicos adicionais para reducir o número de obxectos de estado compilados e anexos.
    • VK_EXT_pipeline_creation_cache_control - Ofrece controis avanzados sobre cando e como se compilan as canalizacións.
    • VK_EXT_pipeline_creation_feedback: ofrece información sobre canalizacións compiladas para facilitar a creación de perfís e a depuración.
  • Unha serie de funcións foron transferidas de opcional a obrigatoria. Por exemplo, a implementación de referencias ao búfer (VK_KHR_buffer_device_address) e o modelo de memoria Vulkan, que define como os fíos simultáneos poden acceder aos datos compartidos e ás operacións de sincronización, agora son obrigatorios.
  • Ofrécese un control detallado de subgrupos (VK_EXT_subgroup_size_control) para que os provedores poidan ofrecer soporte para varios tamaños de subgrupos e os desenvolvedores poden seleccionar o tamaño que necesitan.
  • Proporcionouse a extensión VK_KHR_shader_integer_dot_product, que se pode usar para optimizar o rendemento dos marcos de aprendizaxe automática grazas á aceleración de hardware das operacións do produto de puntos.
  • Inclúense un total de 23 novas expansións:
    • VK_KHR_copiar_comandos2
    • VK_KHR_renderizado_dinámico
    • VK_KHR_format_feature_flags2
    • VK_KHR_mantemento4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_sincronización2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formats
    • VK_EXT_estado_dinámico_estendido
    • VK_EXT_estado_dinámico_estendido2
    • VK_EXT_robusteza da imaxe
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_data_privados
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_control_tamaño_subgrupo
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Engadiuse un novo tipo de obxecto VkPrivateDataSlot. Implantáronse 37 novos comandos e máis de 60 estruturas.
  • A especificación SPIR-V 1.6 actualizouse para definir unha representación de sombreado intermedio que é universal para todas as plataformas e que se pode usar tanto para gráficos como para computación paralela. SPIR-V implica separar unha fase separada de compilación de sombreadores nunha representación intermedia, que lle permite crear frontends para varias linguaxes de alto nivel. Baseándose en varias implementacións de alto nivel, xérase un único código intermedio por separado, que pode ser usado polos controladores OpenGL, Vulkan e OpenCL sen usar o compilador de sombreadores integrado.
  • Proponse o concepto de perfís de compatibilidade. Google é o primeiro en lanzar un perfil de referencia para a plataforma Android, o que facilitará determinar o nivel de compatibilidade das capacidades avanzadas de Vulkan nun dispositivo máis aló da especificación Vulkan 1.0. Para a maioría dos dispositivos, pódese proporcionar soporte de perfil sen instalar actualizacións OTA.

Lembremos que a API de Vulkan destaca pola súa radical simplificación de controladores, a transferencia da xeración de comandos da GPU ao lado da aplicación, a capacidade de conectar capas de depuración, a unificación da API para varias plataformas e o uso dun programa precompilado. representación intermedia do código para a súa execución no lado da GPU. Para garantir un alto rendemento e previsibilidade, Vulkan ofrece ás aplicacións control directo sobre as operacións da GPU e soporte nativo para a multiproceso de GPU, o que minimiza a sobrecarga do controlador e fai que as capacidades do lado do controlador sexan moito máis sinxelas e previsibles. Por exemplo, operacións como a xestión de memoria e a xestión de erros, implementadas en OpenGL no lado do controlador, móvense ao nivel de aplicación en Vulkan.

Vulkan abarca todas as plataformas dispoñibles e ofrece unha única API para escritorio, móbil e web, o que permite usar unha API común en varias GPU e aplicacións. Grazas á arquitectura multicapa de Vulkan, o que significa ferramentas que funcionan con calquera GPU, os OEM poden usar ferramentas estándar do sector para a revisión do código, a depuración e o perfilado durante o desenvolvemento. Para a creación de sombreadores, proponse unha nova representación intermedia portátil, SPIR-V, baseada en LLVM e compartindo tecnoloxías fundamentais con OpenCL. Para controlar dispositivos e pantallas, Vulkan ofrece a interface WSI (Window System Integration), que resolve aproximadamente os mesmos problemas que EGL en OpenGL ES. A compatibilidade con WSI está dispoñible en Wayland: todas as aplicacións que usan Vulkan poden executarse nun ambiente de servidores Wayland sen modificar. Tamén se ofrece a posibilidade de traballar a través de WSI para Android, X11 (con DRI3), Windows, Tizen, macOS e iOS.

Fonte: opennet.ru

Engadir un comentario