Correct synchronization is needed to ensure correct results from Vulkan operations (whether graphical or computational). Modern graphics hardware is both parallel and pipelined, with various operations happening simultaneously for performance reasons. Vulkan has a limited number of ordering guarantees, but for most operations, it is the application’s responsibility to inform the implementation when ordering is required between operations. The need for such synchronization operations arises when the same region of memory is used by subsequent operations in different ways — for example a mip-level being written by a blit operation, and then being used for sampled lookup by a shader. If these two uses are not guaranteed to operate sequentially, a data hazard exists.
A Vulkan Synchronization Validation layer has been created to help identify resource access conflicts due to missing or incorrect synchronization operations between actions (Draw, Copy, Dispatch, Blit) reading or writing the same regions of memory.
Click here to view the Guide to Vulkan Synchronization Validation, a LunarG white paper that provides an overview of synchronization and why it is important along with a quick start guide for new users. The reader will learn about synchronization validation and associated validation messages, how to use synchronization validation, and how to optimize it.
Developers should be familiar with both Vulkan Synchronization and using/configuring Vulkan Validation before trying to run synchronization validation.