A Khronos konzorcium, amely a grafikus szabványok fejlesztésével foglalkozik, közel három évnyi munka után közzétette a Vulkan 1.4 specifikációját, amely az API-t határozza meg a GPU grafikai és számítási lehetőségeihez való hozzáféréshez. Az új specifikáció összegyűjtötte azokat a kiterjesztéseket, amelyeket korábban opcionálisnak tekintettek, és új lehetőségeket kínált, valamint megemelte a hardver követelményeit. A Vulkan SDK eszközkészletét 2025 januárjában tervezik közzétenni.
A Vulkan 1.4 támogatásával rendelkező termékeket az AMD, Arm, Imagination, Intel, NVIDIA, Qualcomm és Samsung cégek készülnek kiadni. Az AMD (radv), Apple M1/M2 (honeykrisp), Intel (anv), NVIDIA (nvk) és Qualcomm (tu) nyílt GPU meghajtói, amelyeket a Mesa projekt fejleszt, már teljesítették a Vulkan 1.4 kompatibilitási tesztjeit a CTS (Khronos Conformance Test Suite) készletből, és felkerültek a hitelesített meghajtók listájára. A Samsung és Qualcomm Android platformra készült meghajtói, valamint az Imagination Technologies PowerVR D-Series DXT* GPU-jához tartozó meghajtók is szerepelnek a listán.
Fő újdonságok:
- Hozzáadva a „Streaming Transfers” mechanizmus támogatása, amely nagy mennyiségű adat folyamatos továbbítását biztosít a fő rendszer (hoszt) és a grafikus eszköz között, anélkül hogy megszakítaná a renderelést vagy csökkentené annak teljesítményét. A mechanizmust az új VK_EXT_host_image_copy kiterjesztés segítségével valósították meg, amelynek támogatása opcionális.
- Kötelezővé váltak a teljesítmény növelésére irányuló lehetőségek:
- Push Descriptors – lehetőség frissítéseket közvetlenül a parancsbuferekbe írni, ahelyett, hogy külön állapotgyűjteményeket hoznánk létre és azokhoz kötnénk a parancsbufereket.
- VK_KHR_dynamic_rendering_local_read – lehetővé teszi, hogy a dinamikus renderelési átjárók (render pass) keretein belül olvassunk a beágyazott pufferből (attachments) és a korábbi fragment shaderek által írt erőforrásokból.
- VK_EXT_scalar_block_layout – lehetővé teszi a C-szerű struktúrák használatát a SPIR-V blokkoknál, amelyeknél az összetevők mérete alapján nem skalár típusok is igazíthatók.
- A csomag tartalmazza a VK_KHR_maintenance5 és VK_KHR_maintenance6 kiterjesztéseket, amelyek segédparancsokat és struktúrákat biztosítanak az erőforrások és shaderek kezelésének egyszerűsítésére.
- Garanted az 8K (7680 x 4320 pixel) felbontású renderelés támogatása, akár 8 független renderelőpuffer felhasználásával.
- A csomag tartalmazza a következő kiterjesztéseket:
- 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
- Számos korábban opcionális lehetőség kötelezővé vált.
- Számos új parancsot és struktúrát adtak hozzá.
A Vulkan API jelentősen leegyszerűsíti a meghajtókat, lehetővé teszi a GPU parancsok generálását az alkalmazás oldalán, támogatja a hibakereső rétegek csatlakoztatását, egységesíti az API-t különböző platformokhoz, és lehetővé teszi a GPU-n végrehajtott előre lefordított köztes kódkép használatát.
A Vulkan az alkalmazások számára közvetlen irányítást biztosít a GPU műveletek felett, és beépített támogatást nyújt a GPU parancsok párhuzamos feldolgozásához, minimalizálva a meghajtó által bevezetett költségeket, míg a meghajtó szintjén megvalósított lehetőségek jelentősen egyszerűsödnek és kiszámíthatóbbá válnak. Például a memória kezelése és a hibakezelés, amelyek a OpenGL-ben a meghajtó oldalán valósulnak meg, a Vulkanban az alkalmazás szintjére kerülnek.
A Vulkan minden elérhető platformot lefed, és egységes API-t biztosít asztali, mobil rendszerek és Web számára, lehetővé téve egy közös API használatát különböző grafikus feldolgozók és alkalmazási területek számára. A Vulkan rétegezett architektúrája lehetővé teszi a bármilyen GPU-val működő eszközök létrehozását, így a hardvergyártók szabványos eszközöket használhatnak a kód tesztelésére, hibakeresésére és profilozására a fejlesztés során.
A shaderek létrehozásához egy LLVM-alapú hordozható köztes reprezentáció, a SPIR-V javasolt, amely a nyílt forráskódú OpenCL alapjait használja. A Vulkannal együtt használható az HLSL árnyékoló nyelv, amely a DirectX-ben alkalmazott, SPIR-V-be történő lefordítás útján. Az eszközök és képernyők kezeléséhez a Vulkan WSI (Window System Integration) interfészt kínál, amely hasonló feladatokat lát el, mint az EGL az OpenGL ES-ben. A WSI támogatása alapértelmezetten elérhető a Waylandban – minden Vulkan-t használó alkalmazás futtatható a módosítatlan környezetben. szerverek Wayland. A WSI-n keresztüli működés lehetősége biztosított az Android, X11 (DRI3-tól), Windows, Tizen, macOS és iOS számára.
Forrás: opennet.ru
