Synchronization Validation is a new layer in the Vulkan toolkit. Synchronization Validation is intended to 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. LunarG has created a Quick Start Guide for Vulkan developers.
This guide should allow developers familiar with Vulkan synchronization and debugging validation issues to begin to use the Synchronization Validation Layer. Prior to enabling Synchronization Validation, ensure that the default set of Validation checks run cleanly. It is assumed that quick start readers are familiar with both Vulkan Synchronization and using/configuring Vulkan Validation. Click here for access to the Vulkan Synchronization Quick Start Guide.
You can find the Synchronization Validation Layer in the Vulkan SDK.
September 9th Update: Frequently Found Issues from the Quick Start Guide
This list of frequently found issues was not in the 126.96.36.199 SDK documentation, but it will be included with the next release of the SDK.
Assuming Pipeline stages are logically extended with respect to memory access barriers, specifying the vertex shader stage in a barrier will not apply to all subsequent shader stages read/write access. If you’re doing access barriers with TOP or BOTTOM as (src|dst)StageMask, you’re probably making a mistake.
Invalid stage/access pairs (specifying a pipeline stage for which a given access is not valid) that yield no barrier.
Relying on implicit subpass dependencies with VK_SUBPASS_EXTERNAL when memory barriers are needed.
Missing memory dependencies with Image Layout Transitions from pipeline barrier or renderpass Begin/Next/End operations.
Missing stage/access scopes for load operations, noting that color and depth/stencil are done by different stage/access.
More information about LunarG
LunarG’s software engineering experts create innovative products and services for open source and commercial customers using leading-edge 3D graphics and compute technologies, including Vulkan, OpenXR, SPIR-V, and OpenGL. We have strengths in performance analysis and tuning, runtime and tools development, shader optimizations, driver development, and porting engines and applications to Vulkan. Our software engineering team is based in Fort Collins, Colorado. LunarG was founded by software experts who are passionate about 3D graphics.
For more information about LunarG, please check out our new website.