173{
174 auto vk_buffer = std::dynamic_pointer_cast<VKBuffer>(gpu_buffer);
175 if (!vk_buffer) {
177 "TransferProcessor (audio→gpu) requires VKBuffer.");
178 return;
179 }
180
182 [&vk_buffer](const auto& pair) { return pair.second == vk_buffer; });
183
186 "No source AudioBuffer configured for this VKBuffer.");
187 return;
188 }
189
190 auto source_audio = transfer_it->first;
191
192 if (vk_buffer->is_host_visible()) {
194 } else {
198 "No staging buffer configured for device-local VKBuffer.");
199 return;
200 }
202 }
203}
#define MF_RT_ERROR(comp, ctx,...)
std::unordered_map< std::shared_ptr< VKBuffer >, std::shared_ptr< VKBuffer > > m_staging_map
std::unordered_map< std::shared_ptr< AudioBuffer >, std::shared_ptr< VKBuffer > > m_audio_to_gpu_map
void upload_audio_to_gpu(const std::shared_ptr< AudioBuffer > &audio_buffer, const std::shared_ptr< VKBuffer > &gpu_buffer, const std::shared_ptr< VKBuffer > &staging)
Upload AudioBuffer to GPU (always double precision)
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.