ogl_beamforming

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

Commit: 98e7202c7ad6229cd30aa790f7f6c3886e4e412f
Parent: 028f01ac3e015de8bf5aa1a97cda3a6b67bbe562
Author: Randy Palamar
Date:   Sat, 22 Mar 2025 07:22:08 -0600

ui: determine to append tx count to label using X-macro

Diffstat:
Mbeamformer.c | 2+-
Mbeamformer.h | 3++-
Mbeamformer_parameters.h | 14+++++++-------
Mui.c | 25+++++++++++--------------
4 files changed, 21 insertions(+), 23 deletions(-)

diff --git a/beamformer.c b/beamformer.c @@ -523,7 +523,7 @@ push_compute_shader_header(Arena *a, ComputeShaderID shader) "local_size_y = " str(DAS_LOCAL_SIZE_Y) ", " "local_size_z = " str(DAS_LOCAL_SIZE_Z) ") " "in;\n\n")); - #define X(type, id, pretty) push_s8(a, s8("#define DAS_ID_" #type " " #id "\n")); + #define X(type, id, pretty, fixed_tx) push_s8(a, s8("#define DAS_ID_" #type " " #id "\n")); DAS_TYPES #undef X } break; diff --git a/beamformer.h b/beamformer.h @@ -115,9 +115,10 @@ typedef struct { } FragmentShaderCtx; typedef enum { -#define X(type, id, pretty) DAS_ ##type = id, +#define X(type, id, pretty, fixed_tx) DAS_ ##type = id, DAS_TYPES #undef X +DAS_LAST } DASShaderID; typedef struct { diff --git a/beamformer_parameters.h b/beamformer_parameters.h @@ -23,14 +23,14 @@ typedef enum { X(NONE, 0, "None") \ X(HADAMARD, 1, "Hadamard") -/* X(type, id, pretty name) */ +/* X(type, id, pretty name, fixed transmits) */ #define DAS_TYPES \ - X(FORCES, 0, "FORCES") \ - X(UFORCES, 1, "UFORCES") \ - X(HERCULES, 2, "HERCULES") \ - X(RCA_VLS, 3, "VLS") \ - X(RCA_TPW, 4, "TPW") \ - X(UHERCULES, 5, "UHERCULES") + X(FORCES, 0, "FORCES", 1) \ + X(UFORCES, 1, "UFORCES", 0) \ + X(HERCULES, 2, "HERCULES", 1) \ + X(RCA_VLS, 3, "VLS", 0) \ + X(RCA_TPW, 4, "TPW", 0) \ + X(UHERCULES, 5, "UHERCULES", 0) #define DAS_LOCAL_SIZE_X 32 #define DAS_LOCAL_SIZE_Y 1 diff --git a/ui.c b/ui.c @@ -474,22 +474,19 @@ lerp_v4(v4 a, v4 b, f32 t) static s8 push_das_shader_id(Stream *s, DASShaderID shader, u32 transmit_count) { - switch (shader) { - #define X(type, id, pretty) case id: stream_append_s8(s, s8(pretty)); break; - DAS_TYPES + #define X(type, id, pretty, fixed_tx) s8(pretty), + static s8 pretty_names[] = { DAS_TYPES }; + #undef X + #define X(type, id, pretty, fixed_tx) fixed_tx, + static u8 fixed_transmits[] = { DAS_TYPES }; #undef X - default: break; - } - /* TODO(rnp): cleanup - generate with X macro */ - switch (shader) { - case DAS_UFORCES: - case DAS_RCA_VLS: - case DAS_RCA_TPW: - case DAS_UHERCULES: - stream_append_byte(s, '-'); - stream_append_u64(s, transmit_count); - default: break; + if ((u32)shader < (u32)DAS_LAST) { + stream_append_s8(s, pretty_names[shader]); + if (!fixed_transmits[shader]) { + stream_append_byte(s, '-'); + stream_append_u64(s, transmit_count); + } } return stream_to_s8(s);