fix(vk): on Most the Builder's progress bar leaves the prediction's part out; its check runs All and Most #164

Merged
HumanBean merged 1 commit from HumanBean/Longshot:fix/prepare-bar-most into main 2026-11-13 08:23:56 +00:00
Owner

Why

Since #158 the default is Most, and main fails one test: tests/test_prepare_cache_save.py compiles the Builder's preparation path with stubs and has no compile_all(). Testing Most also found that the Builder's progress bar jumps by the prediction's share on Most after a fresh preparation.

What changed

  • vk: started_up() in gpu/vk/vk_main.cpp (the Builder's --prepare-shaders path) takes the predicted pipelines' part out of the progress bar whenever the prediction does not run. Before, it did so only when the seed was already prepared, so on Most after a fresh preparation the step to the noted pipelines counted that part done at its guess.
  • tests: tests/test_prepare_cache_save.py gets compile_all() and runs every case with All and with Most: what runs (All predicts after a fresh seed, Most never) and the bar's values.

Flags and settings

None.

Measurements

The fix's measurement is its test: a check that fails on main and passes here.

main: 1d6b832a (2026-11-13)
this PR: fix/prepare-bar-most @ 539b7c14
Hardware: RTX 3090, Linux, 24 threads
Method: python -I -B tests/run_all.py

main @ 1d6b832a this PR @ 539b7c14
tests/run_all.py 471 passed, 1 failed (test_prepare_cache_save: compile_all undeclared) 472 passed, 0 failed, 65 skipped
bar on Most, fresh seed, at half the noted pipelines 0.714 (prediction's part counted done) 0.600

Testing

Tested: the full game-free suite on Linux, as above; the new cases of the check on All and on Most.

Not tested: the bar in the Builders' windows by eye; a Windows build (the change is four lines of portable C++ in the renderer, no host code or paths).

Needs other testers: None (the change is the bar's arithmetic, which the check covers).

Screenshots

Nothing on screen beyond the bar's value, which the check covers.

Risk and rollback

At worst the Builder's bar is off; the preparation itself does the same work. Reverting the commit is enough.

Issues

See #158

Checklist

For everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description).
  • Rebased on current main.
  • python -I -B tests/run_all.py run and passing (any failure that also fails on main is named above).
  • Tested in the game, or what wasn't is named under Testing.
  • Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests).
  • Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported.
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.

If applicable

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • A game-free test added for the fix, failing on main and passing here.
  • A check under tests/ that reads changed source updated in this PR, not weakened.
## Why Since #158 the default is Most, and main fails one test: `tests/test_prepare_cache_save.py` compiles the Builder's preparation path with stubs and has no `compile_all()`. Testing Most also found that the Builder's progress bar jumps by the prediction's share on Most after a fresh preparation. ## What changed - vk: `started_up()` in `gpu/vk/vk_main.cpp` (the Builder's `--prepare-shaders` path) takes the predicted pipelines' part out of the progress bar whenever the prediction does not run. Before, it did so only when the seed was already prepared, so on Most after a fresh preparation the step to the noted pipelines counted that part done at its guess. - tests: `tests/test_prepare_cache_save.py` gets `compile_all()` and runs every case with All and with Most: what runs (All predicts after a fresh seed, Most never) and the bar's values. ## Flags and settings None. ## Measurements The fix's measurement is its test: a check that fails on `main` and passes here. main: 1d6b832a (2026-11-13) this PR: fix/prepare-bar-most @ 539b7c14 Hardware: RTX 3090, Linux, 24 threads Method: `python -I -B tests/run_all.py` | | main @ 1d6b832a | this PR @ 539b7c14 | |---|---|---| | tests/run_all.py | 471 passed, 1 failed (test_prepare_cache_save: `compile_all` undeclared) | 472 passed, 0 failed, 65 skipped | | bar on Most, fresh seed, at half the noted pipelines | 0.714 (prediction's part counted done) | 0.600 | ## Testing **Tested:** the full game-free suite on Linux, as above; the new cases of the check on All and on Most. **Not tested:** the bar in the Builders' windows by eye; a Windows build (the change is four lines of portable C++ in the renderer, no host code or paths). **Needs other testers:** None (the change is the bar's arithmetic, which the check covers). ## Screenshots Nothing on screen beyond the bar's value, which the check covers. ## Risk and rollback At worst the Builder's bar is off; the preparation itself does the same work. Reverting the commit is enough. ## Issues See #158 ## Checklist ### For everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`). - [x] Rebased on current `main`. - [x] `python -I -B tests/run_all.py` run and passing (any failure that also fails on `main` is named above). - [x] Tested in the game, or what wasn't is named under Testing. - [x] Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests). - [x] Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported. - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled. ### If applicable - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] A game-free test added for the fix, failing on `main` and passing here. - [x] A check under `tests/` that reads changed source updated in this PR, not weakened.
fix(vk): on Most the Builder's progress bar leaves the prediction's part out; its check runs All and Most
All checks were successful
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been skipped
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been skipped
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been skipped
Third-party parts / The same as upstream (pull_request) Has been skipped
CI / Conventional Commit title (pull_request) Successful in 5s
CI / Workflow lint (actionlint) (pull_request) Successful in 6s
Third-party parts / As their notes say (pull_request) Successful in 13s
PR description / Description follows the template (pull_request_target) Successful in 9s
539b7c14b3
The Builder's preparation (vk_main.cpp, --prepare-shaders) took the predicted pipelines' part out of the bar only when the
seed was already prepared. On Most after a preparation the prediction does not run, and the step to the noted pipelines
counted its part done at its guess: the bar jumped by the prediction's share. Now it is skipped whenever the prediction
does not run.

tests/test_prepare_cache_save.py compiles that path with stubs and lacked compile_all (feat(vk): Compile shaders): it now
runs each case with All and with Most, checking what runs (All predicts after a fresh seed, Most never) and the bar's
progress (Most, fresh seed: 0.600 at half the noted pipelines, not the 0.714 with the prediction's part counted done).

Co-Authored-By: Claude Fable 5.2 <[email protected]>
HumanBean changed title from WIP: fix(vk): on Most the Builder's progress bar leaves the prediction's part out; its check runs All and Most to fix(vk): on Most the Builder's progress bar leaves the prediction's part out; its check runs All and Most 2026-11-13 08:23:35 +00:00
HumanBean deleted branch fix/prepare-bar-most 2026-11-13 08:23:56 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
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/Longshot!164
No description provided.