Skip to content

Add visual regression CI with SwiftShader#2

Merged
Monstrofil merged 6 commits into
scaleform_4_2from
visual-regression-ci
Mar 8, 2026
Merged

Add visual regression CI with SwiftShader#2
Monstrofil merged 6 commits into
scaleform_4_2from
visual-regression-ci

Conversation

@Monstrofil

Copy link
Copy Markdown

Summary

  • GitHub Actions workflow for automated visual regression testing on PRs
  • 3 CI jobs: reference PNG comparison (no GPU), SwiftShader capture + compare, staleness check
  • 168 reference PNGs (D3D11 + Vulkan, 21 tests x 4 frames)
  • Python comparison scripts with PNG support (pure stdlib, no Pillow)

Test plan

  • Verify compare-references job passes with committed PNGs
  • Verify swiftshader-capture job builds CaptureVulkan and renders correctly
  • Verify staleness-check warns when Vulkan source changes without reference update
  • Test workflow_dispatch trigger

🤖 Generated with Claude Code

@Monstrofil Monstrofil force-pushed the visual-regression-ci branch 2 times, most recently from 8053217 to b3b2953 Compare March 8, 2026 12:10
Monstrofil and others added 3 commits March 8, 2026 14:19
- GitHub Actions workflow with 3 jobs:
  1. Compare committed D3D11 vs Vulkan reference PNGs (no GPU)
  2. Build CaptureVulkan + render with SwiftShader, compare against D3D11
  3. Staleness check: warn if Vulkan source changed without reference update
- Reference PNGs for 21 test cases (D3D11 + Vulkan, 4 frames each)
- compare_reference.py: CI-friendly orchestrator for image comparison
- update_reference.py: developer tool to refresh reference images
- compare_images.py: added PNG reading support (pure stdlib)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
GitHub Actions windows-latest has VS 2022 Enterprise, not Community.
Use vswhere.exe to find the VS installation dynamically, with
hardcoded paths as fallback.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Vulkan property sheet (GFx_Renderer_Vulkan.props) uses
$(VK_SDK_PATH) for include/lib paths, but CI only set VULKAN_SDK.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Monstrofil Monstrofil force-pushed the visual-regression-ci branch from 22c8ee2 to 7fc2e7e Compare March 8, 2026 12:19
Monstrofil and others added 3 commits March 8, 2026 14:23
Added -SkipD3D11 flag to build_tests.ps1. CI only needs CaptureVulkan
for SwiftShader rendering — D3D11 libs aren't available on the runner.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The SwiftShader job rebuilds Vulkan from source and compares live
captures against D3D11 references, making the staleness heuristic
redundant.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The SwiftShader capture job builds from source and compares live
renders against D3D11 references — no need for a separate static
PNG comparison.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Monstrofil Monstrofil merged commit 3819067 into scaleform_4_2 Mar 8, 2026
1 check failed
@Monstrofil Monstrofil deleted the visual-regression-ci branch March 11, 2026 10:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant