Grafikstandard Vulkan 1.3 udgivet

Efter to års arbejde har grafikstandardkonsortiet Khronos udgivet Vulkan 1.3-specifikationen, som definerer en API til at få adgang til grafik- og computeregenskaberne i GPU'er. Den nye specifikation inkorporerer rettelser og udvidelser akkumuleret over to år. Det bemærkes, at kravene i Vulkan 1.3-specifikationen er designet til OpenGL ES 3.1-klassegrafikudstyr, hvilket vil sikre understøttelse af det nye grafik-API i alle GPU'er, der understøtter Vulkan 1.2. Vulkan SDK-værktøjerne er planlagt til at blive offentliggjort i midten af ​​februar. Ud over hovedspecifikationen er det planlagt at tilbyde yderligere udvidelser til mellemklasse- og high-end mobile og desktop-enheder, som vil blive understøttet som en del af "Vulkan Milestone"-udgaven.

Samtidig præsenteres en plan for implementering af understøttelse af den nye specifikation og yderligere udvidelser i grafikkort og enhedsdrivere. Intel, AMD, ARM og NVIDIA forbereder sig på at frigive produkter, der understøtter Vulkan 1.3. For eksempel annoncerede AMD, at det snart vil understøtte Vulkan 1.3 i AMD Radeon RX Vega-serien af ​​grafikkort, såvel som i alle kort baseret på AMD RDNA-arkitekturen. NVIDIA forbereder sig på at udgive drivere med understøttelse af Vulkan 1.3 til Linux og Windows. ARM vil tilføje understøttelse af Vulkan 1.3 til Mali GPU'er.

Vigtigste innovationer:

  • Understøttelse af forenklede gengivelsesgennemgange (Streamlining Render Passes, VK_KHR_dynamic_rendering) er blevet implementeret, så du kan begynde at rendere uden at oprette gengivelsespass og framebuffer-objekter.
  • Nye udvidelser er blevet tilføjet for at forenkle styringen af ​​grafisk pipeline-kompilering (pipeline, et sæt operationer, der forvandler vektorgrafikprimitiver og -teksturer til pixelrepræsentationer).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - tilføj yderligere dynamiske tilstande for at reducere antallet af kompilerede og vedhæftede tilstandsobjekter.
    • VK_EXT_pipeline_creation_cache_control - Giver avanceret kontrol over, hvornår og hvordan pipelines kompileres.
    • VK_EXT_pipeline_creation_feedback - Giver information om kompilerede pipelines for at gøre profilering og fejlfinding lettere.
  • En række funktioner er blevet overført fra valgfri til obligatorisk. For eksempel er implementeringen af ​​bufferreferencer (VK_KHR_buffer_device_address) og Vulkan-hukommelsesmodellen, som definerer, hvordan samtidige tråde kan få adgang til delte data og synkroniseringsoperationer, nu obligatoriske.
  • Finkornet undergruppekontrol (VK_EXT_subgroup_size_control) er tilvejebragt, så leverandører kan yde support til flere undergruppestørrelser, og udviklere kan vælge den størrelse, de har brug for.
  • VK_KHR_shader_integer_dot_product-udvidelsen er leveret, som kan bruges til at optimere ydeevnen af ​​maskinlæringsrammer takket være hardwareacceleration af dot-produktoperationer.
  • I alt 23 nye udvidelser er inkluderet:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • VK_KHR_vedligeholdelse4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_synkronisering2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formater
    • 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_private_data
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_subgroup_size_control
    • VK_EXT_texel_buffer_justering
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Tilføjet en ny objekttype VkPrivateDataSlot. 37 nye kommandoer og mere end 60 strukturer blev implementeret.
  • SPIR-V 1.6-specifikationen er blevet opdateret for at definere en mellemliggende shader-repræsentation, der er universel for alle platforme og kan bruges til både grafik og parallel computing. SPIR-V involverer at adskille en separat shader-kompileringsfase i en mellemrepræsentation, som giver dig mulighed for at oprette frontends til forskellige sprog på højt niveau. Baseret på forskellige implementeringer på højt niveau genereres en enkelt mellemkode separat, som kan bruges af OpenGL, Vulkan og OpenCL drivere uden brug af den indbyggede shader compiler.
  • Konceptet med kompatibilitetsprofiler foreslås. Google er den første til at frigive en basisprofil til Android-platformen, som vil gøre det nemmere at bestemme niveauet for understøttelse af avancerede Vulkan-funktioner på en enhed ud over Vulkan 1.0-specifikationen. For de fleste enheder kan profilsupport ydes uden at installere OTA-opdateringer.

Lad os huske på, at Vulkan API er bemærkelsesværdig for sin radikale forenkling af drivere, overførsel af generering af GPU-kommandoer til applikationssiden, evnen til at forbinde fejlfindingslag, forening af API til forskellige platforme og brugen af ​​en prækompileret mellemrepræsentation af kode til udførelse på GPU-siden. For at sikre høj ydeevne og forudsigelighed leverer Vulkan applikationer med direkte kontrol over GPU-operationer og indbygget understøttelse af GPU-multrådsføring, som minimerer driver-overhead og gør driver-side-kapaciteter meget enklere og mere forudsigelige. For eksempel flyttes operationer som hukommelseshåndtering og fejlhåndtering, implementeret i OpenGL på førersiden, til applikationsniveauet i Vulkan.

Vulkan spænder over alle tilgængelige platforme og leverer en enkelt API til desktop, mobil og web, hvilket gør det muligt at bruge én fælles API på tværs af flere GPU'er og applikationer. Takket være Vulkans flerlagsarkitektur, hvilket betyder værktøjer, der fungerer med enhver GPU, kan OEM'er bruge industristandardværktøjer til kodegennemgang, fejlfinding og profilering under udvikling. Til at skabe shaders foreslås en ny bærbar mellemrepræsentation, SPIR-V, baseret på LLVM og deler kerneteknologier med OpenCL. Til at styre enheder og skærme tilbyder Vulkan WSI-grænsefladen (Window System Integration), som løser omtrent de samme problemer som EGL i OpenGL ES. WSI-understøttelse er tilgængelig direkte fra boksen i Wayland - alle applikationer, der bruger Vulkan, kan køre i et miljø med umodificerede Wayland-servere. Muligheden for at arbejde via WSI er også tilgængelig for Android, X11 (med DRI3), Windows, Tizen, macOS og iOS.

Kilde: opennet.ru

Tilføj en kommentar