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

◆ update_from_network()

void MayaFlux::Buffers::DescriptorBindingsProcessor::update_from_network ( DescriptorBinding binding)
private

Definition at line 610 of file DescriptorBindingsProcessor.cpp.

611{
612 if (!binding.network) {
614 "NETWORK binding '{}' has null network", binding.descriptor_name);
615 return;
616 }
617
618 if (binding.source_type == SourceType::NETWORK_AUDIO) {
619
620 auto data = binding.network->get_audio_buffer();
621 if (!data) {
623 "Network audio binding '{}' has no audio buffer", binding.descriptor_name);
624 return;
625 }
626 const auto& samples = *data;
627 size_t required = samples.size() * sizeof(float);
628
629 thread_local std::vector<float> conv;
630 conv.resize(samples.size());
631
632 std::ranges::transform(samples, conv.begin(),
633 [](double d) { return static_cast<float>(d); });
634
635 upload_to_gpu(conv.data(), required, binding.gpu_buffer, nullptr);
636 return;
637 }
638
639 auto gpu_data = extract_network_gpu_data(binding.network, binding.descriptor_name);
640 if (gpu_data.vertex_data.empty()) {
641 return;
642 }
643 ensure_buffer_capacity(binding, gpu_data.vertex_data.size_bytes());
645 gpu_data.vertex_data.data(),
646 gpu_data.vertex_data.size_bytes(),
647 binding.gpu_buffer,
648 nullptr);
649}
#define MF_RT_WARN(comp, ctx,...)
#define MF_RT_ERROR(comp, ctx,...)
void ensure_buffer_capacity(DescriptorBinding &binding, size_t required_size)
Ensure descriptor buffer has sufficient capacity.
NetworkGpuData extract_network_gpu_data(const std::shared_ptr< Nodes::Network::NodeNetwork > &network, std::string_view name)
Extract GPU geometry data from a NodeNetwork via its GraphicsOperator.
void upload_to_gpu(const void *data, size_t size, const std::shared_ptr< VKBuffer > &target, const std::shared_ptr< VKBuffer > &staging)
Upload raw data to GPU buffer (auto-detects host-visible vs device-local)
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.

References MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, MayaFlux::Buffers::DescriptorBindingsProcessor::DescriptorBinding::descriptor_name, ensure_buffer_capacity(), MayaFlux::Buffers::extract_network_gpu_data(), MayaFlux::Buffers::DescriptorBindingsProcessor::DescriptorBinding::gpu_buffer, MF_RT_ERROR, MF_RT_WARN, MayaFlux::Buffers::DescriptorBindingsProcessor::DescriptorBinding::network, NETWORK_AUDIO, MayaFlux::Buffers::DescriptorBindingsProcessor::DescriptorBinding::source_type, and MayaFlux::Buffers::upload_to_gpu().

Referenced by update_descriptor_data().

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