From fd91f46bfb654557eca3f2f623e61953047619d6 Mon Sep 17 00:00:00 2001 From: chrg6 Date: Fri, 13 Nov 2026 17:21:48 -0500 Subject: [PATCH] Bring compute_prebuild_queue_check's stand-ins up to lb_next's worker limit beside the game. Since cd0b1a38, vk_pipeline.c lb_next calls lb_idle() and stops a boot builder at or above LB.bg_threads while the builders run beside the game, so the check, which builds lb_next against a stand-in LB, failed to compile ("call to undeclared function 'lb_idle'", "no member named 'bg_threads'"). The stand-in LB has bg_threads, and lb_idle copies the real one with a test switch for bf_waiting. The concurrent runs now also cover two background workers and a start that waits for the whole warm, and the explicit cases check that worker 2 of 2 stops beside the game and goes on in a preparation. vk_pipeline.c is unchanged. The check passes again with the ucrt64 clang. Co-Authored-By: Claude Opus 5.5 --- tests/compute_prebuild_queue_check.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tests/compute_prebuild_queue_check.py b/tests/compute_prebuild_queue_check.py index 688fb704..d644aa9e 100644 --- a/tests/compute_prebuild_queue_check.py +++ b/tests/compute_prebuild_queue_check.py @@ -20,8 +20,10 @@ static struct { volatile int64_t next; volatile int32_t stop; size_t n, n_keep; - int idle, tail_one; + int idle, tail_one, bg_threads; } LB; +static int bf_wait_now, bg_threads = 8; // bf_waiting(): the start waits for the whole warm +static int lb_idle(void) { return LB.idle && !bf_wait_now; } static volatile LONG seen[2000]; static HANDLE start_event; ''' @@ -34,13 +36,14 @@ static DWORD WINAPI worker(void *arg) { size_t i=lb_next(id); if (i>=LB.n) break; assert(InterlockedIncrement(&seen[i])==1); - if (LB.idle && LB.tail_one && i>=LB.n_keep) assert(id==0); + if (LB.idle && !bf_wait_now && LB.tail_one && i>=LB.n_keep) assert(id==0); + if (LB.idle && !bf_wait_now) assert(id