News: 0001632946

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

Vulkan 1.4.351 Brings Six New Extensions, Including A Ray-Tracing Improvement

([Vulkan] 96 Minutes Ago Vulkan 1.4.351)


Quietly sneaking out at the end of last week was Vulkan 1.4.351 as the newest spec update to this high performance graphics and compute API.

Along with last week bringing [1]the OpenCL 3.1 release and [2]Vulkan SC SDK , The Khronos Group rounded out the week with Vulkan 1.4.351. This new Vulkan spec update ushers in six new extensions. New extensions include VK_KHR_opacity_micromap, VK_EXT_shader_split_barrier, VK_AMD_gpa_interface, VK_QCOM_elapsed_timer_query, VK_QCOM_image_processing3, and VK_QCOM_shader_multiple_wait_queues.

VK_KHR_opacity_micromap - The VK_KHR_opacity_micromap extension was worked on by many engineers from a number of different organizations, including Valve's Hans-Kristian Arntzen and all the major hardware vendors. This extension is for improving Vulkan ray-traced scenes in adding the ability to add an opacity micromap to geometry when building an acceleration structure. The extension text explains:

"When adding transparency to a ray traced scene, an application can choose between further tessellating the geometry or using an any-hit shader to allow the ray through specific parts of the geometry. These options have the downside of either significantly increasing memory consumption or adding runtime overhead to run shader code in the middle of traversal, respectively.

This extension adds the ability to add an opacity micromap to geometry when building an acceleration structure. The opacity micromap compactly encodes opacity information which can be read by the implementation to mark parts of triangles as opaque or transparent. The format is externally visible to allow the application to compress its internal geometry and surface representations into the compressed format ahead of time.

The compressed format subdivides each triangle into a set of subtriangles, each of which can be assigned either two or four opacity values. These opacity values can control if a ray hitting that subtriangle is treated as an opaque hit, complete miss, or possible hit, depending on the controls described in Ray Opacity Micromap."

VK_EXT_shader_split_barrier - Qualcomm, Intel, and NVIDIA engineers devised VK_EXT_shader_split_barrier as a new extension for splitting the OpControlBarrier by two new barrier operations with SPIR-V: OpControlBarrierArriveEXT and OpControlBarrierWaitEXT. This functionality can be used to allow apps to synchronize their subgroup execution flow within a workgroup without making all subgroups wait at the arrival condition before proceeding to execute their work independently.

VK_AMD_gpa_interface - This AMD vendor extension adds the GPU Performance API "GPA" interface for GPU global performance counters, streaming performance monitors, and SQTT thread traces on AMD Radeon GPUs.

VK_QCOM_elapsed_timer_query - This new Qualcomm vendor extension provides functionality similar to OpenGL' ARB_timery_query for being able to have a new query type to write out the elapsed time between a set of commands.

VK_QCOM_image_processing3 - For a new SPIR-V built-in function to support pre-defined image gather operations used in various image processing algorithms such as for super resolution upscaling and contrast-adaptive sharpening.

VK_QCOM_shader_multiple_wait_queues - The third and final new Qualcomm extension this round is VK_QCOM_shader_multiple_wait_queues as a new loop control hint for the SPIR-V execution environment. This hint can be used for the compiler that it should use multiple wait queues to optimize a loop.

More details on the Vulkan 1.4.351 spec update can be found via [3]GitHub .



[1] https://www.phoronix.com/news/OpenCL-3.1-Released

[2] https://www.phoronix.com/news/Vulkan-SC-SDK

[3] https://github.com/KhronosGroup/Vulkan-Docs/commit/33f0e685493860e6d7a99c3b669be4c1b63d0fed



Since we have to speak well of the dead, let's knock them while they're alive.
-- John Sloan