ci: run the Vulkan game tests with synchronization validation - #3457
Conversation
Synchronization validation reports a missing barrier as a validation error, which GameTestBase turns into a test failure. Core validation does not report those. Every suite in the GPU solution filter passes under the switch with no hazard. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHYKv129fEUp6sxMbybZWf
|
Tested on my fork (this commit on top of current master, which has #3324):
I also ran a canary to confirm the switch is really active on CI and adds coverage. I removed the two attachment read bits in
So core validation alone does not catch it, and this change does. Note the checks on this PR skipped all test jobs (workflow-only change), so the runs above are the actual test. Good to merge. Follow-up: I also tried the switch on the sample lanes (test-enduser). It found two real barrier bugs around the read-only depth buffer that no unit test reaches (a |
PR Details
Follow-up to #3324, which adds the
STRIDE_VULKAN_SYNC_VALIDATION=1switch. This sets it on the Vulkan leg oftest-windows-game.yml, so a missing barrier fails the test instead of passing silently.No new matrix leg and no callback change.
GameTestBase.RunGameTestalready collects everyDebugLogModuleerror during a run and fails the test with them; synchronization hazards arrive at error severity. The switch is inert until #3324 merges, and it is inert on the Direct3D legs.Every suite in
build\Stride.Tests.Game.GPU.slnfwas run on Vulkan (Lavapipe, Debug) with the switch on the #3324 head:Stride.Graphics.Tests,Stride.Graphics.Tests.10_0,Stride.Graphics.Tests.11_0,Stride.Engine.Tests,Stride.Physics.TestsandStride.UI.Testsall pass with no hazard reported. Without #3324's access-mask fix,TestHammersleyandTestRadiancePrefilteringGgxFaceContinuityfail onREAD_AFTER_WRITEatvkCmdBeginRendering, which is the failure this leg exists to catch.Related Issue
Follow-up to #3324.
Types of changes
Checklist
🤖 Generated with Claude Code
https://claude.ai/code/session_01VHYKv129fEUp6sxMbybZWf