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

◆ calculate_buffer_size()

size_t MayaFlux::Buffers::NetworkGeometryBuffer::calculate_buffer_size ( const std::shared_ptr< Nodes::Network::NodeNetwork > &  network,
float  over_allocate_factor 
)
staticprivate

Calculate initial buffer size based on network node count.

Definition at line 141 of file NetworkGeometryBuffer.cpp.

144{
145 if (!network) {
146 return 0;
147 }
148
149 size_t node_count = network->get_node_count();
150 if (node_count == 0) {
152 "NodeNetwork has zero nodes. Buffer will be created with minimum size.");
153 return 4096;
154 }
155
156 size_t base_size = 0;
157
158 if (auto* operator_ptr = network->get_operator()) {
159 if (auto graphics_op = dynamic_cast<Nodes::Network::GraphicsOperator*>(operator_ptr)) {
160 size_t vertex_count = graphics_op->get_vertex_count();
161 auto layout = graphics_op->get_vertex_layout();
162
163 if (vertex_count > 0 && layout.stride_bytes > 0) {
164 base_size = vertex_count * layout.stride_bytes;
165
167 "Network geometry buffer sizing: {} vertices × {} bytes = {} bytes (operator: {})",
168 vertex_count, layout.stride_bytes, base_size, operator_ptr->get_type_name());
169 }
170 }
171 }
172
173 if (base_size == 0) {
174 size_t vertex_size = sizeof(Kakshya::PointVertex);
175 base_size = node_count * vertex_size;
176
178 "Network geometry buffer fallback sizing: {} nodes × {} bytes = {} bytes",
179 node_count, vertex_size, base_size);
180 }
181
182 auto allocated_size = static_cast<size_t>(
183 static_cast<float>(base_size) * over_allocate_factor);
184
185 if (over_allocate_factor > 1.0F) {
187 "Over-allocated by {}x: {} → {} bytes",
188 over_allocate_factor, base_size, allocated_size);
189 }
190
191 return allocated_size;
192}
#define MF_WARN(comp, ctx,...)
#define MF_DEBUG(comp, ctx,...)
Core::GlobalNetworkConfig network
Definition Config.cpp:37
@ BufferManagement
Buffer Management (Buffers::BufferManager, creating buffers)
@ Buffers
Buffers, Managers, processors and processing chains.

References MayaFlux::Journal::BufferManagement, MayaFlux::Journal::Buffers, MF_DEBUG, MF_WARN, and network.