Vydán grafický standard Vulkan 1.3

Konsorcium grafických standardů Khronos po dvou letech práce zveřejnilo specifikaci Vulkan 1.3, která definuje API pro přístup ke grafice a výpočetním možnostem GPU. Nová specifikace zahrnuje opravy a rozšíření nashromážděné za dva roky. Je třeba poznamenat, že požadavky specifikace Vulkan 1.3 jsou určeny pro grafické zařízení třídy OpenGL ES 3.1, což zajistí podporu nového grafického API ve všech GPU podporujících Vulkan 1.2. Zveřejnění nástrojů Vulkan SDK je plánováno na polovinu února. Kromě hlavní specifikace se plánuje nabídka dalších rozšíření pro mobilní a stolní zařízení střední a vyšší třídy, která budou podporována v rámci edice „Vulkan Milestone“.

Zároveň je představen plán implementace podpory nové specifikace a dalších rozšíření do grafických karet a ovladačů zařízení. Intel, AMD, ARM a NVIDIA se připravují na vydání produktů podporujících Vulkan 1.3. AMD například oznámilo, že již brzy bude podporovat Vulkan 1.3 v řadě grafických karet AMD Radeon RX Vega a také ve všech kartách založených na architektuře AMD RDNA. NVIDIA připravuje vydání ovladačů s podporou Vulkan 1.3 pro Linux a Windows. ARM přidá podporu pro Vulkan 1.3 do GPU Mali.

Hlavní inovace:

  • Byla implementována podpora pro zjednodušené vykreslovací průchody (Streamlining Render Passes, VK_KHR_dynamic_rendering), což vám umožní začít vykreslovat bez vytváření vykreslovacích průchodů a objektů framebufferu.
  • Byla přidána nová rozšíření, která zjednodušují správu kompilace grafického potrubí (potrubí, sada operací, které mění vektorová grafická primitiva a textury na pixelové reprezentace).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 – přidání dalších dynamických stavů ke snížení počtu zkompilovaných a připojených objektů stavu.
    • VK_EXT_pipeline_creation_cache_control - Poskytuje pokročilé kontroly nad tím, kdy a jak jsou kanály kompilovány.
    • VK_EXT_pipeline_creation_feedback - Poskytuje informace o zkompilovaných kanálech, aby se usnadnilo profilování a ladění.
  • Řada funkcí byla převedena z volitelných na povinné. Například implementace odkazů na vyrovnávací paměti (VK_KHR_buffer_device_address) a paměťový model Vulkan, který definuje, jak mohou souběžná vlákna přistupovat ke sdíleným datům a synchronizačním operacím, jsou nyní povinné.
  • Je poskytováno jemné ovládání podskupiny (VK_EXT_subgroup_size_control), takže dodavatelé mohou poskytovat podporu pro více velikostí podskupin a vývojáři mohou vybrat velikost, kterou požadují.
  • Bylo poskytnuto rozšíření VK_KHR_shader_integer_dot_product, které lze použít k optimalizaci výkonu rámců strojového učení díky hardwarové akceleraci operací s bodovými produkty.
  • Celkem je zahrnuto 23 nových rozšíření:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • Údržba VK_KHR4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_synchronizace2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formáty
    • 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
  • Přidán nový typ objektu VkPrivateDataSlot. Bylo implementováno 37 nových příkazů a více než 60 struktur.
  • Specifikace SPIR-V 1.6 byla aktualizována, aby definovala přechodnou reprezentaci shaderu, která je univerzální pro všechny platformy a lze ji použít pro grafiku i paralelní výpočty. SPIR-V zahrnuje oddělení samostatné fáze kompilace shaderu do střední reprezentace, která umožňuje vytvářet rozhraní pro různé jazyky na vysoké úrovni. Na základě různých implementací na vysoké úrovni je samostatně generován jeden přechodný kód, který mohou používat ovladače OpenGL, Vulkan a OpenCL bez použití vestavěného kompilátoru shaderu.
  • Je navržen koncept profilů kompatibility. Google jako první vydal základní profil pro platformu Android, který usnadní určení úrovně podpory pokročilých funkcí Vulkan na zařízení nad rámec specifikace Vulkan 1.0. U většiny zařízení lze podporu profilu poskytovat bez instalace aktualizací OTA.

Připomeňme, že Vulkan API se vyznačuje radikálním zjednodušením ovladačů, přenosem generování příkazů GPU na aplikační stranu, možností propojovat ladicí vrstvy, sjednocením API pro různé platformy a použitím předkompilovaného střední reprezentace kódu pro spuštění na straně GPU. Pro zajištění vysokého výkonu a předvídatelnosti poskytuje Vulkan aplikacím přímou kontrolu nad operacemi GPU a nativní podporu pro GPU multi-threading, což minimalizuje režii ovladače a dělá možnosti na straně ovladače mnohem jednodušší a předvídatelnější. Například operace, jako je správa paměti a zpracování chyb, implementované v OpenGL na straně ovladače, jsou ve Vulkanu přesunuty na aplikační úroveň.

Vulkan pokrývá všechny dostupné platformy a poskytuje jediné API pro stolní počítače, mobilní zařízení a web, což umožňuje použití jednoho společného rozhraní API pro více GPU a aplikací. Díky vícevrstvé architektuře Vulkan, což znamená nástroje, které fungují s jakýmkoli GPU, mohou OEM používat standardní nástroje pro kontrolu kódu, ladění a profilování během vývoje. Pro vytváření shaderů je navržena nová přenosná prostřední reprezentace, SPIR-V, založená na LLVM a sdílení základních technologií s OpenCL. Pro ovládání zařízení a obrazovek nabízí Vulkan rozhraní WSI (Window System Integration), které řeší přibližně stejné problémy jako EGL v OpenGL ES. Podpora WSI je ve Wayland k dispozici ihned po vybalení – všechny aplikace využívající Vulkan mohou běžet v prostředí neupravených serverů Wayland. Schopnost pracovat přes WSI je poskytována také pro Android, X11 (s DRI3), Windows, Tizen, macOS a iOS.

Zdroj: opennet.ru

Přidat komentář