MayaFlux 0.3.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ is_region_access_contiguous()

bool MayaFlux::Kakshya::is_region_access_contiguous ( const Region region,
const std::shared_ptr< SignalSourceContainer > &  container 
)

Check if region access will be contiguous in memory.

Parameters
regionRegion to check.
containerContainer providing layout information.
Returns
True if access is contiguous, false otherwise.

Definition at line 238 of file RegionUtils.cpp.

240{
241 if (!container) {
242 return false;
243 }
244
245 const auto dimensions = container->get_dimensions();
246 const auto memory_layout = container->get_memory_layout();
247
248 // For row-major layout, contiguous access means the last dimension spans its full range
249 // For column-major layout, contiguous access means the first dimension spans its full range
250
251 if (memory_layout == MemoryLayout::ROW_MAJOR) {
252 if (!dimensions.empty() && !region.start_coordinates.empty() && !region.end_coordinates.empty()) {
253 size_t last_dim = dimensions.size() - 1;
254 return (region.start_coordinates[last_dim] == 0 && region.end_coordinates[last_dim] == dimensions[last_dim].size - 1);
255 }
256 } else if (memory_layout == MemoryLayout::COLUMN_MAJOR) {
257 if (!dimensions.empty() && !region.start_coordinates.empty() && !region.end_coordinates.empty()) {
258 return (region.start_coordinates[0] == 0 && region.end_coordinates[0] == dimensions[0].size - 1);
259 }
260 }
261
262 return false;
263}
std::vector< uint64_t > end_coordinates
Ending frame index (inclusive)
Definition Region.hpp:72
std::vector< uint64_t > start_coordinates
Starting frame index (inclusive)
Definition Region.hpp:69

References MayaFlux::Kakshya::Region::end_coordinates, is_region_access_contiguous(), and MayaFlux::Kakshya::Region::start_coordinates.

Referenced by analyze_access_pattern(), and is_region_access_contiguous().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: