Vulkan is a low-overhead, cross-platform API, open standard for 3D graphics and computing.
Vulkan targets high-performance real-time 3D graphics applications, such as video games and interactive media. Compared to OpenGL, Direct3D 11 and Metal, Vulkan is intended to offer higher performance and more balanced CPU and GPU usage and provides a considerably lower-level API and parallel tasking for the application. In addition to its lower CPU usage, Vn is designed to allow developers to better distribute work among multiple CPU cores.
Vulkan 1.2.185 has the large assortment of different documentation fixes and clarifications plus this time around has a few new extensions. The four new Vn extensions are:
- VK_EXT_shader_atomic_float2 - This updated shader atomic float extension allows a shader to perform 16-bit floating-point atomic operations on buffer and workgroup memory as well as floating-point atomic minimum/maximum operations on buffer/workgroup/image memory. VK_EXT_shader_atomic_float2 was drafted by Intel's Linux Vulkan driver developer lead Jason Ekstrand.
- VK_HUAWEI_persistent_thread - Documentation is currently lacking around this Huawei vendor extension for persistent thread support.
- VK_KHR_present_id - Based on work Keith Packard did for Valve back in 2019, VK_KHR_present_id allows an application to provide an identifier for present operations on a swapchain in conjunction with KHR_swapchain.
- VK_KHR_present_wait - VK_KHR_present_wait is another extension drafted back in 2019 as part of Keith's work for Valve at the time. This extension allows an application to wait for present operations to complete in conjunction with KHR_swapchain. VK_KHR_present_wait can be used for monitoring and controlling the pacing of the application via the number of outstanding images not yet presented.
The VK_KHR_present_id and VK_KHR_present_wait originate from that work by Keith as part of improving the Linux infrastructure for VR headsets on Linux and trying to ensure timely and expected rendering to head-mounted displays. It's taken a long time though to go through the Vulkan working group processes and become part of the spec.
Vulkan is not backwards compatible with OpenGL.