Leave the shader warm-up out only after two failed starts #701

Closed
Palayop7239 wants to merge 3 commits from fix/warm-up-two-tries into main
Palayop7239 commented 2026-11-08 17:47:37 +00:00 (Migrated from github.com)

What

prepare_run's driver step (every compute pipeline built once for the driver's cache) is now left out only after two starts in a row ended inside it, not one. The marker file beside the game counts those starts, as the precompile's marker already does. An empty marker written by an older build counts as one.

Why

One start ending inside the step was enough to leave it out at the next start, and the hookshot_prepared.bin stamp written at the end then kept it out for the whole version.

The step is slow on AMD right after an update and looks stuck at 99%, so closing the window there is common. On an RX 6650 XT (v2.0.2, first start after the update, closed after about 5 minutes):

  • the next start logged the last start did not finish the driver's part of the shaders: left out;
  • every later start of that version built the compute pipelines in the precompile instead, 205 s before the game started.

The precompile got the same "two starts, not one" rule on 2026-11-08 for the same reason ("stuck at 99%, then fine on the second start"). This gives the driver step that rule too. Related to #615 and #643.

Testing

tests/test_warm_marker.py:

  • compiles warm_marker on its own and runs it against files in a temporary folder: no file, a retry, the second failure, and an older build's empty file;
  • reads prepare_run to check that it leaves the step out only at two and still removes the marker when the step ends.

It fails if one failed start is enough to leave the step out. tests/run_all.py picks it up and gives it --cxx g++, like the other compiled checks.

Not tested in game: it needs a start that ends inside the step. The change itself is the file count above.

🤖 Generated with Claude Code

## What `prepare_run`'s driver step (every compute pipeline built once for the driver's cache) is now left out only after **two starts in a row** ended inside it, not one. The marker file beside the game counts those starts, as the precompile's marker already does. An empty marker written by an older build counts as one. ## Why One start ending inside the step was enough to leave it out at the next start, and the `hookshot_prepared.bin` stamp written at the end then kept it out **for the whole version**. The step is slow on AMD right after an update and looks stuck at 99%, so closing the window there is common. On an RX 6650 XT (v2.0.2, first start after the update, closed after about 5 minutes): - the next start logged `the last start did not finish the driver's part of the shaders: left out`; - every later start of that version built the compute pipelines in the precompile instead, 205 s before the game started. The precompile got the same "two starts, not one" rule on 2026-11-08 for the same reason ("stuck at 99%, then fine on the second start"). This gives the driver step that rule too. Related to #615 and #643. ## Testing `tests/test_warm_marker.py`: - compiles `warm_marker` on its own and runs it against files in a temporary folder: no file, a retry, the second failure, and an older build's empty file; - reads `prepare_run` to check that it leaves the step out only at two and still removes the marker when the step ends. It fails if one failed start is enough to leave the step out. `tests/run_all.py` picks it up and gives it `--cxx g++`, like the other compiled checks. Not tested in game: it needs a start that ends inside the step. The change itself is the file count above. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
NotRexed commented 2026-11-09 05:30:03 +00:00 (Migrated from github.com)

Closing to keep the queue clear — please rebase on current main and reopen; thanks!

Closing to keep the queue clear — please rebase on current main and reopen; thanks!
Commenting is not possible because the repository is archived.
No description provided.