ogl_beamforming

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

Commit: e1459bd492c857aaa4285c525a63a340153ad6af
Parent: 47d14ce3869cf38781e912453cd7c86286c8c68e
Author: Randy Palamar
Date:   Fri,  5 Sep 2025 05:39:29 -0600

beamformer.c: remove potential for a bug in beamformer_reload_shader

compute shaders cannot be indexed by rsi->kind; they need to go
through the derivative index table.

Diffstat:
Mbeamformer.c | 9+++++----
1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/beamformer.c b/beamformer.c @@ -982,6 +982,8 @@ shader_text_with_header(ShaderReloadContext *ctx, s8 filepath, Arena *arena) return result; } +/* NOTE(rnp): currently this function is only handling rendering shaders. + * look at reload_compute_shader for compute shaders */ DEBUG_EXPORT BEAMFORMER_RELOAD_SHADER_FN(beamformer_reload_shader) { BeamformerCtx *ctx = src->beamformer_context; @@ -1004,13 +1006,12 @@ DEBUG_EXPORT BEAMFORMER_RELOAD_SHADER_FN(beamformer_reload_shader) } while (link != src); BeamformerReloadableShaderInfo *rsi = beamformer_reloadable_shader_infos + src->reloadable_info_index; - u32 *shader = ctx->compute_context.programs + rsi->kind; - if (rsi->kind == BeamformerShaderKind_Render3D) - shader = &ctx->frame_view_render_context.shader; + assert(rsi->kind == BeamformerShaderKind_Render3D); + u32 *shader = &ctx->frame_view_render_context.shader; glDeleteProgram(*shader); *shader = load_shader(&ctx->os, arena, shader_texts, shader_types, shader_count, shader_name); - if (rsi->kind == BeamformerShaderKind_Render3D) ctx->frame_view_render_context.updated = 1; + ctx->frame_view_render_context.updated = 1; return 1; }