Commit: 8b2e08c3def0f7c6fcc1166a27c802b1e2dd2308
Parent: a8536a6a2243ac2b0d18b42204a4f09a955d1911
Author: Randy Palamar
Date: Thu, 15 Oct 2026 06:24:17 -0700
core: table drive acquisition sparsity check
Diffstat:
4 files changed, 71 insertions(+), 58 deletions(-)
diff --git a/beamformer.meta b/beamformer.meta
@@ -87,21 +87,27 @@
Arbitrary
}
-@Table([name pretty_name fixed_transmits]) AcquisitionKindTable
-{
- [FORCES FORCES 1]
- [UFORCES UFORCES 0]
- [HERCULES HERCULES 1]
- [RCA_VLS VLS 0]
- [RCA_TPW TPW 0]
- [UHERCULES UHERCULES 0]
- [RACES RACES 1]
- [EPIC_FORCES EPIC-FORCES 1]
- [EPIC_UFORCES EPIC-UFORCES 0]
- [EPIC_UHERCULES EPIC-UHERCULES 0]
- [Flash Flash 0]
- [HERO_PA HERO-PA 0]
- [ULM ULM 0]
+@Flags AcquisitionKindFlags
+{
+ FixedTransmits
+ Sparse
+}
+
+@Table([name pretty_name fixed_transmits sparse]) AcquisitionKindTable
+{
+ [FORCES FORCES 1 0]
+ [UFORCES UFORCES 0 1]
+ [HERCULES HERCULES 1 0]
+ [RCA_VLS VLS 0 0]
+ [RCA_TPW TPW 0 0]
+ [UHERCULES UHERCULES 0 1]
+ [RACES RACES 1 0]
+ [EPIC_FORCES EPIC-FORCES 1 0]
+ [EPIC_UFORCES EPIC-UFORCES 0 1]
+ [EPIC_UHERCULES EPIC-UHERCULES 0 1]
+ [Flash Flash 0 0]
+ [HERO_PA HERO-PA 0 0]
+ [ULM ULM 0 0]
}
@Expand(AcquisitionKindTable) @Enumeration(`$(name)`) AcquisitionKind
@@ -303,6 +309,14 @@
@Expand(DataKindTable) ` str8_comp("$(name)"),`
`};`
``
+ `read_only u32 beamformer_acquisition_kind_flags[] = {`
+ @Expand(AcquisitionKindTable) ` ($(fixed_transmits)*BeamformerAcquisitionKindFlags_FixedTransmits)|($(sparse)*BeamformerAcquisitionKindFlags_Sparse),`
+ `};`
+ ``
+ `read_only str8 beamformer_acquisition_kind_strings[] = {`
+ @Expand(AcquisitionKindTable) ` str8_comp("$(pretty_name)"),`
+ `};`
+ ``
`read_only u8 beamformer_contrast_mode_samples[] = {`
@Expand(ContrastModeTable) ` $(samples),`
`};`
@@ -315,14 +329,6 @@
@Expand(ViewPlaneTag) ` str8_comp("$(name)"),`
`};`
``
- `read_only u8 beamformer_acquisition_kind_has_fixed_transmits[] = {`
- @Expand(AcquisitionKindTable) ` $(fixed_transmits),`
- `};`
- ``
- `read_only str8 beamformer_acquisition_kind_strings[] = {`
- @Expand(AcquisitionKindTable) ` str8_comp("$(pretty_name)"),`
- `};`
- ``
`read_only str8 beamformer_emission_kind_strings[] = {`
@Expand(EmissionKind) ` str8_comp("$(name)"),`
`};`
diff --git a/beamformer_core.c b/beamformer_core.c
@@ -949,7 +949,9 @@ plan_compute_pipeline(BeamformerComputePlan *cp, BeamformerParameterBlock *pb, A
memory_copy(cp->das_voxel_transform.E, cp->voxel_transform.E, sizeof(cp->voxel_transform));
u32 id = pb->parameters.acquisition_kind;
- b32 sparse = id == BeamformerAcquisitionKind_UFORCES || id == BeamformerAcquisitionKind_UHERCULES;
+
+ u32 acquisition_kind_flags = beamformer_acquisition_kind_flags[id];
+ b32 sparse = (acquisition_kind_flags & BeamformerAcquisitionKindFlags_Sparse) != 0;
b32 single_focus = pb->parameters.single_focus != 0;
b32 single_orientation = pb->parameters.single_orientation != 0;
@@ -961,14 +963,14 @@ plan_compute_pipeline(BeamformerComputePlan *cp, BeamformerParameterBlock *pb, A
sd->layout = layout_for_output(cp->output_points);
sd->dispatch = dispatch_for_output(sd->layout, cp->output_points);
- if (id != BeamformerAcquisitionKind_UFORCES && id != BeamformerAcquisitionKind_FORCES && !single_focus) {
+ if (!single_focus) {
db->FocalVectors = gpu_resource_push(resource_builder, v2, db->AcquisitionCount,
.data = pb->focal_vectors,
.name = str8("focal_vectors"));
sd->uses_heap = 1;
}
- if (id != BeamformerAcquisitionKind_UFORCES && id != BeamformerAcquisitionKind_FORCES && !single_orientation) {
+ if (!single_orientation) {
db->TransmitReceiveOrientations = gpu_resource_push(resource_builder, u8, db->AcquisitionCount,
.data = pb->transmit_receive_orientations,
.name = str8("transmit_receive_orientations"));
diff --git a/generated/beamformer.c b/generated/beamformer.c
@@ -120,6 +120,11 @@ typedef enum {
} BeamformerLiveFeedbackFlags;
typedef enum {
+ BeamformerAcquisitionKindFlags_FixedTransmits = 1 << 0,
+ BeamformerAcquisitionKindFlags_Sparse = 1 << 1,
+} BeamformerAcquisitionKindFlags;
+
+typedef enum {
BeamformerLiveImagingDirtyFlags_ImagePlaneOffsets = 1 << 0,
BeamformerLiveImagingDirtyFlags_TransmitPower = 1 << 1,
BeamformerLiveImagingDirtyFlags_TGCControlPoints = 1 << 2,
@@ -967,37 +972,20 @@ read_only str8 beamformer_data_kind_str8[] = {
str8_comp("Float16Complex"),
};
-read_only u8 beamformer_contrast_mode_samples[] = {
- 1,
- 3,
-};
-
-read_only str8 beamformer_contrast_mode_strings[] = {
- str8_comp("None"),
- str8_comp("A1S2"),
-};
-
-read_only str8 beamformer_view_plane_tag_strings[] = {
- str8_comp("XZ"),
- str8_comp("YZ"),
- str8_comp("XY"),
- str8_comp("Arbitrary"),
-};
-
-read_only u8 beamformer_acquisition_kind_has_fixed_transmits[] = {
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
+read_only u32 beamformer_acquisition_kind_flags[] = {
+ (1*BeamformerAcquisitionKindFlags_FixedTransmits)|(0*BeamformerAcquisitionKindFlags_Sparse),
+ (0*BeamformerAcquisitionKindFlags_FixedTransmits)|(1*BeamformerAcquisitionKindFlags_Sparse),
+ (1*BeamformerAcquisitionKindFlags_FixedTransmits)|(0*BeamformerAcquisitionKindFlags_Sparse),
+ (0*BeamformerAcquisitionKindFlags_FixedTransmits)|(0*BeamformerAcquisitionKindFlags_Sparse),
+ (0*BeamformerAcquisitionKindFlags_FixedTransmits)|(0*BeamformerAcquisitionKindFlags_Sparse),
+ (0*BeamformerAcquisitionKindFlags_FixedTransmits)|(1*BeamformerAcquisitionKindFlags_Sparse),
+ (1*BeamformerAcquisitionKindFlags_FixedTransmits)|(0*BeamformerAcquisitionKindFlags_Sparse),
+ (1*BeamformerAcquisitionKindFlags_FixedTransmits)|(0*BeamformerAcquisitionKindFlags_Sparse),
+ (0*BeamformerAcquisitionKindFlags_FixedTransmits)|(1*BeamformerAcquisitionKindFlags_Sparse),
+ (0*BeamformerAcquisitionKindFlags_FixedTransmits)|(1*BeamformerAcquisitionKindFlags_Sparse),
+ (0*BeamformerAcquisitionKindFlags_FixedTransmits)|(0*BeamformerAcquisitionKindFlags_Sparse),
+ (0*BeamformerAcquisitionKindFlags_FixedTransmits)|(0*BeamformerAcquisitionKindFlags_Sparse),
+ (0*BeamformerAcquisitionKindFlags_FixedTransmits)|(0*BeamformerAcquisitionKindFlags_Sparse),
};
read_only str8 beamformer_acquisition_kind_strings[] = {
@@ -1016,6 +1004,23 @@ read_only str8 beamformer_acquisition_kind_strings[] = {
str8_comp("ULM"),
};
+read_only u8 beamformer_contrast_mode_samples[] = {
+ 1,
+ 3,
+};
+
+read_only str8 beamformer_contrast_mode_strings[] = {
+ str8_comp("None"),
+ str8_comp("A1S2"),
+};
+
+read_only str8 beamformer_view_plane_tag_strings[] = {
+ str8_comp("XZ"),
+ str8_comp("YZ"),
+ str8_comp("XY"),
+ str8_comp("Arbitrary"),
+};
+
read_only str8 beamformer_emission_kind_strings[] = {
str8_comp("Sine"),
str8_comp("Chirp"),
diff --git a/ui.c b/ui.c
@@ -769,7 +769,7 @@ push_acquisition_kind(Arena *arena, BeamformerAcquisitionKind kind, u32 transmit
b32 fixed_transmits = 0;
if Between(kind, 0, BeamformerAcquisitionKind_Count - 1) {
name = beamformer_acquisition_kind_strings[kind];
- fixed_transmits = beamformer_acquisition_kind_has_fixed_transmits[kind];
+ fixed_transmits = (beamformer_acquisition_kind_flags[kind] & BeamformerAcquisitionKindFlags_FixedTransmits) != 0;
}
Stream sb = arena_stream(arena);