Efter næsten tre års arbejde har konsortiet Khronos, der beskæftiger sig med udviklingen af grafiske standarder, offentliggjort specifikationen Vulkan 1.4, der definerer API'en til adgang til grafiske og beregningsmæssige evner fra GPU'en. Den nye specifikation omfatter de akkumulerede udvidelser, der tidligere blev præsenteret som valgfrie, samt tilbyder en række nye muligheder og hæver de minimale hardwarekrav. Vulkan SDK-værktøjet planlægges offentliggjort i januar 2025.
Produkter med support for Vulkan 1.4 forberedes til lancering af virksomhederne AMD, Arm, Imagination, Intel, NVIDIA, Qualcomm og Samsung. Åbne drivere til AMD GPU'er (radv), Apple M1/M2 (honeykrisp), Intel (anv), NVIDIA (nvk) og Qualcomm (tu), der udvikles af Mesa-projektet, har allerede bestået alle kompatibilitetstest med Vulkan 1.4 fra CTS (Khronos Conformance Test Suite) og er inkluderet på listen over certificerede drivere. Listen inkluderer også drivere fra Samsung og Qualcomm til Android-platformen, samt drivere til PowerVR D-Series DXT*-GPU'er fra Imagination Technologies og proprietære NVIDIA-drivere.
Hovednyheder:
- Supporten for mekanismen "Streaming Transfers" er blevet tilføjet, og den er designet til at sikre streaming af store datamængder mellem det primære system (værten) og grafikkenheden uden at afbryde rendering eller sænke ydelsen. Mekanismen er implementeret ved hjælp af den nye udvidelse VK_EXT_host_image_copy, hvis support er valgfri.
- Muligheder, der sigter mod at forbedre ydelsen, er blevet kategoriseret som obligatoriske:
- Push Descriptors - muligheden for at skrive opdateringer af descriptors direkte i kommandopufferet i stedet for at oprette separate sæt descriptors og binde dem til kommandopufferet.
- VK_KHR_dynamic_rendering_local_read - muliggør læsning fra indlejrede buffere (attachments) og ressourcer skrevet af tidligere fragment-shadere inden for dynamiske renderingpass.
- VK_EXT_scalar_block_layout - giver mulighed for at bruge en C-lignende struktur til SPIR-V-blokke, hvor ikke-skalar typer kan blive justeret baseret på størrelsen af deres komponenter.
- Inkluderet er udvidelserne VK_KHR_maintenance5 og VK_KHR_maintenance6, som giver hjælpekommandoer og strukturer for at forenkle administrationen af ressourcer og shaders.
- Garantien for rendering ved 8K opløsning (7680 x 4320 pixel) med op til 8 uafhængige renderingsbuffere.
- Included extensions:
- 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
- Flere funktioner, der tidligere var valgfrie, er nu gjort obligatoriske.
- En stor mængde nye kommandoer og datastrukturer er blevet tilføjet.
Vulkan API er kendetegnet ved en markant forenkling af drivere, ved at flytte GPU kommando generering til applikationens side, muligheden for at tilslutte debug-lag, en ensartet API på tværs af platforme og brugen af forudkompileret mellemrepræsentation af kode til udførelse på GPU-siden.
For at sikre høj ydeevne og forudsigelighed, giver Vulkan applikationerne midler til direkte styring af GPU-operationer og indbygget støtte til multithreaded behandling af GPU-kommandoer, hvilket minimerer omkostningerne påført af driveren, mens driverens implementerede funktioner forenkles og bliver mere forudsigelige. For eksempel, operationer som hukommelseshåndtering og fejlhåndtering, der er implementeret i OpenGL på driverens side, er i Vulkan flyttet til applikationsniveau.
Vulkan dækker alle tilgængelige platforme og tilbyder en ensartet API til desktop, mobile systemer og web, hvilket muliggør brugen af en fælles API til forskellige grafikprocessorer og anvendelsesområder. Takket være den lagdelte arkitektur i Vulkan, der muliggør oprettelse af værktøjer, der arbejder med enhver GPU, kan hardwareproducenter anvende standardværktøjer til kodeverifikation, debugging og profilering i udviklingsprocessen.
Til shader-udvikling tilbydes et bærbart mellemrepræsentation SPIR-V, baseret på LLVM og anvendende fælles grundlæggende teknologier med OpenCL. Med Vulkan kan også HLSL shader-sproget anvendes, som bruges i DirectX, gennem dets oversættelse til SPIR-V. For styring af enheder og skærme i Vulkan tilbydes et WSI (Window System Integration) interface, der løser omtrent de samme opgaver som EGL i OpenGL ES. WSI understøttelse er out-of-the-box tilgængelig i Wayland — alle applikationer, der bruger Vulkan, kan køre i et miljø med uændrede servere Wayland. Muligheden for at arbejde via WSI er også understøttet for Android, X11 (med DRI3), Windows, Tizen, macOS og iOS.
Kilde: opennet.ru
