diff --git a/README.md b/README.md index 4216926..7cabb56 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,22 @@ default** and covers anything the hooked path doesn't. ## 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), 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