Synchronization Validation for the Vulkan API was first released in 2020 and has been substantially evolved to support Synchronization2. The newly released Vulkan API VK_KHR_synchronization2 extension brings extensive improvements to Vulkan queue submission, events, and pipeline barriers resulting in significant API usability enhancements for developers.
Synchronization2 highlights include:
- Data for semaphores and command buffers is passed in arrays of structures, rather than in separate arrays spread across multiple structures, to streamline queue submissions.
- Barrier pipeline stage masks are now stored in the barrier structure rather than passed as separate parameters to vkCmdPipelineBarrier() to simplify resource state tracking.
- VkPipelineStageFlags2KHR and VkAccessFlags2KHR are expanded to 64-bits to allow for future extensibility with new extensions.
- vkCmdSetEvent2KHR() requires pipeline barriers, enhancing driver efficiency by scheduling work at event ‘set’ time, rather than the ‘wait’ for barrier information to become available.
- New image layout types now ‘do the right thing’ for both color and depth/stencil images. Also, image layout transitions do not happen if a barrier’s oldLayout and newLayout field are equal, even if the layout provided doesn’t match the current layout of the image.
Synchronization2 brings big changes to Vulkan to improve developer productivity and application performance. Updates to the Vulkan SDK and vkconfig will improve API usability for developers.
Click here to download a copy of the LunarG Vulkan Synchronization2 white paper that includes an introduction to Synchronization2 and instructions to help you get started.