Po téměř třech letech práce zveřejnil konsorcium Khronos, které se zabývá vývojem grafických standardů, specifikaci Vulkan 1.4, určující API pro přístup ke grafickým a výpočetním schopnostem GPU. Nová specifikace zahrnuje nahromaděná rozšíření, která byla dříve označena jako volitelná, a také přináší řadu nových možností a zvyšuje minimální požadavky na hardware. Nástroje Vulkan SDK se plánují vydat v lednu 2025.
Produkty s podporou Vulkan 1.4 se chystají vydat společnosti AMD, Arm, Imagination, Intel, NVIDIA, Qualcomm a Samsung. Otevřené ovladače pro GPU AMD (radv), Apple M1/M2 (honeykrisp), Intel (anv), NVIDIA (nvk) a Qualcomm (tu), vyvíjené projektem Mesa, již úspěšně prošly všemi testy kompatibility s Vulkan 1.4 v rámci sady CTS (Khronos Conformance Test Suite) a jsou zahrnuty v seznamu certifikovaných ovladačů. V seznamu jsou také ovladače Samsung a Qualcomm pro platformu Android, stejně jako ovladače pro GPU PowerVR D-Series DXT* od společnosti Imagination Technologies a proprietární ovladače NVIDIA.
Hlavní novinky:
- Byla přidána podpora mechanismu „Streaming Transfers“, který je určen pro zajištění streamovacího přenosu velkého objemu dat mezi hlavním systémem (hostitelem) a grafickým zařízením, aniž by se přerušil rendering nebo zpomalila jeho výkonnost. Mechanismus je realizován pomocí nového rozšíření VK_EXT_host_image_copy, jehož podpora je volitelná.
- Do kategorie povinných funkcí byly zařazeny možnosti zaměřené na zvýšení výkonnosti:
- Push Descriptors – možnost zapisovat aktualizace descriptorů přímo do příkazového bufferu místo vytváření samostatných sad descriptorů a jejich připojení k příkazovému bufferu.
- VK_KHR_dynamic_rendering_local_read – umožňuje čtení z vnořených bufferů (attachments) a zdrojů zapsaných předchozími fragmentovými shadery v rámci dynamických průchodů renderování (render pass).
- VK_EXT_scalar_block_layout – umožňuje používat strukturu podobnou jazyku C pro bloky SPIR-V, ve které lze zarovnávat neskalární typy na základě velikosti jejich komponent.
- Mezi nimi jsou zahrnuta rozšíření VK_KHR_maintenance5 a VK_KHR_maintenance6, která poskytují pomocné příkazy a struktury pro zjednodušení správy zdrojů a shaderů.
- Garantovaná podpora renderování s rozlišením 8K (7680 x 4320 pixelů) a s využitím až 8 nezávislých vyrovnávacích pamětí.
- Součástí jsou rozšíření:
- VK_KHR_global_priority
- VK_KHR_index_type_uint8
- VK_KHR_line_rasterization
- VK_KHR_load_store_op_none
- VK_KHR_map_memory2
- VK_KHR_push_descriptor
- VK_KHR_shader_expect_assume
- VK_KHR_shader_float_controls2
- VK_KHR_shader_subgroup_rotate
- VK_KHR_vertex_attribute_divisor
- VK_EXT_pipeline_protected_access
- VK_EXT_pipeline_robustness
- Mnoho dříve volitelných funkcí bylo převedeno mezi povinné.
- Byla přidána velká část nových příkazů a struktur.
API Vulkan se vyznačuje radikálním zjednodušením ovladačů, přesunem generace příkazů GPU na stranu aplikace, možností připojení ladicích vrstev, unifikací API pro různé platformy a použitím předkompilovaného mezilehlého výstupu kódu pro vykonávání na straně GPU.
Pro zajištění vysokého výkonu a předvídatelnosti poskytuje Vulkan aplikacím prostředky pro přímé řízení operací GPU a vestavěnou podporu vícervozového zpracování příkazů GPU, což minimalizuje režijní náklady přenášené ovladačem. Možnosti, které jsou v OpenGL realizovány na straně ovladače, jsou v Vulkanu přesunuty na úroveň aplikace.
Vulkan pokrývá všechny dostupné platformy a poskytuje jednotné API pro desktopové, mobilní systémy a Web, což umožňuje používat jedno společné API pro různé grafické procesory a aplikační oblasti. Díky vícevrstvé architektuře Vulkan, která zahrnuje vytváření nástrojů pracujících s jakýmikoli GPU, mohou výrobci hardwaru při vývoji využívat standardizované nástroje pro kontrolu kódu, ladění a profilování.
Pro vytváření shaderů se nabízí přenosné mezilehlé zobrazení SPIR-V, založené na LLVM a využívající běžné základní technologie s OpenCL. S Vulkanem lze také použít jazyk shaderů HLSL, který se používá v DirectX, prostřednictvím jeho převodu na SPIR-V. Pro správu zařízení a obrazovek v Vulkanu je k dispozici rozhraní WSI (Window System Integration), které řeší přibližně stejné úkoly jako EGL v OpenGL ES. Podpora WSI je nativně dostupná ve Waylandu – všechny aplikace využívající Vulkan mohou běžet v prostředí nemodifikovaných. servery Wayland. Možnost práce přes WSI je také zajištěna pro Android, X11 (s DRI3), Windows, Tizen, macOS a iOS.
Zdroj: opennet.ru
