Commit: e73757c36e0d0c8fb3acf3b25be1879c4d6a3260
Parent: c351e5c5591138ae76618a3b00a3286838918fa5
Author: Randy Palamar
Date: Sun, 7 Sep 2025 20:49:19 -0600
meta/core: combine Transmit/RecieveMode and move into meta code
Diffstat:
5 files changed, 21 insertions(+), 37 deletions(-)
diff --git a/beamformer.c b/beamformer.c
@@ -431,9 +431,9 @@ das_ubo_from_beamformer_parameters(BeamformerDASUBO *du, BeamformerParameters *b
du->shader_flags = 0;
if (bp->interpolate) du->shader_flags |= BeamformerShaderDASFlags_Interpolate;
if (bp->coherency_weighting) du->shader_flags |= BeamformerShaderDASFlags_CoherencyWeighting;
- if (bp->transmit_mode == BeamformerTransmitMode_Columns)
+ if (bp->transmit_mode == BeamformerRCAOrientation_Columns)
du->shader_flags |= BeamformerShaderDASFlags_TxColumns;
- if (bp->receive_mode == BeamformerReceiveMode_Columns)
+ if (bp->receive_mode == BeamformerRCAOrientation_Columns)
du->shader_flags |= BeamformerShaderDASFlags_RxColumns;
}
diff --git a/beamformer.meta b/beamformer.meta
@@ -1,4 +1,5 @@
@Enumeration(DecodeMode [None Hadamard])
+@Enumeration(RCAOrientation [Rows Columns])
@ShaderGroup Compute
{
@@ -37,6 +38,8 @@
@PermuteFlags([Fast Sparse])
}
+ @Enumeration(RCAOrientation)
+
@Flags([Interpolate CoherencyWeighting RxColumns TxColumns])
}
diff --git a/beamformer_parameters.h b/beamformer_parameters.h
@@ -17,22 +17,6 @@ typedef struct {
float rf_time_deltas[32];
} BeamformerComputeStatsTable;
-#define TRANSMIT_MODES_LIST \
- X(Rows) \
- X(Columns)
-
-#define RECEIVE_MODES_LIST \
- X(Rows) \
- X(Columns)
-
-#define X(k, ...) BeamformerTransmitMode_## k,
-typedef enum {TRANSMIT_MODES_LIST} BeamformerTransmitModes;
-#undef X
-
-#define X(k, ...) BeamformerReceiveMode_## k,
-typedef enum {RECEIVE_MODES_LIST} BeamformerReceiveModes;
-#undef X
-
/* TODO(rnp): this is an absolute abuse of the preprocessor, but now is
* not a good time to write a full metaprogram */
#define BEAMFORMER_FILTER_KIND_LIST(type, _) \
diff --git a/build.c b/build.c
@@ -2194,20 +2194,6 @@ metagen_emit_matlab_code(MetaContext *ctx, Arena arena)
result &= meta_end_and_write_matlab(m, OUTPUT("matlab/OGLBeamformerFilterKind.m"));
#undef X
- #define X(kind, ...) meta_push_matlab_enum_with_value(m, s8(#kind), BeamformerTransmitMode_## kind);
- meta_begin_matlab_class(m, "OGLBeamformerTransmitModes", "int32");
- meta_begin_scope(m, s8("enumeration"));
- TRANSMIT_MODES_LIST
- result &= meta_end_and_write_matlab(m, OUTPUT("matlab/OGLBeamformerTransmitModes.m"));
- #undef X
-
- #define X(kind, ...) meta_push_matlab_enum_with_value(m, s8(#kind), BeamformerReceiveMode_## kind);
- meta_begin_matlab_class(m, "OGLBeamformerReceiveModes", "int32");
- meta_begin_scope(m, s8("enumeration"));
- RECEIVE_MODES_LIST
- result &= meta_end_and_write_matlab(m, OUTPUT("matlab/OGLBeamformerReceiveModes.m"));
- #undef X
-
os_make_directory(OUTPUT("matlab/+OGLBeamformerFilter"));
#define X(kind, ...) {OUTPUT("matlab/+OGLBeamformerFilter/" #kind ".m"), s8_comp(#kind), s8_comp(#__VA_ARGS__)},
read_only local_persist struct {char *out; s8 class, args;} filter_table[] = {
diff --git a/generated/beamformer.meta.c b/generated/beamformer.meta.c
@@ -9,6 +9,12 @@ typedef enum {
} BeamformerDecodeMode;
typedef enum {
+ BeamformerRCAOrientation_Rows = 0,
+ BeamformerRCAOrientation_Columns = 1,
+ BeamformerRCAOrientation_Count,
+} BeamformerRCAOrientation;
+
+typedef enum {
BeamformerDataKind_Int16 = 0,
BeamformerDataKind_Int16Complex = 1,
BeamformerDataKind_Float32 = 2,
@@ -143,7 +149,7 @@ read_only global BeamformerShaderDescriptor beamformer_shader_descriptors[] = {
{2, 6, 1, 2, 0},
{6, 18, 1, 1, 1},
{18, 42, 2, 2, 1},
- {42, 50, 1, 1, 1},
+ {42, 50, 1, 2, 1},
{50, 51, 0, 0, 0},
{51, 52, 0, 0, 0},
{52, 53, 0, 0, 0},
@@ -197,6 +203,10 @@ read_only global s8 beamformer_shader_global_header_strings[] = {
"#define DecodeMode_Hadamard 1\n"
"\n"),
s8_comp(""
+ "#define RCAOrientation_Rows 0\n"
+ "#define RCAOrientation_Columns 1\n"
+ "\n"),
+ s8_comp(""
"#define DataKind_Int16 0\n"
"#define DataKind_Int16Complex 1\n"
"#define DataKind_Float32 2\n"
@@ -230,6 +240,7 @@ read_only global s8 beamformer_shader_local_header_strings[] = {
read_only global s8 beamformer_shader_descriptor_header_strings[] = {
s8_comp("DecodeMode"),
+ s8_comp("RCAOrientation"),
s8_comp("DataKind"),
s8_comp("SamplingMode"),
};
@@ -237,10 +248,10 @@ read_only global s8 beamformer_shader_descriptor_header_strings[] = {
read_only global i32 *beamformer_shader_header_vectors[] = {
0,
0,
- (i32 []){1, 0},
- (i32 []){1},
- (i32 []){1, 2},
- (i32 []){1},
+ (i32 []){2, 0},
+ (i32 []){2},
+ (i32 []){2, 3},
+ (i32 []){2, 1},
0,
0,
0,