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

◆ optimize_for_tokens()

void MayaFlux::Buffers::BufferProcessingChain::optimize_for_tokens ( const std::shared_ptr< Buffer > &  buffer)

Optimizes the processing pipeline for improved performance.

Parameters
bufferBuffer to optimize the pipeline for

Analyzes the current processor sequence and applies various optimization strategies:

  • Backend Consolidation: Groups processors by preferred backend for batched execution
  • Parallel Execution Planning: Identifies processors that can run concurrently
  • Memory Layout Optimization: Optimizes data access patterns for cache efficiency
  • Resource Balancing: Balances processor load across available hardware resources

Definition at line 342 of file BufferProcessingChain.cpp.

343{
344 auto& processors = m_buffer_processors[buffer];
345 if (processors.empty()) {
346 return;
347 }
348
349 std::vector<std::shared_ptr<BufferProcessor>> compatible_processors;
350 std::vector<std::shared_ptr<BufferProcessor>> incompatible_processors;
351
352 for (auto& processor : processors) {
353 auto processor_token = processor->get_processing_token();
354 if (are_tokens_compatible(m_token_filter_mask, processor_token)) {
355 compatible_processors.push_back(processor);
356 } else {
357 incompatible_processors.push_back(processor);
358 }
359 }
360
361 processors.clear();
362
363 processors.insert(processors.end(), compatible_processors.begin(), compatible_processors.end());
364
366 processors.insert(processors.end(), incompatible_processors.begin(), incompatible_processors.end());
367 }
368}
std::shared_ptr< NetworkGeometryBuffer > buffer
ProcessingToken m_token_filter_mask
Preferred processing token for this chain.
std::unordered_map< std::shared_ptr< Buffer >, std::vector< std::shared_ptr< BufferProcessor > > > m_buffer_processors
Map of buffers to their processor sequences.
TokenEnforcementStrategy m_enforcement_strategy
Token enforcement strategy for this chain.
bool are_tokens_compatible(ProcessingToken preferred, ProcessingToken current)
Determines if two processing tokens are compatible for joint execution.
@ STRICT
Strictly enforces token assignment with no cross-token sharing.
@ FILTERED
Filters processors through token enumeration, allowing compatible combinations.

References MayaFlux::Buffers::are_tokens_compatible(), buffer, MayaFlux::Buffers::FILTERED, m_buffer_processors, m_enforcement_strategy, m_token_filter_mask, and MayaFlux::Buffers::STRICT.

+ Here is the call graph for this function: