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

◆ update_from_buffer()

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

Definition at line 581 of file DescriptorBindingsProcessor.cpp.

582{
583 if (binding.source_type == SourceType::AUDIO_BUFFER) {
584 auto audio = std::dynamic_pointer_cast<AudioBuffer>(binding.buffer);
585 const auto& samples = audio->get_data();
586 size_t required = samples.size() * sizeof(float);
587 ensure_buffer_capacity(binding, required);
588
589 thread_local std::vector<float> conv;
590 conv.resize(samples.size());
591 std::ranges::transform(samples, conv.begin(),
592 [](double d) { return static_cast<float>(d); });
593
594 upload_to_gpu(conv.data(), required, binding.gpu_buffer, nullptr);
595 return;
596 }
597
598 auto vk = std::dynamic_pointer_cast<VKBuffer>(binding.buffer);
599 auto data = vk->get_data();
600 if (data.empty()) {
602 "Host VKBuffer binding '{}' returned no data", binding.descriptor_name);
603 return;
604 }
605 auto& raw = std::get<std::vector<uint8_t>>(data[0]);
606 ensure_buffer_capacity(binding, raw.size());
607 upload_to_gpu(raw.data(), raw.size(), binding.gpu_buffer, nullptr);
608}
#define MF_RT_WARN(comp, ctx,...)
void ensure_buffer_capacity(DescriptorBinding &binding, size_t required_size)
Ensure descriptor buffer has sufficient capacity.
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 AUDIO_BUFFER, MayaFlux::Buffers::DescriptorBindingsProcessor::DescriptorBinding::buffer, MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, MayaFlux::Buffers::DescriptorBindingsProcessor::DescriptorBinding::descriptor_name, ensure_buffer_capacity(), MayaFlux::Buffers::DescriptorBindingsProcessor::DescriptorBinding::gpu_buffer, MF_RT_WARN, 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: