Commit: 71f98adffc8b181f768ed19e5f25638ac75c73b9
Parent: 4b9b2163f207aff04c9f21c6dc195ed8ff92436f
Author: Randy Palamar
Date: Tue, 30 Jun 2026 07:41:44 -0600
ui: add contrast mode indicator to frame overlay
Diffstat:
5 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/beamformer.meta b/beamformer.meta
@@ -260,6 +260,10 @@
@Expand(ContrastModeTable) ` $(samples),`
`};`
``
+ `read_only global str8 beamformer_contrast_mode_strings[] = {`
+ @Expand(ContrastModeTable) ` str8_comp("$(name)"),`
+ `};`
+ ``
`read_only global u8 beamformer_acquisition_kind_has_fixed_transmits[] = {`
@Expand(AcquisitionKindTable) ` $(fixed_transmits),`
`};`
diff --git a/beamformer_core.c b/beamformer_core.c
@@ -910,6 +910,7 @@ beamformer_commit_parameter_block(BeamformerCtx *ctx, BeamformerComputePlan *cp,
cp->acquisition_count = pb->parameters.acquisition_count;
cp->acquisition_kind = pb->parameters.acquisition_kind;
+ cp->contrast_mode = pb->parameters.contrast_mode;
i64 buffer_size = PING_PONG_BUFFER_SLOTS * round_up_to(cp->rf_size, 64);
if (ctx->compute_context.ping_pong_buffer.size < buffer_size) {
@@ -1387,6 +1388,7 @@ complete_queue(BeamformerCtx *ctx, BeamformWorkQueue *q, Arena *arena)
BeamformerFrame *frame = beamformer_frame_next(cs, cp->output_points, cp->iq_pipeline, reserved_frame_size);
frame->acquisition_kind = cp->acquisition_kind;
+ frame->contrast_mode = cp->contrast_mode;
frame->compound_count = cp->acquisition_count;
frame->view_plane_tag = work->compute_context.view_plane;
mem_copy(frame->voxel_transform.E, cp->voxel_transform.E, sizeof(cp->voxel_transform));
diff --git a/beamformer_internal.h b/beamformer_internal.h
@@ -301,6 +301,7 @@ struct BeamformerComputePlan {
BeamformerAcquisitionKind acquisition_kind;
u32 acquisition_count;
+ BeamformerContrastMode contrast_mode;
u32 rf_size;
i32 hadamard_order;
@@ -406,6 +407,7 @@ typedef struct {
u32 compound_count;
BeamformerDataKind data_kind;
BeamformerAcquisitionKind acquisition_kind;
+ BeamformerContrastMode contrast_mode;
BeamformerViewPlaneTag view_plane_tag;
} BeamformerFrame;
diff --git a/generated/beamformer.meta.c b/generated/beamformer.meta.c
@@ -474,6 +474,11 @@ read_only global u8 beamformer_contrast_mode_samples[] = {
3,
};
+read_only global str8 beamformer_contrast_mode_strings[] = {
+ str8_comp("None"),
+ str8_comp("A1S2"),
+};
+
read_only global u8 beamformer_acquisition_kind_has_fixed_transmits[] = {
1,
0,
diff --git a/ui.c b/ui.c
@@ -718,7 +718,7 @@ stream_append_variable_group(Stream *s, Variable *var)
}
function s8
-push_acquisition_kind(Stream *s, BeamformerAcquisitionKind kind, u32 transmit_count)
+push_acquisition_kind(Stream *s, BeamformerAcquisitionKind kind, u32 transmit_count, BeamformerContrastMode contrast_mode)
{
s8 name = beamformer_acquisition_kind_strings[kind];
b32 fixed_transmits = beamformer_acquisition_kind_has_fixed_transmits[kind];
@@ -733,6 +733,9 @@ push_acquisition_kind(Stream *s, BeamformerAcquisitionKind kind, u32 transmit_co
stream_append_u64(s, transmit_count);
}
+ if (contrast_mode != BeamformerContrastMode_None)
+ stream_append_s8s(s, s8(" ("), s8_from_str8(beamformer_contrast_mode_strings[contrast_mode]), s8(")"));
+
return stream_to_s8(s);
}
@@ -2714,7 +2717,7 @@ draw_beamformer_frame_view(BeamformerUI *ui, Arena a, Variable *var, Rect displa
{
Stream buf = arena_stream(a);
- s8 shader = push_acquisition_kind(&buf, frame->acquisition_kind, frame->compound_count);
+ s8 shader = push_acquisition_kind(&buf, frame->acquisition_kind, frame->compound_count, frame->contrast_mode);
text_spec.font = &ui->font;
text_spec.limits.size.w -= 16;
v2 txt_s = measure_text(*text_spec.font, shader);