RX_VK_FRAME_LOG writes nothing in a headless run (HOS_HEADLESS) #2353

Closed
opened 2026-11-11 15:41:17 +00:00 by mooki000 · 0 comments
mooki000 commented 2026-11-11 15:41:17 +00:00 (Migrated from github.com)

Hookshot version

main 49f75dc8 and bdfe09c, built from source

What kind of problem

Something else

What happened

RX_VK_FRAME_LOG=<csv> ("A CSV line per present: frame, seconds, frame time in ms", docs/development.md) writes nothing when the game runs without a window (HOS_HEADLESS), which is how scripted tests and measurements run it: the file is never even created. None of 23 headless runs of main on this machine left a frame log, with the switch set in every one.

Expected: the same CSV as with a window.

The cause: the writer is only in present_out (gpu/vk/vk_replay.cpp), after vkQueuePresentKHR. Without a window a present copies the picture into the offscreen image and do_present returns before present_image, so it never gets there.

Where in the game

Any headless run; it does not depend on the place

How often

Every time

Graphics card and driver version

RTX 4090, NVIDIA 615.78.08

CPU, RAM and operating system

i9-13900K, 96 GB, Arch Linux

Changes from the defaults

HOS_HEADLESS=1, RX_VK_FRAME_LOG=<file>

Other software hooked into the game

No, nothing hooked in

hookshot_log.txt

The line that marks such a run: vk: no window: presents render offscreen (1920x1080). The frame log's file is missing afterwards.

Claim

I'm working on this: #2354 is open with the fix and its test. By docs/workflow.md: S3 (1), a developer's measuring switch x reach (anyone who measures or tests headless) x confidence 1.0 (cause found, fix run in the game). I can test on Linux with an RTX 4090 (NVIDIA 615.78.08) and an Intel UHD 770 (Mesa 26.2.5), not on Windows or AMD.

### Hookshot version main 49f75dc8 and bdfe09c, built from source ### What kind of problem Something else ### What happened `RX_VK_FRAME_LOG=<csv>` ("A CSV line per present: frame, seconds, frame time in ms", `docs/development.md`) writes nothing when the game runs without a window (`HOS_HEADLESS`), which is how scripted tests and measurements run it: the file is never even created. None of 23 headless runs of main on this machine left a frame log, with the switch set in every one. Expected: the same CSV as with a window. The cause: the writer is only in `present_out` (`gpu/vk/vk_replay.cpp`), after `vkQueuePresentKHR`. Without a window a present copies the picture into the offscreen image and `do_present` returns before `present_image`, so it never gets there. ### Where in the game Any headless run; it does not depend on the place ### How often Every time ### Graphics card and driver version RTX 4090, NVIDIA 615.78.08 ### CPU, RAM and operating system i9-13900K, 96 GB, Arch Linux ### Changes from the defaults `HOS_HEADLESS=1`, `RX_VK_FRAME_LOG=<file>` ### Other software hooked into the game No, nothing hooked in ### hookshot_log.txt The line that marks such a run: `vk: no window: presents render offscreen (1920x1080)`. The frame log's file is missing afterwards. ### Claim I'm working on this: #2354 is open with the fix and its test. By `docs/workflow.md`: S3 (1), a developer's measuring switch x reach (anyone who measures or tests headless) x confidence 1.0 (cause found, fix run in the game). I can test on Linux with an RTX 4090 (NVIDIA 615.78.08) and an Intel UHD 770 (Mesa 26.2.5), not on Windows or AMD.
Commenting is not possible because the repository is archived.
No milestone
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Hookshot#2353
No description provided.