Efter tvÄ Ärs arbete har konsortiet Khronos, som utvecklar grafiska standarder, publicerat specifikationen Vulkan 1.3, som definierar API:et för Ätkomst till GPU:ns grafiska och berÀkningsmÀssiga möjligheter. Den nya specifikationen inkluderar de korrigeringar och tillÀgg som har samlats under tvÄ Ärs tid. Det pÄpekas att kraven i specifikationen Vulkan 1.3 Àr avsedda för grafikhÄrdvara av typen OpenGL ES 3.1, vilket kommer att möjliggöra stöd för det nya grafiska API:et pÄ alla GPU:er som stödjer Vulkan 1.2. Vulkan SDK förvÀntas publiceras i mitten av februari. Förutom den huvudsakliga specifikationen planeras ytterligare tillÀgg för mobila och stationÀra enheter i medel- och högre segmentet, vilket kommer att stödjas i utgÄvan "Vulkan Milestone."
Samtidigt presenterades en plan för genomförandet av stöd för den nya specifikationen och ytterligare tillÀgg i grafikkort och enhetsdrivrutiner. Produkter med stöd för Vulkan 1.3 planeras att slÀppas av företagen Intel, AMD, ARM och NVIDIA. Till exempel har företaget AMD meddelat att de snart kommer att implementera stöd för Vulkan 1.3 i serien av grafikkort AMD Radeon RX Vega samt i alla kort baserade pÄ AMD RDNA-arkitekturen. Företaget NVIDIA förbereder sig för att publicera drivrutiner med stöd för Vulkan 1.3 för Linux och Windows. Företaget ARM kommer att lÀgga till stöd för Vulkan 1.3 i GPU:erna Mali.
Huvudsakliga nyheter:
- Stöd för strömlinjeformade renderingpass (Streamlining Render Passes, VK_KHR_dynamic_rendering) har implementerats, vilket möjliggör att pÄbörja rendering utan att skapa renderingpass och framebuffer-objekt.
- Nya tillÀgg har lagts till för att förenkla hanteringen av kompileringen av grafikpipeline (pipeline, en uppsÀttning operationer som omvandlar vektorgrafiska primitiva och texturer till pixeldarstÀllning).
- VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 â lĂ€gger till ytterligare dynamiska tillstĂ„nd för att minska antalet komplierade och kopplade tillstĂ„ndsobjekt.
- VK_EXT_pipeline_creation_cache_control â tillhandahĂ„ller avancerade verktyg för att hantera nĂ€r och hur pipelines ska kompillieras.
- VK_EXT_pipeline_creation_feedback â tillhandahĂ„ller information om komplierade pipelines för att förenkla profilering och felsökning.
- Flera funktioner har omvandlats frÄn valfria till obligatoriska. Till exempel Àr implementeringen av buffertadresser (VK_KHR_buffer_device_address) och Vulkan-minnesmodellen, som definierar hur parallella trÄdar kan komma Ät delade data och synkroniseringsoperationer, nu obligatoriska.
- Verktyg för exakt kontroll av undergrupper (VK_EXT_subgroup_size_control) har tillhandahÄllits, vilket gör att tillverkare kan erbjuda stöd för flera undergruppsstorlekar, medan utvecklare kan vÀlja den storlek som krÀvs.
- TillÀgget VK_KHR_shader_integer_dot_product har införts och kan anvÀndas för att optimera prestandan för maskininlÀrningsramverk, tack vare hÄrdvaruaccelerationen av skalÀrproduktionsoperationer.
- Totalt har 23 nya tillÀgg inkluderats:
- VK_KHR_copy_commands2
- VK_KHR_dynamic_rendering
- VK_KHR_format_feature_flags2
- VK_KHR_maintenance4
- VK_KHR_shader_integer_dot_product
- VK_KHR_shader_non_semantic_info
- VK_KHR_shader_terminate_invocation
- VK_KHR_synchronization2
- VK_KHR_zero_initialize_workgroup_memory
- VK_EXT_4444_formats
- 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
- En ny typ av objekt, VkPrivateDataSlot, har lagts till. 37 nya kommandon och fler Àn 60 strukturer har implementerats.
- Specifikationen för SPIR-V 1.6 har uppdaterats, vilket definierar en plattformsoberoende mellanrepresentation av shaders som kan anvÀndas bÄde för grafik och parallella berÀkningar. SPIR-V möjliggör en separat fas för kompilering av shaders till mellanrepresentation, vilket gör det möjligt att skapa frontend-motstÄndare för olika hög-nivÄsprÄk. UtifrÄn olika hög-nivÄimplementationer genereras en enhetlig mellanrepresentation som kan anvÀndas av drivrutiner för OpenGL, Vulkan och OpenCL utan inbyggd shaderkompilator.
- En konceptuell profil för kompatibilitet har föreslagits. Den första profilen, en grundprofil (baseline profile), har förberetts av Google för Android-plattformen, vilket kommer att förenkla faststÀllandet av stödnivÄn för avancerade Vulkan-funktioner pÄ enheten, som gÄr utöver Vulkan 1.0-specifikationen. För de flesta enheter kan stödet för profilen sÀkerstÀllas utan att OTA-uppdateringar krÀvs.
Vi pÄminner om att Vulkan API Àr anmÀrkningsvÀrt för sin radikala förenkling av drivrutiner, flytt av GPU-kommandogenerering till applikationssidan, möjligheten att ansluta felsökningslager, standardisering av API för olika plattformar och anvÀndning av förkompilerade mellanrepresentationskod för körning pÄ GPU-sidan. För att sÀkerstÀlla hög prestanda och förutsÀgbarhet ger Vulkan applikationer verktyg för direkt hantering av GPU-operationer och inbyggt stöd för flertrÄdad bearbetning av GPU-kommandon, vilket minimerar overheaden frÄn drivrutinen, medan de funktioner som implementeras pÄ drivrutinsidan förenklas och blir mer förutsÀgbara. Till exempel, operationer som minneshantering och felhantering, som implementeras i OpenGL pÄ drivrutinsidan, har i Vulkan flyttats till applikationsnivÄ.
Vulkan tĂ€cker alla tillgĂ€ngliga plattformar och tillhandahĂ„ller ett enhetligt API för skrivbordssystem, mobila system och webben, vilket möjliggör anvĂ€ndning av ett gemensamt API för olika grafikkort och tillĂ€mpningsomrĂ„den. Tack vare Vulkan's lagerarkitektur, som möjliggör skapandet av verktyg som fungerar med alla GPU:er, kan hĂ„rdvarutillverkare anvĂ€nda standardverktyg för kodkontroll, felsökning och profilering vid utveckling. För att skapa shader-program erbjuds en ny bĂ€rbar mellanrepresentation SPIR-V, baserad pĂ„ LLVM och som anvĂ€nder gemensamma grundteknologier med OpenCL. För hantering av enheter och skĂ€rmar erbjuder Vulkan ett WSI (Window System Integration) grĂ€nssnitt, som uppfyller ungefĂ€r samma syften som EGL i OpenGL ES. WSI-stöd finns direkt tillgĂ€ngligt i Wayland â alla applikationer som anvĂ€nder Vulkan kan köras i en oförĂ€ndrad miljö. servrar Wayland. Stöd för arbete via WSI Ă€r ocksĂ„ tillgĂ€nglig för Android, X11 (med DRI3), Windows, Tizen, macOS och iOS.
KĂ€lla: opennet.ru
