Add render_vk.cpp (selectable as `vk`): brings up a real Vulkan instance/device/swap chain via volk (which dlopens vulkan-1.dll -- the loader-bypass case the capture hook must handle) and clears the swap-chain image to the frame-counter colour each frame with vkCmdClearColorImage (no pipeline, no shaders, no SPIR-V) and presents. The whole image encodes the frame number, so it animates and stale frames are detectable. Adds the official Khronos Vulkan-Headers + zeux/volk submodules and a coop_require_submodule() CMake helper that fails with a clear "git submodule update --init --recursive" message rather than auto-cloning. volk is pinned to the project's dynamic CRT (no LNK4098). mock_game_test gets a vk liveness check (its present pointer is cached at init, so late injection can't hook it -- the capture path needs the early-load path, to come). 16/16 ctest, skips cleanly without a Vulkan driver. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
21 lines
832 B
CMake
21 lines
832 B
CMake
# CoopMockGame -- a tiny test "game" with an animated, frame-numbered render (DX10/DX11/DX12)
|
|
# and a configurable WASAPI tone, used by the capture/audio/hook stress tests. Not shipped.
|
|
add_executable(coop_mock_game
|
|
main.cpp
|
|
render_backend.cpp
|
|
render_dx11.cpp
|
|
render_dx12.cpp
|
|
render_dx10.cpp
|
|
render_dx09.cpp
|
|
render_gl.cpp
|
|
render_vk.cpp)
|
|
|
|
# Reuses the shared ToneSource (also used by coop_tone + the audio hook self-test).
|
|
target_include_directories(coop_mock_game PRIVATE ${CMAKE_SOURCE_DIR}/tools/audio_tone)
|
|
|
|
target_link_libraries(coop_mock_game PRIVATE d3d11 d3d12 d3d10 d3d9 dxgi ole32 opengl32 gdi32 volk)
|
|
set_target_properties(coop_mock_game PROPERTIES OUTPUT_NAME "coop_mock_game")
|
|
|
|
# Test fixture -> stage next to the tests (alongside coop_tone), not in the deployable root.
|
|
coop_output_subdir(tests coop_mock_game)
|