ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | README | LICENSE

Commit: 7d1c7212d386515488b5612e73055597a10f9b8a
Parent: a37dfa95880f64ffd1498ca2e1a3199639e362bc
Author: Randy Palamar
Date:   Wed, 10 Sep 2025 15:38:59 -0600

core: don't sleep threads when live imaging is active

Diffstat:
Mstatic.c | 14++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/static.c b/static.c @@ -255,16 +255,18 @@ iptr glfwCreateWindow(i32, i32, char *, iptr, iptr); void glfwMakeContextCurrent(iptr); function void -worker_thread_sleep(GLWorkerThreadContext *ctx) +worker_thread_sleep(GLWorkerThreadContext *ctx, BeamformerSharedMemory *sm) { for (;;) { i32 expected = 0; if (atomic_cas_u32(&ctx->sync_variable, &expected, 1)) break; - atomic_store_u32(&ctx->asleep, 1); - os_wait_on_value(&ctx->sync_variable, 1, (u32)-1); - atomic_store_u32(&ctx->asleep, 0); + if (!atomic_load_u32(&sm->live_imaging_parameters.active)) { + atomic_store_u32(&ctx->asleep, 1); + os_wait_on_value(&ctx->sync_variable, 1, (u32)-1); + atomic_store_u32(&ctx->asleep, 0); + } } } @@ -280,7 +282,7 @@ function OS_THREAD_ENTRY_POINT_FN(compute_worker_thread_entry_point) beamformer->compute_context.shader_timer_ids); for (;;) { - worker_thread_sleep(ctx); + worker_thread_sleep(ctx, beamformer->shared_memory.region); asan_poison_region(ctx->arena.beg, ctx->arena.end - ctx->arena.beg); beamformer_complete_compute(ctx->user_context, &ctx->arena, ctx->gl_context); } @@ -302,7 +304,7 @@ function OS_THREAD_ENTRY_POINT_FN(upload_worker_thread_entry_point) glQueryCounter(up->rf_buffer->data_timestamp_query, GL_TIMESTAMP); for (;;) { - worker_thread_sleep(ctx); + worker_thread_sleep(ctx, up->shared_memory->region); asan_poison_region(ctx->arena.beg, ctx->arena.end - ctx->arena.beg); beamformer_rf_upload(up, ctx->arena); }