Roadmap: add vsync-preservation, DX12 perf, and mock-game-all-backends tasks

Follow-ups from real-game testing:
1. The Vulkan capture must not change the swapchain sync mode, and must not
   throttle/frame-limit capture (that's vsync's job). Remove the ~150 Hz throttle
   and prove the present mode/rate is unchanged with vs without the layer.
2. DX12 capture overhead (~0.34 ms) is higher than DX11 (~0.05) / GL (~0.09) due
   to the D3D11On12 bridge -- investigate and improve.
3. The mock game only drives D3D11/D3D12; add Vulkan/OpenGL/D3D9 renderers so every
   capture path has game-driven coverage (this gap is why the Vulkan stall slipped
   through). Make the mock game a real-world test across all backends.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-23 08:38:46 +02:00
parent 15d6da92bc
commit d4412ff610

View File

@@ -108,6 +108,22 @@ default** and covers anything the hooked path doesn't.
## Roadmap ## Roadmap
### Current tasks
- **The Vulkan capture must not change the swapchain's sync mode.** If the game vsyncs (e.g. FIFO at
144 Hz), it must still vsync with the layer/hook attached; if it didn't, it must not start. The
capture is forbidden from throttling or frame-limiting — that is vsync's job. Remove the ~150 Hz
capture throttle and prove (measure) the present mode/rate is identical with and without the layer.
- **DX12 capture is measurably slower than the other backends — find out why and improve it.** The
present-thread overhead guard shows DX12 ~0.34 ms vs DX11 ~0.05 ms / OpenGL ~0.09 ms (the D3D11On12
bridge). Investigate and reduce it.
- **The mock game must implement and test *every* rendering backend.** Today `coop_mock_game` only
drives D3D11/D3D12, so the Vulkan/OpenGL/D3D9 capture paths have no game-driven coverage (which is
why the Vulkan present-thread stall slipped through). Add Vulkan, OpenGL, and D3D9 renderers to the
mock game and exercise each through the capture + perf tests, so it serves as a real-world test.
### Done
The near-term tracked tasks are complete: injection hardening (the cross-backend safe-unhook drain), The near-term tracked tasks are complete: injection hardening (the cross-backend safe-unhook drain),
two-path audio-format correlation (rate + channels/bit-depth recovery), mouse + keyboard forwarding two-path audio-format correlation (rate + channels/bit-depth recovery), mouse + keyboard forwarding
for DirectInput and Raw Input games, real-game Vulkan validation (`coop_vk_validate` against Sphere for DirectInput and Raw Input games, real-game Vulkan validation (`coop_vk_validate` against Sphere