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

◆ add_node()

void MayaFlux::Buffers::AggregateBindingsProcessor::add_node ( const std::string &  aggregate_name,
const std::shared_ptr< Nodes::Node > &  node,
const std::shared_ptr< VKBuffer > &  target 
)

Add a node to a named aggregate.

Parameters
aggregate_nameName of the aggregate group
nodeNode to add
targetTarget buffer for this aggregate

Nodes with the same aggregate_name are grouped together and uploaded to the same target buffer. Nodes are ordered by insertion.

Definition at line 9 of file AggregateBindingsProcessor.cpp.

13{
14 if (!node) {
16 "Attempted to add null node to aggregate '{}'", aggregate_name);
17 return;
18 }
19
20 if (!target) {
21 error<std::invalid_argument>(
24 std::source_location::current(),
25 "Cannot add node to aggregate '{}' with null target buffer", aggregate_name);
26 }
27
28 auto& aggregate = m_aggregates[aggregate_name];
29
30 if (aggregate.nodes.empty()) {
31 aggregate.target_buffer = target;
32 } else if (aggregate.target_buffer != target) {
34 "Aggregate '{}' already has a different target buffer. Ignoring new target.",
35 aggregate_name);
36 }
37
38 aggregate.nodes.push_back(node);
39 aggregate.staging_data.resize(aggregate.nodes.size());
40
41 size_t required_size = aggregate.nodes.size() * sizeof(float);
42 if (aggregate.target_buffer->get_size_bytes() < required_size) {
44 "Target buffer for aggregate '{}' may be too small: {} nodes require {} bytes, buffer has {} bytes",
45 aggregate_name, aggregate.nodes.size(), required_size,
46 aggregate.target_buffer->get_size_bytes());
47 }
48
50 "Added node to aggregate '{}' (total: {})", aggregate_name, aggregate.nodes.size());
51}
#define MF_WARN(comp, ctx,...)
#define MF_DEBUG(comp, ctx,...)
std::unordered_map< std::string, AggregateBinding > m_aggregates
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.

References MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, m_aggregates, MF_DEBUG, and MF_WARN.