Grafikkstandard Vulkan 1.2 publisert

Khronos-konsortiet, som utvikler grafikkstandarder,
publisert spesifikasjon Vulkan 1.2, som definerer et API for tilgang til grafikk- og databehandlingsmulighetene til GPU. Den nye spesifikasjonen inneholder korreksjoner akkumulert over to år og utvidelse. Drivere som støtter den nye versjonen av Vulkan er allerede løslatt Intel-selskapet, AMD, ARM, Imagination Technologies og NVIDIA. Mesa tilbyr Vulkan 1.2-støtte for drivere RADV (AMD-kort) og ANV (Intel). Vulkan 1.2-støtte er også implementert i debuggeren RenderDoc 1.6, LunarG Vulkan SDK og et sett med eksempler Vulkan-prøver.

Den viktigste innovasjoner:

  • Brakt til deg implementering av et shader-programmeringsspråk til det er klart for utbredt bruk HLSL, utviklet av Microsoft for DirectX. HLSL-støtte i Vulkan gjør det mulig å bruke de samme HLSL shaders i applikasjoner basert på Vulkan og DirectX, og forenkler også oversettelsen fra HLSL til SPIR-V. For å kompilere shaders, foreslås det å bruke en standard kompilator
    DXC, som ble åpnet av Microsoft i 2017 og er basert på LLVM-teknologi. Vulkan-støtte er implementert gjennom en egen backend, som lar deg oversette HLSL til en mellomrepresentasjon av SPIR-V shaders. Implementeringen dekker ikke bare alle innebygde funksjoner
    HLSL, inkludert matematiske typer, kontrollflyter, funksjoner, sett, ressurstyper, navnerom, Shader Model 6.2, strukturer og metoder, men tillater også bruk av Vulkan-spesifikke utvidelser som VKRay fra NVIDIA. I HLSL-modus på toppen av Vulkan var det mulig å organisere arbeidet med spill som Destiny 2, Red Dead Redemption II, Assassin’s Creed Odyssey og Tomb Raider.

    Grafikkstandard Vulkan 1.2 publisert

  • Spesifikasjonen er oppdatert SPIR-V 1.5, som definerer en mellomrepresentasjon av shaders som er universell for alle plattformer og kan brukes til både grafikk og parallell databehandling.
    SPIR-V innebærer å separere en separat shader-kompileringsfase i en mellomrepresentasjon, som lar deg lage grensesnitt for ulike høynivåspråk. Basert på ulike implementeringer på høyt nivå, genereres en enkelt mellomkode separat, som kan brukes av OpenGL-, Vulkan- og OpenCL-drivere uten å bruke den innebygde shader-kompilatoren.

    Grafikkstandard Vulkan 1.2 publisert

  • Kjernen Vulkan API inkluderer 23 utvidelser som øker ytelsen, forbedrer gjengivelseskvaliteten og forenkler utviklingen. Blant utvidelsene som er lagt til:
    • Kronologiske semaforer (Tidslinje semafor), samler synkronisering med verts- og enhetskøene (slik at du kan bruke én primitiv for omnidireksjonell synkronisering mellom enheten og verten, uten å bruke separate VkFence- og VkSemaphore-primitiver). Nye semaforer er representert av en monotont økende 64-bits verdi som kan spores og oppdateres over flere tråder.
      Grafikkstandard Vulkan 1.2 publisert

    • Evne til å bruke numeriske typer med redusert presisjon i shaders;
    • HLSL-kompatibelt minnelayoutalternativ;
    • Ubundne ressurser (bindingsløse), som fjerner begrensningen på antall ressurser tilgjengelig for shaders ved å bruke det delte virtuelle rommet til systemminne og GPU-minne;
    • Formell minnemodell, som definerer hvordan samtidige tråder kan få tilgang til delte data og synkroniseringsoperasjoner;
    • Deskriptorindeksering å gjenbruke layoutbeskrivelser på tvers av flere skyggelegginger;
    • Bufferlenker.

    Full liste over utvidelser som er lagt til:

  • Lagt mer enn 50 nye strukturer og 13 funksjoner;
  • Forkortede versjoner av spesifikasjonen er utarbeidet for typiske målplattformer, noe som forenkler arbeidet på plattformer der alle utvidelser ennå ikke støttes, og lar en klare seg uten selektiv aktivering av de grunnleggende egenskapene til Vulkan API.
  • Arbeidet fortsetter med prosjektet for å sikre portabilitet med andre grafiske APIer. For eksempel tilbyr Vulkan utvidelser som tillater OpenGL-oversettelse (Zink), OpenCL (clspv, clvk), OpenGL ES (HANSKE, vinkel) og DirectX (DXVK, vkd3d) gjennom Vulkan API, og også, omvendt, for å gjøre det mulig for Vulkan å jobbe på plattformer uten dens opprinnelige støtte (gfx-rs и Ashes for å jobbe på toppen av OpenGL og DirectX, MoltenVK og gfx-rs for arbeid på toppen av metall).
    Lagt til utvidelser for å 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 spesifikke HLSL-funksjoner.

Planer for fremtiden inkluderer utvikling av utvidelser for maskinlæring, strålesporing, videokoding og -dekoding, støtte for VRS (variable-rate shading) og Mesh shaders.

Husk at Vulkan API bemerkelsesverdig radikalt forenkling av drivere, flytting av generering av GPU-kommandoer til applikasjonssiden, muligheten til å koble til feilsøkingslag, forene API for ulike plattformer og bruke en forhåndskompilert mellomrepresentasjon av kode for kjøring på GPU-siden. For å sikre høy ytelse og forutsigbarhet, gir Vulkan applikasjoner med direkte kontroll over GPU-operasjoner og innebygd støtte for GPU-flertråding, noe som minimerer driveroverhead og gjør funksjonene på førersiden mye enklere og mer forutsigbare. For eksempel flyttes operasjoner som minnehåndtering og feilhåndtering, implementert i OpenGL på førersiden, til applikasjonsnivå i Vulkan.

Vulkan spenner over alle tilgjengelige plattformer og gir én enkelt API for skrivebord, mobil og web, slik at én felles API kan brukes på tvers av flere GPUer og applikasjoner. Takket være Vulkans flerlagsarkitektur, som betyr verktøy som fungerer med alle GPUer, kan OEM-er bruke industristandardverktøy for kodegjennomgang, feilsøking og profilering under utvikling. For å lage shaders, foreslås en ny bærbar mellomrepresentasjon, SPIR-V, basert på LLVM og deler kjerneteknologier med OpenCL. For å kontrollere enheter og skjermer tilbyr Vulkan WSI-grensesnittet (Window System Integration), som løser omtrent de samme problemene som EGL i OpenGL ES. WSI-støtte er tilgjengelig umiddelbart i Wayland - alle applikasjoner som bruker Vulkan kan kjøres i et miljø med umodifiserte Wayland-servere. Muligheten til å jobbe via WSI er også gitt for Android, X11 (med DRI3), Windows, Tizen, macOS og iOS.

Kilde: opennet.ru

Legg til en kommentar