VK_KHR_synchronization2 extension support in our latest developer driver
Our latest Radeon Software Adrenalin developer driver has just been released, providing initial support for the VK_KHR_synchronization2
extension.
This extension revises the original core synchronization APIs to simplify the interface and improve usability of these APIs. It also adds new pipeline stage and access flag types that extend into the 64-bit range; new flags are identical to the old values within the 32-bit range, new stages and bits will be added beyond that.
Whilst the overall shape of synchronization in the new API is similar to the original, there are a number of useful changes which should make developer’s lives simpler:
- Of particular note is that VkEvent APIs have changed to include access and layout change information when signalling an event. Our driver will now use this information to perform cache maintenance operations and image layout changes asynchronously to other operations – something that was only possible in limited circumstances in the original event APIs.
- In a similar vein, a new “GPU-only” flag on events allows additional optimisations when CPU interactions are not required – which we take advantage of to reduce latency and system memory traffic.
Other changes are primarily focused on making the API more intuitive, particularly with the relation between access masks, image layouts, and pipeline stages: far more information can now be provided contextually.
For example:
- Pipeline stages are now provided per memory barrier, and using
VK_ACCESS_MEMORY_READ_BIT
is now guaranteed to only flush caches affecting the pipeline stages in the same memory barrier. - The new
VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
layout. This works the same asVK_IMAGE_LAYOUT_COLOR_ATTACHMENT_ONLY_KHR
for color images, but asVK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
for depth/stencil images.
Full details of the exact changes are available in the Vulkan specification, and are summarised in the man page for VK_KHR_synchronization2
.
We’re looking forward to seeing how developers are able to use the new APIs to improve performance on AMD GPUs, and hope it will help simplify synchronization API usage in their engines.
More GPUOpen Vulkan® content
Vulkan® Memory Allocator
VMA is our single-header, MIT-licensed, C++ library for easily and efficiently managing memory allocation for your Vulkan® games and applications.
Vulkan®
Vulkan® gives software developers control over the performance, efficiency, and capabilities of AMD Radeon™ GPUs and multi-core CPUs.
Radeon™ Vulkan® Drivers Version Table
A handy table listing the equivalent versions of Vulkan®, Windows Store, and internal drivers for each Radeon Software Adrenalin driver release.
Vulkan® ray tracing extension support in our latest AMD Radeon™ Adrenalin driver 20.11.3
Read about the Vulkan® ray tracing extensions now supported by our latest driver.