După aproape trei ani de muncă, consorțiul Khronos, care se ocupă cu dezvoltarea standardelor grafice, a publicat specificația Vulkan 1.4, care definește API-ul pentru accesul la capabilitățile grafice și de calcul ale GPU-ului. Noua specificație a inclus extinderea acumulată, care anterior era considerată opțională, și a oferit o serie de noi capabilități, crescând în același timp cerințele minime pentru echipamente. Instrumentația Vulkan SDK este planificată pentru publicare în ianuarie 2025.
Produsele cu suport pentru Vulkan 1.4 sunt pregătite pentru lansare de companiile AMD, Arm, Imagination, Intel, NVIDIA, Qualcomm și Samsung. Driverele deschise pentru GPU AMD (radv), Apple M1/M2 (honeykrisp), Intel (anv), NVIDIA (nvk) și Qualcomm (tu), dezvoltate de proiectul Mesa, au trecut deja toate testele de compatibilitate cu Vulkan 1.4 din setul CTS (Khronos Conformance Test Suite) și sunt incluse în lista driverelor certificate. Lista include, de asemenea, driverele Samsung și Qualcomm pentru platforma Android, precum și driverele pentru GPU PowerVR D-Series DXT* de la Imagination Technologies și driverele proprietare NVIDIA.
Principalele noutăți:
- A fost adăugat suport pentru mecanismul „Streaming Transfers”, destinat asigurării transmisiei continue de volume mari de date între sistemul principal (host) și dispozitivul grafic, fără a întrerupe randarea și fără a-i diminua performanța. Mecanismul este realizat prin intermediul noii extensii VK_EXT_host_image_copy, al cărei suport este opțional.
- Au fost trecute în categoria obligatorie funcționalitățile menite să îmbunătățească performanța:
- Push Descriptors — capacitatea de a scrie actualizări ale descriptori direct în bufferul de comenzi, în loc să se creeze seturi separate de descriptori și să fie legate la bufferul de comenzi.
- VK_KHR_dynamic_rendering_local_read — permite citirea din bufferurile încorporate (attachments) și resursele scrise de shader-ele fragmentate anterioare în cadrul trecerilor de randare dinamică (render pass).
- VK_EXT_scalar_block_layout — permite utilizarea unei structuri asemănătoare C-ului pentru blocurile SPIR-V, în care se pot alinia tipurile ne-scalari pe baza dimensiunii componentelor lor.
- În compunere sunt incluse extensiile VK_KHR_maintenance5 și VK_KHR_maintenance6, care oferă comenzi și structuri auxiliare pentru simplificarea gestionării resurselor și a shader-elor.
- Suportul pentru redarea cu o rezoluție de 8K (7680 x 4320 pixeli) este garantat, folosind până la 8 buffere de redare independente.
- Pachetul include extensiile:
- 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
- Multe funcționalități, anterior opționale, au fost trecute în categoria celor obligatorii.
- A fost adăugată o mare cantitate de noi comenzi și structuri.
API Vulkan se remarcă prin simplificarea drastică a drivere-lor, mutarea generării comenzilor GPU pe partea aplicației, posibilitatea de a conecta straturi de depanare, unificarea API-ului pentru diferite platforme și utilizarea reprezentării intermediare a codului precompilate pentru execuție pe GPU.
Pentru a asigura performanță ridicată și previzibilitate, Vulkan oferă aplicațiilor instrumente pentru gestionarea directă a operațiunilor GPU și suport încorporat pentru procesarea multi-threaded a comenzilor GPU, minimizând costurile indirecte cauzate de driver, iar funcționalitățile realizate pe partea driverului devin mult mai simple și previzibile. De exemplu, operațiuni, cum ar fi gestionarea memoriei și procesarea erorilor realizate în OpenGL pe partea driverului, în Vulkan sunt mutate la nivelul aplicației.
Vulkan acoperă toate platformele disponibile și oferă un API unic pentru sisteme desktop, mobile și Web, permițând utilizarea unui singur API comun pentru diferite GPU-uri și domenii de aplicare. Datorită arhitecturii multilayer a Vulkan, care preconizează crearea de instrumente care funcționează cu orice GPU, producătorii de echipamente pot utiliza în dezvoltare instrumente standardizate pentru verificarea codului, depanare și profilare.
Pentru creare de shadere este propus un format intermediar portabil SPIR-V, bazat pe LLVM și utilizând tehnologii de bază comune cu OpenCL. De asemenea, cu Vulkan se poate folosi limbajul de shadere HLSL, folosit în DirectX, prin translația acestuia în SPIR-V. Pentru gestionarea dispozitivelor și ecranelor în Vulkan este propusă o interfață WSI (Window System Integration), care rezolvă aproximativ aceleași sarcini ca EGL în OpenGL ES. Suportul pentru WSI este disponibil nativ în Wayland - toate aplicațiile care folosesc Vulkan pot fi rulante în medii ne-modificate. servere Wayland. Posibilitatea de a lucra prin WSI este, de asemenea, asigurată pentru Android, X11 (cu DRI3), Windows, Tizen, macOS și iOS.
Sursa: opennet.ro
