Po takmer troch rokoch práce zoskupenie Khronos, ktoré sa zaoberá vývojom grafických štandardov, zverejnilo špecifikáciu Vulkan 1.4, ktorá určuje API pre prístup k grafickým a výpočtovým možnostiam GPU. Nová špecifikácia obsahuje nahromadené rozšírenia, ktoré boli predtým považované za voliteľné, a poskytla množstvo nových funkcií a zvýšila minimálne požiadavky na hardvér. Nástroj Vulkan SDK plánujú zverejniť v januári 2025.
Produkty s podporou Vulkan 1.4 sa pripravujú na vydanie spoločnosťami AMD, Arm, Imagination, Intel, NVIDIA, Qualcomm a Samsung. Otvorené ovládače pre GPU AMD (radv), Apple M1/M2 (honeykrisp), Intel (anv), NVIDIA (nvk) a Qualcomm (tu), rozvíjané projektom Mesa, už úspešne prešli všetkými testami kompatibility s Vulkan 1.4 zo súboru CTS (Khronos Conformance Test Suite) a sú zahrnuté v zozname certifikovaných ovládačov. Zoznam tiež obsahuje ovládače Samsung a Qualcomm pre platformu Android, ako aj ovládače pre GPU PowerVR D-Series DXT* od spoločnosti Imagination Technologies a proprietárne ovládače NVIDIA.
Hlavné novinky:
- Bola pridaná podpora mechanizmu „Streaming Transfers“, určeného na zabezpečenie streamovania veľkých objemov údajov medzi hlavnou systémom (hostiteľom) a grafickým zariadením bez prerušenia renderovania a bez znižovania jeho výkonu. Mechanizmus je realizovaný prostredníctvom nového rozšírenia VK_EXT_host_image_copy, ktorého podpora je voliteľná.
- Vlastnosti zamerané na zvýšenie výkonu boli prevedené do kategórie povinných:
- Push Descriptors — možnosť zapisovať aktualizácie deskriptorov priamo do príkazového frontu, namiesto vytvárania samostatných sád deskriptorov a ich pripojenia k príkazovému frontu.
- VK_KHR_dynamic_rendering_local_read — umožňuje vykonávať čítania z vnorených bufferov (attachments) a zdrojov zapísaných predchádzajúcimi fragmentovými shaderom v rámci dynamických renderingových prechodov (render pass).
- VK_EXT_scalar_block_layout — umožňuje používať štruktúru podobnú C pre bloky SPIR-V, v ktorej je možné zarovnávať neskalárne typy na základe veľkosti ich komponentov.
- Zahŕňa rozšírenia VK_KHR_maintenance5 a VK_KHR_maintenance6, ktoré poskytuje pomocné príkazy a štruktúry na zjednodušenie správy zdrojov a shaderov.
- Zaručená podpora renderovania v rozlíšení 8K (7680 x 4320 pixelov) s použitím až 8 nezávislých renderovacích bufferov.
- Súčasťou sú rozšírenia:
- 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
- Mnohé možnosti, ktoré boli predtým voliteľné, sa stali povinnými.
- Pridalo sa veľké množstvo nových príkazov a štruktúr.
API Vulkan sa vyznačuje radikálnym zjednodušením ovládačov, presunom generovania príkazov GPU na stranu aplikácie, možnosťou pripojenia ladacích vrstiev, jednotným API pre rôzne platformy a aplikovaním predkompilovanej medzifázovej reprezentácie kódu na vykonávanie na strane GPU.
Na zabezpečenie vysokej výkonnosti a predvídateľnosti Vulkan poskytuje aplikáciám prostriedky na priame riadenie operácií GPU a vstavanú podporu pre viacvláknové spracovanie príkazov GPU, čím minimalizuje režijné náklady spôsobené ovládačom, pričom možnosti realizované na strane ovládača sa výrazne zjednodušujú a stávajú sa predvídateľnejšími. Napríklad operácie ako správa pamäte a spracovanie chýb, realizované v OpenGL na strane ovládača, sú vo Vulkane presunuté na úroveň aplikácie.
Vulkan pokrýva všetky dostupné platformy a poskytuje jednotné API pre desktopové, mobilné systémy a web, čo umožňuje používať jedno spoločné API pre rôzne grafické procesory a oblasti využitia. Vďaka viacúrovňovej architektúre Vulkana, ktorá predpokladá vytváranie nástrojov fungujúcich s akýmikoľvek GPU, môžu výrobcovia hardvéru pri vývoji využívať štandardizované nástroje na kontrolu kódu, ladenie a profilovanie.
Na vytváranie shaderov sa ponúka prenosné medzifázové zobrazenie SPIR-V, založené na LLVM a využívajúce spoločné technológie s OpenCL. S Vulkanom je tiež možné použiť jazyk shaderov HLSL, aplikovaný v DirectX, prostredníctvom jeho prekladu do SPIR-V. Na riadenie zariadení a obrazoviek vo Vulkane sa ponúka rozhranie WSI (Window System Integration), ktoré rieši približne tie isté úlohy ako EGL v OpenGL ES. Podpora WSI je okamžite dostupná v Waylande — všetky aplikácie používajúce Vulkan môžu bežať v prostredí nemodifikovaných. serverov Wayland. Možnosť práce cez WSI je tiež zabezpečená pre Android, X11 (s DRI3), Windows, Tizen, macOS a iOS.
Zdroj: opennet.ru
