beamformer.meta (9890B)
1 @Constant(4) FilterSlots 2 @Constant(16) MaxBacklogFrames 3 @Constant(256) MaxChannelCount 4 @Constant(256) MaxEmissionsCount 5 @Constant(16) MaxComputeShaderStages 6 @Constant(16) MaxParameterBlocks 7 @Constant(3) MaxRawDataFramesInFlight 8 9 @Enumeration DecodeMode 10 { 11 None 12 Hadamard 13 } 14 15 @Enumeration RCAOrientation 16 { 17 None 18 Rows 19 Columns 20 } 21 22 @Enumeration SamplingMode 23 { 24 2X 25 4X 26 } 27 28 @Table([name size elements complex]) DataKindTable 29 { 30 [Int16 2 1 0] 31 [Int16Complex 2 2 1] 32 [Float32 4 1 0] 33 [Float32Complex 4 2 1] 34 [Float16 2 1 0] 35 [Float16Complex 2 2 1] 36 } 37 @Expand(DataKindTable) @Enumeration(`$(name)`) DataKind 38 39 @Table([name samples]) ContrastModeTable 40 { 41 [None 1] 42 [A1S2 3] 43 } 44 @Expand(ContrastModeTable) @Enumeration(`$(name)`) ContrastMode 45 46 @Enumeration EmissionKind 47 { 48 Sine 49 Chirp 50 } 51 52 @Enumeration InterpolationMode 53 { 54 Nearest 55 Linear 56 Cubic 57 } 58 59 @Struct SineParameters 60 { 61 [cycles F32] 62 [frequency F32] 63 } 64 @Library @Struct SineParameters 65 66 @Struct ChirpParameters 67 { 68 [duration F32] 69 [min_frequency F32] 70 [max_frequency F32] 71 } 72 @Library @Struct ChirpParameters 73 74 @Table([type c_member m_member]) EmissionParametersTable 75 { 76 [SineParameters sine Sine ] 77 [ChirpParameters chirp Chirp] 78 } 79 @Expand(EmissionParametersTable) @Union([`$(c_member)` `$(type)`]) EmissionParametersUnion 80 @Expand(EmissionParametersTable) @Union([`$(m_member)` `$(type)`]) EmissionParametersUnionMATLAB 81 @MATLAB(EmissionParameters) @Union EmissionParametersUnionMATLAB 82 83 @Struct EmissionParameters 84 { 85 [kind EmissionKind ] 86 [`` EmissionParametersUnion] 87 } 88 @Library @Struct EmissionParameters 89 @MATLAB(Emission) @Struct EmissionParameters 90 91 @Table([name name_lower]) FilterKindTable 92 { 93 [Kaiser kaiser ] 94 [MatchedChirp matched_chirp] 95 } 96 @Expand(FilterKindTable) @Enumeration(`$(name)`) FilterKind 97 98 @Struct KaiserFilterParameters 99 { 100 [cutoff_frequency F32] 101 [beta F32] 102 [length U32] 103 } 104 @Library @Struct KaiserFilterParameters 105 106 @Struct MatchedChirpFilterParameters 107 { 108 [duration F32] 109 [min_frequency F32] 110 [max_frequency F32] 111 } 112 @Library @Struct MatchedChirpFilterParameters 113 114 @Table([type c_member m_member]) FilterParametersTable 115 { 116 [KaiserFilterParameters kaiser Kaiser ] 117 [MatchedChirpFilterParameters matched_chirp MatchedChirp] 118 } 119 @Expand(FilterParametersTable) @Union([`$(c_member)` `$(type)`]) FilterParametersUnion 120 @Expand(FilterParametersTable) @Union([`$(m_member)` `$(type)`]) FilterParametersUnionMATLAB 121 @MATLAB(FilterParameters) @Union FilterParametersUnionMATLAB 122 123 @Struct FilterParameters 124 { 125 [kind FilterKind ] 126 [sampling_frequency F32 ] 127 [complex B32 ] 128 [`` FilterParametersUnion] 129 } 130 @Library @Struct FilterParameters 131 @MATLAB(Filter) @Struct FilterParameters 132 133 @Table([name pretty_name fixed_transmits]) AcquisitionKindTable 134 { 135 [FORCES FORCES 1] 136 [UFORCES UFORCES 0] 137 [HERCULES HERCULES 1] 138 [RCA_VLS VLS 0] 139 [RCA_TPW TPW 0] 140 [UHERCULES UHERCULES 0] 141 [RACES RACES 1] 142 [EPIC_FORCES EPIC-FORCES 1] 143 [EPIC_UFORCES EPIC-UFORCES 0] 144 [EPIC_UHERCULES EPIC-UHERCULES 0] 145 [Flash Flash 0] 146 [HERO_PA HERO-PA 0] 147 } 148 @Expand(AcquisitionKindTable) @Enumeration(`$(name)`) AcquisitionKind 149 150 @Struct ParametersHead 151 { 152 [das_voxel_transform M4 ] 153 [xdc_transform M4 ] 154 [xdc_element_pitch V2 ] 155 [raw_data_dimensions UV2 ] 156 [focal_vector V2 ] 157 [transmit_receive_orientation U32 ] 158 [sample_count U32 ] 159 [channel_count U32 ] 160 [acquisition_count U32 ] 161 [acquisition_kind AcquisitionKind] 162 [decode_mode DecodeMode ] 163 [sampling_mode SamplingMode ] 164 [time_offset F32 ] 165 [single_focus B32 ] 166 [single_orientation B32 ] 167 } 168 169 @Struct UIParameters 170 { 171 [output_points SV4] 172 [sampling_frequency F32] 173 [demodulation_frequency F32] 174 [speed_of_sound F32] 175 [f_number F32] 176 [interpolation_mode InterpolationMode] 177 [coherency_weighting B32] 178 [decimation_rate U32] 179 } 180 181 @Struct ExtraParameters 182 { 183 [contrast_mode ContrastMode ] 184 [emission_parameters EmissionParameters] 185 } 186 187 @Struct Parameters 188 { 189 [`` ParametersHead ] 190 [`` UIParameters ] 191 [`` ExtraParameters] 192 } 193 @Library @Struct Parameters 194 @MATLAB @Struct Parameters 195 196 @Struct SimpleParameters 197 { 198 199 [`` Parameters 1 ] 200 [channel_mapping S16 MaxChannelCount ] 201 [sparse_elements S16 MaxEmissionsCount ] 202 [transmit_receive_orientations U8 MaxEmissionsCount ] 203 [steering_angles F32 MaxEmissionsCount ] 204 [focal_depths F32 MaxEmissionsCount ] 205 [compute_stages S32 MaxComputeShaderStages] 206 [compute_stage_parameters S32 MaxComputeShaderStages] 207 [compute_stages_count U32 1 ] 208 [data_kind DataKind 1 ] 209 } 210 @Library @Struct SimpleParameters 211 @MATLAB @Struct SimpleParameters 212 213 @Emit 214 { 215 `read_only global u8 beamformer_data_kind_element_size[] = {` 216 @Expand(DataKindTable) ` $(size),` 217 `};` 218 `` 219 `read_only global u8 beamformer_data_kind_element_count[] = {` 220 @Expand(DataKindTable) ` $(elements),` 221 `};` 222 `` 223 `read_only global u8 beamformer_data_kind_byte_size[] = {` 224 @Expand(DataKindTable) ` $(size) * $(elements),` 225 `};` 226 `` 227 `read_only global b8 beamformer_data_kind_complex[] = {` 228 @Expand(DataKindTable) ` $(complex),` 229 `};` 230 `` 231 `read_only global u8 beamformer_contrast_mode_samples[] = {` 232 @Expand(ContrastModeTable) ` $(samples),` 233 `};` 234 `` 235 `read_only global u8 beamformer_acquisition_kind_has_fixed_transmits[] = {` 236 @Expand(AcquisitionKindTable) ` $(fixed_transmits),` 237 `};` 238 `` 239 `read_only global s8 beamformer_acquisition_kind_strings[] = {` 240 @Expand(AcquisitionKindTable) ` s8_comp("$(pretty_name)"),` 241 `};` 242 `` 243 `read_only global s8 beamformer_filter_kind_strings[] = {` 244 @Expand(FilterKindTable) ` s8_comp("$(name)"),` 245 `};` 246 `` 247 `read_only global s8 beamformer_interpolation_mode_strings[] = {` 248 @Expand(InterpolationMode) ` s8_comp("$(name)"),` 249 `};` 250 } 251 252 @ShaderGroup Compute 253 { 254 @Shader CudaDecode 255 @Shader CudaHilbert 256 257 @Shader(decode.glsl) Decode 258 { 259 @Enumeration DataKind 260 @Enumeration DecodeMode 261 262 @Bake 263 { 264 [DataKind data_kind U32] 265 [DilateOutput dilate_output U32] 266 [UseSharedMemory use_shared_memory U32] 267 [DecodeMode decode_mode U32] 268 [InputChannelStride input_channel_stride U32] 269 [InputSampleStride input_sample_stride U32] 270 [InputTransmitStride input_transmit_stride U32] 271 [OutputChannelStride output_channel_stride U32] 272 [OutputSampleStride output_sample_stride U32] 273 [OutputTransmitStride output_transmit_stride U32] 274 [ToProcess to_process U32] 275 [TransmitCount transmit_count U32] 276 } 277 } 278 279 @Shader(filter.glsl) Filter 280 { 281 @Enumeration DataKind 282 283 @ShaderAlias Demodulate 284 285 @Bake 286 { 287 [DataKind data_kind U32] 288 [Demodulate demodulate U32] 289 [ComplexFilter complex_filter U32] 290 [OutputFloats output_floats U32] 291 [DecimationRate decimation_rate U32] 292 [FilterLength filter_length U32] 293 [InputChannelStride input_channel_stride U32] 294 [InputSampleStride input_sample_stride U32] 295 [InputTransmitStride input_transmit_stride U32] 296 [OutputChannelStride output_channel_stride U32] 297 [OutputSampleStride output_sample_stride U32] 298 [OutputTransmitStride output_transmit_stride U32] 299 [SampleCount sample_count U32] 300 301 [DemodulationFrequency demodulation_frequency F32] 302 [SamplingFrequency sampling_frequency F32] 303 } 304 } 305 306 @Shader(das.glsl) DAS 307 { 308 @Enumeration AcquisitionKind 309 @Enumeration DataKind 310 @Enumeration InterpolationMode 311 @Enumeration RCAOrientation 312 313 @Bake 314 { 315 [DataKind data_kind U32] 316 [CoherencyWeighting coherency_weighting U32] 317 [SingleFocus single_focus U32] 318 [SingleOrientation single_orientation U32] 319 [Fast fast U32] 320 [Sparse sparse U32] 321 [AcquisitionCount acquisition_count U32] 322 [AcquisitionKind acquisition_kind U32] 323 [ChannelCount channel_count U32] 324 [InterpolationMode interpolation_mode U32] 325 [SampleCount sample_count U32] 326 [TransmitReceiveOrientation transmit_receive_orientation U32] 327 328 [DemodulationFrequency demodulation_frequency F32] 329 [FNumber f_number F32] 330 [FocusDepth focus_depth F32] 331 [SamplingFrequency sampling_frequency F32] 332 [SpeedOfSound speed_of_sound F32] 333 [TimeOffset time_offset F32] 334 [TransmitAngle transmit_angle F32] 335 } 336 337 @PushConstants 338 { 339 [xdc_transform M4] 340 [voxel_transform M4] 341 [xdc_element_pitch V2] 342 } 343 } 344 345 @Shader(min_max.glsl) MinMax 346 @Shader(sum.glsl) Sum 347 } 348 349 @ShaderGroup Render 350 { 351 @Shader(render_3d.frag.glsl) Render3D 352 }