RHI Integration Tests
This directory contains backend-agnostic integration tests for the RHI abstraction layer.
Current goals:
- Verify that the same RHI scene code runs on
D3D12,OpenGL, andVulkan - Verify real rendering output, not just object creation
- Catch abstraction regressions through golden-image comparison
Current scenes
minimal: clear, present, screenshot, GT comparetriangle: minimal graphics pipeline and vertex inputquad: textured quad renderingsphere: textured sphere and descriptor-set path withfirstSet != 0backpack: real OBJ model rendering through the RHI abstraction
Golden image rule
Each scene directory keeps exactly one baseline image:
GT.ppm
Runtime screenshots are backend-specific:
<scene>_d3d12.ppm<scene>_opengl.ppm<scene>_vulkan.ppm
All backends must compare against the same GT.ppm.
Build
Build all abstraction-layer integration tests:
cmake --build build --config Debug --target rhi_abstraction_integration_tests
Build a single scene:
cmake --build build --config Debug --target rhi_integration_backpack
Run
Examples:
build\tests\RHI\integration\minimal\Debug\rhi_integration_minimal.exe --gtest_filter=Vulkan/MinimalTest.RenderClear/0
build\tests\RHI\integration\triangle\Debug\rhi_integration_triangle.exe --gtest_filter=D3D12/TriangleTest.RenderTriangle/0
build\tests\RHI\integration\quad\Debug\rhi_integration_quad.exe --gtest_filter=OpenGL/QuadTest.RenderQuad/0
build\tests\RHI\integration\backpack\Debug\rhi_integration_backpack.exe --gtest_filter=Vulkan/BackpackTest.RenderBackpack/0
Rules
- Integration tests in this directory may only depend on public RHI interfaces and shared fixtures.
- If a new scene exposes an abstraction problem, fix the RHI first, then extend the test.
- Do not split golden images by backend unless the abstraction contract itself changes.