From 60957775b7be7d72b2a07105fe88fb985e46e246 Mon Sep 17 00:00:00 2001 From: BlackMark Date: Tue, 23 Jun 2026 07:40:49 +0200 Subject: [PATCH] Roadmap: add the two Vulkan tasks (perf collapse + suspended-inject) Real-game testing of Sphere Spectacle (144 FPS, no focus throttle, runs without Steam) surfaced two genuine defects the earlier "validation" missed: 1. The implicit-layer capture drops the game to ~3 FPS -- it stalls the present thread on a full GPU readback every frame. Vulkan support is meaningless until capture is (near-)free. 2. The inline-hook (suspended-inject) path must actually work on this title, or be proven a true limitation -- Steam is not the reason it currently doesn't. Final verification of both paths is to be done with the game launched through Steam. Tracked as Current tasks; will move to Done as each lands. Co-Authored-By: Claude Opus 4.8 --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e36e14..b57fb62 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,23 @@ default** and covers anything the hooked path doesn't. ## Roadmap -The near-term tracked tasks are complete: injection hardening (the cross-backend safe-unhook drain), +### Current tasks + +- **Vulkan capture has a catastrophic performance cost.** Against a real game (Sphere Spectacle, + 144 FPS uncapped, no focus throttling) the implicit-layer capture path drops the game to ~3 FPS — + unplayable, which makes Vulkan support meaningless. The capture stalls the game's present thread + every frame; it must be made (near-)free so the game holds its frame rate while mirroring. Applies + to the shared read-back design in both `vk_layer/coop_vk_layer.cpp` and `hook/src/vk_hook.cpp`. +- **The inline-hook (suspended-inject) Vulkan path must work, or be proven a true limitation.** + Sphere Spectacle does *not* require Steam — the exe can be launched directly (and suspended, with + `coop_hook.dll` injected before it runs any code). Either make the early inline `vk_hook` capture + this game, or determine and document the genuine reason it cannot (Steam is not the reason). + Final verification of both paths must be with the game launched **through Steam** + (`steam://rungameid/1123040`). + +### Done + +The earlier 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, and real-game Vulkan validation (`coop_vk_validate` against Sphere Spectacle). See **Lessons learned** and the test suite for each. Open directions: per-game