Grafikstandard Vulkan 1.3 publicerad

Efter två års arbete har grafikstandardkonsortiet Khronos publicerat Vulkan 1.3-specifikationen, som definierar ett API för åtkomst till grafik- och datorkapaciteten hos GPU:er. Den nya specifikationen innehåller korrigeringar och förlängningar ackumulerade under två år. Det noteras att kraven i Vulkan 1.3-specifikationen är designade för OpenGL ES 3.1-klassens grafikutrustning, vilket kommer att säkerställa stöd för det nya grafik-API:er i alla GPU:er som stöder Vulkan 1.2. Vulkan SDK-verktygen är planerade att publiceras i mitten av februari. Utöver huvudspecifikationen är det planerat att erbjuda ytterligare tillägg för mellanklass och avancerade mobila och stationära enheter, som kommer att stödjas som en del av Vulkan Milestone-utgåvan.

Samtidigt presenteras en plan för att implementera stöd för den nya specifikationen och ytterligare tillägg i grafikkort och enhetsdrivrutiner. Intel, AMD, ARM och NVIDIA förbereder sig för att släppa produkter som stöder Vulkan 1.3. Till exempel meddelade AMD att de snart kommer att stödja Vulkan 1.3 i AMD Radeon RX Vega-serien av grafikkort, såväl som i alla kort baserade på AMD RDNA-arkitekturen. NVIDIA förbereder sig för att publicera drivrutiner med stöd för Vulkan 1.3 för Linux och Windows. ARM kommer att lägga till stöd för Vulkan 1.3 till Mali GPU:er.

Huvudsakliga innovationer:

  • Stöd för förenklade renderingspass (Streamlining Render Passes, VK_KHR_dynamic_rendering) har implementerats, vilket gör att du kan börja rendera utan att skapa renderingspass och framebuffer-objekt.
  • Nya tillägg har lagts till för att förenkla hanteringen av kompilering av grafikpipeline (pipeline, en uppsättning operationer som förvandlar vektorgrafiks primitiver och texturer till pixelrepresentationer).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - lägg till ytterligare dynamiska tillstånd för att minska antalet kompilerade och bifogade tillståndsobjekt.
    • VK_EXT_pipeline_creation_cache_control - Ger avancerade kontroller över när och hur pipelines kompileras.
    • VK_EXT_pipeline_creation_feedback - Ger information om kompilerade pipelines för att göra profilering och felsökning enklare.
  • Ett antal funktioner har överförts från valfritt till obligatoriskt. Till exempel är implementeringen av buffertreferenser (VK_KHR_buffer_device_address) och Vulkan-minnesmodellen, som definierar hur samtidiga trådar kan komma åt delad data och synkroniseringsoperationer, nu obligatoriska.
  • Finkornig undergruppskontroll (VK_EXT_subgroup_size_control) tillhandahålls så att leverantörer kan ge stöd för flera undergruppsstorlekar och utvecklare kan välja den storlek de behöver.
  • Tillägget VK_KHR_shader_integer_dot_product har tillhandahållits, som kan användas för att optimera prestandan hos ramverk för maskininlärning tack vare hårdvaruacceleration av dot-produktoperationer.
  • Totalt 23 nya expansioner ingår:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • VK_KHR_underhåll4
    • 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_format
    • 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_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Lade till en ny objekttyp VkPrivateDataSlot. 37 nya kommandon och mer än 60 strukturer implementerades.
  • SPIR-V 1.6-specifikationen har uppdaterats för att definiera en mellanliggande shader-representation 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.
  • Konceptet med kompatibilitetsprofiler föreslås. Google är först med att släppa en baslinjeprofil för Android-plattformen, vilket kommer att göra det lättare att bestämma nivån på stödet för avancerade Vulkan-funktioner på en enhet utöver Vulkan 1.0-specifikationen. För de flesta enheter kan profilstöd tillhandahållas utan att installera OTA-uppdateringar.

Låt oss komma ihåg att Vulkan API är anmärkningsvärt för sin radikala förenkling av drivrutiner, överföringen av genereringen av GPU-kommandon till applikationssidan, möjligheten att ansluta felsökningsskikt, enandet av API för olika plattformar och användningen av 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