Grafikstandard Vulkan 1.2 publicerad

Khronos-konsortiet, som utvecklar grafikstandarder,
publicerade Specifikation Vulkan 1.2, som definierar ett API för åtkomst till grafik- och datorkapaciteten hos GPU:n. Den nya specifikationen innehåller korrigeringar ackumulerade under två år och expansionen. Drivrutiner som stöder den nya versionen av Vulkan finns redan släppte Intel företag, AMD, ARM, Imagination Technologies och NVIDIA. Mesa erbjuder Vulkan 1.2-stöd för drivrutiner RADV (AMD-kort) och ANV (Intel). Vulkan 1.2-stöd är också implementerat i felsökaren RenderDoc 1.6, LunarG Vulkan SDK och en uppsättning exempel Vulkan-prover.

Den huvudsakliga innovationer:

  • Presenterat till dig implementering av ett shader-programmeringsspråk tills det är klart för utbredd användning HLSL, utvecklad av Microsoft för DirectX. HLSL-stöd i Vulkan gör det möjligt att använda samma HLSL-shaders i applikationer baserade på Vulkan och DirectX, och förenklar även översättningen från HLSL till SPIR-V. För att kompilera shaders, föreslås det att du använder en standardkompilator
    DXC, som öppnades av Microsoft 2017 och är baserad på LLVM-teknik. Vulkan-stöd implementeras genom en separat backend, som gör att du kan översätta HLSL till en mellanrepresentation av SPIR-V-shaders. Implementeringen täcker inte bara alla inbyggda funktioner
    HLSL, inklusive matematiska typer, kontrollflöden, funktioner, uppsättningar, resurstyper, namnutrymmen, Shader Model 6.2, strukturer och metoder, men tillåter även användning av Vulkan-specifika tillägg som VKRay från NVIDIA. I HLSL-läge ovanpå Vulkan var det möjligt att organisera arbetet med spel som Destiny 2, Red Dead Redemption II, Assassin's Creed Odyssey och Tomb Raider.

    Grafikstandard Vulkan 1.2 publicerad

  • Specifikationen uppdaterad SPIR-V 1.5, som definierar en mellanrepresentation av shaders som är universell för alla plattformar och kan användas för både grafik och parallell beräkning.
    SPIR-V innebär att separera en separat shader-kompileringsfas i en mellanrepresentation, vilket gör att du kan skapa frontends för olika högnivåspråk. Baserat på olika implementeringar på hög nivå genereras en enda mellankod separat, som kan användas av OpenGL-, Vulkan- och OpenCL-drivrutiner utan att använda den inbyggda shader-kompilatorn.

    Grafikstandard Vulkan 1.2 publicerad

  • Kärnan i Vulkan API innehåller 23 tillägg som ökar prestandan, förbättrar renderingskvaliteten och förenklar utvecklingen. Bland de tillagda tilläggen:
    • Kronologiska semaforer (Tidslinjesemafor), förenar synkronisering med värd- och enhetsköerna (så att du kan använda en primitiv för rundstrålande synkronisering mellan enheten och värden, utan att använda separata VkFence- och VkSemaphore-primitiv). Nya semaforer representeras av ett monotont ökande 64-bitars värde som kan spåras och uppdateras över flera trådar.
      Grafikstandard Vulkan 1.2 publicerad

    • Möjlighet att använda numeriska typer med reducerad precision i shaders;
    • HLSL-kompatibelt minneslayoutalternativ;
    • Obundna resurser (bindningslösa), vilket tar bort begränsningen av antalet tillgängliga resurser för shaders genom att använda det delade virtuella utrymmet för systemminnet och GPU-minnet;
    • Formell minnesmodell, som definierar hur samtidiga trådar kan komma åt delad data och synkroniseringsoperationer;
    • Indexering av deskriptorer att återanvända layoutdeskriptorer över flera skuggningar;
    • Buffertlänkar.

    Fullständig lista över tillagda tillägg:

  • Inkom mer än 50 nya strukturer och 13 funktioner;
  • Förkortade versioner av specifikationen har förberetts för typiska målplattformar, vilket förenklar arbetet på plattformar där alla tillägg ännu inte stöds, och låter en klara sig utan selektiv aktivering av de grundläggande funktionerna i Vulkan API.
  • Arbetet fortsätter med projektet för att säkerställa portabilitet med andra grafiska API:er. Till exempel erbjuder Vulkan tillägg som tillåter OpenGL-översättning (Zink), OpenCL (clspv, clvk), OpenGL ES (GLOVE, Angle) och DirectX (DXVK, vkd3d) genom Vulkan API, och även omvänt för att göra det möjligt för Vulkan att arbeta på plattformar utan dess inbyggda stöd (gfx-rs и Aska för att arbeta ovanpå OpenGL och DirectX, MoltenVK och gfx-rs för att arbeta ovanpå metall).
    Tillägg för att förbättra kompatibiliteten med DirectX och 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 och SPIR-V implementerar specifika HLSL-funktioner.

Planer för framtiden inkluderar utvecklingen av tillägg för maskininlärning, strålspårning, videokodning och avkodning, stöd för VRS (variable-rate shading) och Mesh shaders.

Kom ihåg att Vulkan API anmärkningsvärd radikalt förenkla drivrutiner, flytta genereringen av GPU-kommandon till applikationssidan, möjligheten att ansluta felsökningsskikt, förena API:et för olika plattformar och använda en förkompilerad mellanrepresentation av kod för exekvering på GPU-sidan. För att säkerställa hög prestanda och förutsägbarhet tillhandahåller Vulkan applikationer med direkt kontroll över GPU-operationer och inbyggt stöd för GPU-multitrådning, vilket minimerar förarens overhead och gör funktionerna på förarsidan mycket enklare och mer förutsägbara. Till exempel flyttas operationer som minneshantering och felhantering, implementerade i OpenGL på förarsidan, till applikationsnivå i Vulkan.

Vulkan spänner över alla tillgängliga plattformar och tillhandahåller ett enda API för stationära datorer, mobiler och webben, vilket gör att ett gemensamt API kan användas över flera GPU:er och applikationer. Tack vare Vulkans flerskiktsarkitektur, vilket innebär verktyg som fungerar med vilken GPU som helst, kan OEM-tillverkare använda industristandardverktyg för kodgranskning, felsökning och profilering under utveckling. För att skapa shaders föreslås en ny bärbar mellanrepresentation, SPIR-V, baserad på LLVM och delar kärnteknologier med OpenCL. För att styra enheter och skärmar erbjuder Vulkan gränssnittet WSI (Window System Integration), som löser ungefär samma problem som EGL i OpenGL ES. WSI-stöd är tillgängligt direkt i Wayland - alla applikationer som använder Vulkan kan köras i en miljö med omodifierade Wayland-servrar. Möjligheten att arbeta via WSI finns även för Android, X11 (med DRI3), Windows, Tizen, macOS och iOS.

Källa: opennet.ru

Lägg en kommentar