Publicat l'estàndard gràfic Vulkan 1.3

Després de dos anys de treball, el consorci d'estàndards gràfics Khronos ha publicat l'especificació Vulkan 1.3, que defineix una API per accedir a les capacitats de gràfics i informàtica de les GPU. La nova especificació incorpora correccions i ampliacions acumulades al llarg de dos anys. Cal assenyalar que els requisits de l'especificació Vulkan 1.3 estan dissenyats per a equips gràfics de classe OpenGL ES 3.1, la qual cosa garantirà el suport per a la nova API de gràfics a totes les GPU que admeten Vulkan 1.2. Està previst que les eines Vulkan SDK es publiquin a mitjans de febrer. A més de l'especificació principal, es preveu oferir extensions addicionals per a dispositius mòbils i d'escriptori de gamma mitjana i alta, que seran compatibles com a part de l'edició Vulkan Milestone.

Al mateix temps, es presenta un pla per implementar suport per a la nova especificació i extensions addicionals en targetes gràfiques i controladors de dispositius. Intel, AMD, ARM i NVIDIA es preparen per llançar productes compatibles amb Vulkan 1.3. Per exemple, AMD va anunciar que aviat donarà suport a Vulkan 1.3 a la sèrie de targetes gràfiques AMD Radeon RX Vega, així com a totes les targetes basades en l'arquitectura AMD RDNA. NVIDIA es prepara per publicar controladors amb suport per a Vulkan 1.3 per a Linux i Windows. ARM afegirà suport per a Vulkan 1.3 a les GPU de Mali.

Principals innovacions:

  • S'ha implementat el suport per a passades de renderització simplificades (Racionalització de passades de renderització, VK_KHR_dynamic_rendering), la qual cosa us permet començar la representació sense crear passades de renderització i objectes de framebuffer.
  • S'han afegit noves extensions per simplificar la gestió de la compilació de pipelines gràfics (pipeline, un conjunt d'operacions que converteix les primitives i textures de gràfics vectorials en representacions de píxels).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2: afegiu estats dinàmics addicionals per reduir el nombre d'objectes d'estat compilats i connectats.
    • VK_EXT_pipeline_creation_cache_control - Proporciona controls avançats sobre quan i com es compilen les canalitzacions.
    • VK_EXT_pipeline_creation_feedback: proporciona informació sobre canalitzacions compilades per facilitar la creació de perfils i la depuració.
  • S'han transferit una sèrie de funcions d'opcionals a obligatòries. Per exemple, la implementació de referències de memòria intermèdia (VK_KHR_buffer_device_address) i el model de memòria Vulkan, que defineix com els fils concurrents poden accedir a les dades compartides i a les operacions de sincronització, ara són obligatòries.
  • Es proporciona un control de subgrups detallat (VK_EXT_subgroup_size_control) perquè els venedors puguin oferir suport per a diverses mides de subgrups i els desenvolupadors puguin seleccionar la mida que necessiten.
  • S'ha proporcionat l'extensió VK_KHR_shader_integer_dot_product, que es pot utilitzar per optimitzar el rendiment dels marcs d'aprenentatge automàtic gràcies a l'acceleració de maquinari de les operacions de productes de punt.
  • S'inclouen un total de 23 noves ampliacions:
    • VK_KHR_copia_ordres2
    • VK_KHR_renderització_dinàmica
    • VK_KHR_format_feature_flags2
    • VK_KHR_manteniment4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_no_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_sincronització2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formats
    • VK_EXT_estat_dinàmic_estès
    • VK_EXT_estat_dinàmic_estès2
    • VK_EXT_robustesa de la imatge
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_dades_privades
    • VK_EXT_shader_demote_to_helper_invocation
    • Control de la mida_del_subgrup_VK_EXT
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • S'ha afegit un nou tipus d'objecte VkPrivateDataSlot. Es van implementar 37 noves ordres i més de 60 estructures.
  • L'especificació SPIR-V 1.6 s'ha actualitzat per definir una representació d'ombres intermedis que sigui universal per a totes les plataformes i que es pugui utilitzar tant per a gràfics com per a la informàtica paral·lela. SPIR-V implica separar una fase de compilació d'ombres separats en una representació intermèdia, que us permet crear interfícies per a diversos llenguatges d'alt nivell. A partir de diverses implementacions d'alt nivell, es genera un únic codi intermedi per separat, que poden ser utilitzats pels controladors OpenGL, Vulkan i OpenCL sense utilitzar el compilador de shader integrat.
  • Es proposa el concepte de perfils de compatibilitat. Google és el primer a llançar un perfil de referència per a la plataforma Android, que facilitarà la determinació del nivell de suport per a les capacitats avançades de Vulkan en un dispositiu més enllà de l'especificació Vulkan 1.0. Per a la majoria de dispositius, es pot proporcionar suport de perfil sense instal·lar actualitzacions OTA.

Recordem que l'API Vulkan destaca per la seva simplificació radical dels controladors, la transferència de la generació d'ordres de GPU al costat de l'aplicació, la capacitat de connectar capes de depuració, la unificació de l'API per a diverses plataformes i l'ús d'un sistema precompilat. representació intermèdia del codi per a l'execució al costat de la GPU. Per garantir un alt rendiment i predictibilitat, Vulkan proporciona aplicacions amb control directe sobre les operacions de la GPU i suport natiu per a multiprocés de GPU, que minimitza la sobrecàrrega del controlador i fa que les capacitats del controlador siguin molt més senzilles i previsibles. Per exemple, operacions com la gestió de memòria i la gestió d'errors, implementades a OpenGL al costat del controlador, es traslladen al nivell d'aplicació a Vulkan.

Vulkan abasta totes les plataformes disponibles i proporciona una única API per a ordinadors, mòbils i web, la qual cosa permet utilitzar una API comuna a diverses GPU i aplicacions. Gràcies a l'arquitectura multicapa de Vulkan, que significa eines que funcionen amb qualsevol GPU, els OEM poden utilitzar eines estàndard del sector per a la revisió del codi, la depuració i la creació de perfils durant el desenvolupament. Per crear shaders, es proposa una nova representació intermèdia portàtil, SPIR-V, basada en LLVM i compartint tecnologies bàsiques amb OpenCL. Per controlar dispositius i pantalles, Vulkan ofereix la interfície WSI (Window System Integration), que resol aproximadament els mateixos problemes que EGL a OpenGL ES. El suport WSI està disponible de manera immediata a Wayland: totes les aplicacions que utilitzen Vulkan es poden executar en un entorn de servidors Wayland sense modificar. També s'ofereix la possibilitat de treballar mitjançant WSI per a Android, X11 (amb DRI3), Windows, Tizen, macOS i iOS.

Font: opennet.ru

Afegeix comentari