Grafikstandard Vulkan 1.2 udgivet

Khronos-konsortiet, der udvikler grafikstandarder,
опубликовал specifikation Vulkan 1.2, som definerer en API til at få adgang til grafik- og computerfunktionerne i GPU'en. Den nye specifikation inkorporerer korrektioner akkumuleret over to år og udvidelse. Drivere, der understøtter den nye version af Vulkan er allerede frigivet Intel selskab, AMD, ARM, Imagination Technologies og NVIDIA. Mesa tilbyder Vulkan 1.2-understøttelse til drivere RADV (AMD-kort) og ANV (Intel). Vulkan 1.2-understøttelse er også implementeret i debuggeren RenderDoc 1.6, LunarG Vulkan SDK og et sæt eksempler Vulkan-prøver.

The main innovationer:

  • Bragt til dig implementering af et shader-programmeringssprog, indtil det er klar til udbredt brug HLSL, udviklet af Microsoft til DirectX. HLSL support i Vulkan gør det muligt at bruge de samme HLSL shaders i applikationer baseret på Vulkan og DirectX, og forenkler også oversættelsen fra HLSL til SPIR-V. For at kompilere shaders, foreslås det at bruge en standard compiler
    DXC, som blev åbnet af Microsoft i 2017 og er baseret på LLVM-teknologi. Vulkan support implementeres gennem en separat backend, som giver dig mulighed for at oversætte HLSL til en mellemrepræsentation af SPIR-V shaders. Implementeringen dækker ikke kun alle indbyggede muligheder
    HLSL, herunder matematiske typer, kontrolflows, funktioner, sæt, ressourcetyper, navnerum, Shader Model 6.2, strukturer og metoder, men tillader også brugen af ​​Vulkan-specifikke udvidelser såsom VKRay fra NVIDIA. I HLSL-tilstand oven på Vulkan var det muligt at organisere arbejdet med spil som Destiny 2, Red Dead Redemption II, Assassin's Creed Odyssey og Tomb Raider.

    Grafikstandard Vulkan 1.2 udgivet

  • Specifikation opdateret SPIR-V 1.5, som definerer en mellemrepræsentation af shaders, 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.

    Grafikstandard Vulkan 1.2 udgivet

  • Kernen i Vulkan API inkluderer 23 udvidelser, der øger ydeevnen, forbedrer gengivelseskvaliteten og forenkler udviklingen. Blandt de tilføjede udvidelser:
    • Kronologiske semaforer (Tidslinjesemafor), der forener synkronisering med værts- og enhedskøerne (der giver dig mulighed for at bruge én primitiv til omnidirektionel synkronisering mellem enheden og værten uden at bruge separate VkFence- og VkSemaphore-primitiver). Nye semaforer er repræsenteret af en monotont stigende 64-bit værdi, der kan spores og opdateres på tværs af flere tråde.
      Grafikstandard Vulkan 1.2 udgivet

    • Evne til at bruge numeriske typer med reduceret præcision i shaders;
    • Mulighed for HLSL-kompatibel hukommelseslayout;
    • Ubundne ressourcer (bindingsfri), som fjerner begrænsningen på antallet af ressourcer, der er tilgængelige for shaders, ved at bruge det delte virtuelle rum med systemhukommelse og GPU-hukommelse;
    • Formel hukommelsesmodel, som definerer, hvordan samtidige tråde kan få adgang til delte data og synkroniseringsoperationer;
    • Deskriptorindeksering at genbruge layoutdeskriptorer på tværs af flere shaders;
    • Buffer links.

    Fuld liste over tilføjede udvidelser:

  • Добавлено mere end 50 nye strukturer og 13 funktioner;
  • Forkortede versioner af specifikationen er blevet udarbejdet til typiske målplatforme, hvilket forenkler arbejdet på platforme, hvor alle udvidelser endnu ikke er understøttet, og gør det muligt at undvære selektiv aktivering af de grundlæggende funktioner i Vulkan API.
  • Arbejdet fortsætter på projektet for at sikre portabilitet med andre grafiske API'er. For eksempel tilbyder Vulkan udvidelser, der tillader OpenGL-oversættelse (Zink), OpenCL (clspv, clvk), OpenGL ES (GLOVE, Angle) og DirectX (DXVK, vkd3d) gennem Vulkan API, og også omvendt for at gøre det muligt for Vulkan at arbejde på platforme uden dens oprindelige support (gfx-rs и Ashes til at arbejde oven på OpenGL og DirectX, MoltenVK og gfx-rs til at arbejde oven på metal).
    Tilføjede udvidelser for at forbedre kompatibiliteten med DirectX og HLSL
    VK_KHR_host_query_reset, VK_KHR_uniform_buffer_standard_layout, VK_EXT_scalar_block_layout, VK_KHR_separate_stencil_usage, VK_KHR_separate_depth_stencil_layouts og SPIR-V implementerer specifikke HLSL-funktioner.

Planer for fremtiden omfatter udvikling af udvidelser til maskinlæring, strålesporing, videokodning og -afkodning, understøttelse af VRS (variable-rate shading) og Mesh shaders.

Husk at Vulkan API bemærkelsesværdig radikalt forenkling af drivere, flytning af genereringen af ​​GPU-kommandoer til applikationssiden, evnen til at forbinde debug-lag, forene API'en til forskellige platforme og bruge 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