In Simple Engine, we integrate Synchronization Validation directly into our debug builds. When you run the engine with the --debug-sync command-line flag (or enable it in renderer_core.cpp), we automatically add vk::ValidationFeatureEnableEXT::eSynchronizationValidation to our instance creation.
This is a critical part of our development workflow. Whenever we add a new rendering pass—like our recent Forward+ Lighting or Ray Query Shadows—we run the engine with synchronization validation enabled. This allows us to catch any "Write-After-Read" (WAR) or "Read-After-Write" (RAW) hazards early, before they manifest as flickering pixels or intermittent GPU hangs. By letting the tools find these hazards for us, we can spend more time optimizing our engine and less time chasing down elusive synchronization bugs.
In the next section, we’ll see how to decipher the error messages this layer produces.