Padrão gráfico Vulkan 1.3 publicado

Após dois anos de trabalho, o consórcio de padrões gráficos Khronos publicou a especificação Vulkan 1.3, que define uma API para acessar os recursos gráficos e computacionais das GPUs. A nova especificação incorpora correções e extensões acumuladas ao longo de dois anos. Observa-se que os requisitos da especificação Vulkan 1.3 são projetados para equipamentos gráficos da classe OpenGL ES 3.1, o que garantirá suporte para a nova API gráfica em todas as GPUs que suportam Vulkan 1.2. As ferramentas Vulkan SDK estão planejadas para serem publicadas em meados de fevereiro. Além da especificação principal, está prevista a oferta de extensões adicionais para dispositivos móveis e desktop de gama média e alta, que serão suportadas como parte da edição “Vulkan Milestone”.

Ao mesmo tempo, é apresentado um plano para implementar suporte para a nova especificação e extensões adicionais em placas gráficas e drivers de dispositivos. Intel, AMD, ARM e NVIDIA estão se preparando para lançar produtos com suporte ao Vulkan 1.3. Por exemplo, a AMD anunciou que em breve oferecerá suporte ao Vulkan 1.3 na série de placas gráficas AMD Radeon RX Vega, bem como em todas as placas baseadas na arquitetura AMD RDNA. A NVIDIA está se preparando para publicar drivers com suporte para Vulkan 1.3 para Linux e Windows. ARM adicionará suporte para Vulkan 1.3 às GPUs do Mali.

Principais inovações:

  • Foi implementado suporte para passagens de renderização simplificadas (Streamlining Render Passes, VK_KHR_dynamic_rendering), permitindo iniciar a renderização sem criar passagens de renderização e objetos framebuffer.
  • Novas extensões foram adicionadas para simplificar o gerenciamento de compilação de pipeline gráfico (pipeline, um conjunto de operações que transforma primitivas e texturas de gráficos vetoriais em representações de pixels).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - adiciona estados dinâmicos adicionais para reduzir o número de objetos de estado compilados e anexados.
    • VK_EXT_pipeline_creation_cache_control – Fornece controles avançados sobre quando e como os pipelines são compilados.
    • VK_EXT_pipeline_creation_feedback – Fornece informações sobre pipelines compilados para facilitar a criação de perfil e a depuração.
  • Vários recursos foram transferidos de opcionais para obrigatórios. Por exemplo, a implementação de referências de buffer (VK_KHR_buffer_device_address) e o modelo de memória Vulkan, que define como threads simultâneos podem acessar dados compartilhados e operações de sincronização, agora são obrigatórios.
  • O controle refinado de subgrupos (VK_EXT_subgroup_size_control) é fornecido para que os fornecedores possam fornecer suporte para vários tamanhos de subgrupos e os desenvolvedores possam selecionar o tamanho necessário.
  • Foi fornecida a extensão VK_KHR_shader_integer_dot_product, que pode ser usada para otimizar o desempenho de estruturas de aprendizado de máquina graças à aceleração de hardware de operações de produto escalar.
  • Um total de 23 novas expansões estão incluídas:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • VK_KHR_maintenance4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_sincronização2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formatos
    • VK_EXT_extended_dynamic_state
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_image_robustness
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_dados_privados
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_subgrupo_tamanho_control
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Adicionado um novo tipo de objeto VkPrivateDataSlot. Foram implementados 37 novos comandos e mais de 60 estruturas.
  • A especificação SPIR-V 1.6 foi atualizada para definir uma representação intermediária de shader que é universal para todas as plataformas e pode ser usada tanto para gráficos quanto para computação paralela. SPIR-V envolve separar uma fase de compilação de shader separada em uma representação intermediária, que permite criar frontends para várias linguagens de alto nível. Com base em várias implementações de alto nível, um único código intermediário é gerado separadamente, que pode ser usado pelos drivers OpenGL, Vulkan e OpenCL sem usar o compilador de shader integrado.
  • O conceito de perfis de compatibilidade é proposto. O Google é o primeiro a lançar um perfil básico para a plataforma Android, o que tornará mais fácil determinar o nível de suporte para recursos avançados do Vulkan em um dispositivo além da especificação Vulkan 1.0. Para a maioria dos dispositivos, o suporte de perfil pode ser fornecido sem a instalação de atualizações OTA.

Lembremos que a API Vulkan se destaca pela simplificação radical dos drivers, pela transferência da geração de comandos GPU para o lado da aplicação, pela capacidade de conectar camadas de depuração, pela unificação da API para diversas plataformas e pela utilização de um pré-compilado representação intermediária de código para execução no lado da GPU. Para garantir alto desempenho e previsibilidade, o Vulkan fornece aos aplicativos controle direto sobre as operações da GPU e suporte nativo para multithreading da GPU, o que minimiza a sobrecarga do driver e torna os recursos do lado do driver muito mais simples e previsíveis. Por exemplo, operações como gerenciamento de memória e tratamento de erros, implementadas em OpenGL no lado do driver, são movidas para o nível do aplicativo no Vulkan.

Vulkan abrange todas as plataformas disponíveis e fornece uma única API para desktop, dispositivos móveis e web, permitindo que uma API comum seja usada em várias GPUs e aplicativos. Graças à arquitetura multicamadas do Vulkan, o que significa ferramentas que funcionam com qualquer GPU, os OEMs podem usar ferramentas padrão do setor para revisão de código, depuração e criação de perfil durante o desenvolvimento. Para a criação de shaders, é proposta uma nova representação intermediária portátil, SPIR-V, baseada em LLVM e compartilhando tecnologias centrais com OpenCL. Para controlar dispositivos e telas, Vulkan oferece a interface WSI (Window System Integration), que resolve aproximadamente os mesmos problemas do EGL no OpenGL ES. O suporte WSI está disponível imediatamente no Wayland - todos os aplicativos que usam Vulkan podem ser executados em um ambiente de servidores Wayland não modificados. A capacidade de trabalhar via WSI também é fornecida para Android, X11 (com DRI3), Windows, Tizen, macOS e iOS.

Fonte: opennet.ru

Adicionar um comentário