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

◆ queue_graphics_write()

void MayaFlux::Kriya::BufferPipeline::queue_graphics_write ( BufferOperation &  op,
const std::shared_ptr< Buffers::VKBuffer > &  target,
const Kakshya::DataVariant &  data 
)
private

Definition at line 345 of file BufferPipelineOperations.cpp.

346{
347 if (detail::accepts_layer_write(target)) {
348 detail::write_layer(target, op.m_target_layer, data);
349 return;
350 }
351
352 if (!m_buffer_manager) {
353 error<std::invalid_argument>(Journal::Component::Kriya,
355 std::source_location::current(),
356 "BufferPipeline has no BufferManager for graphics buffer write");
357 }
358
359 if (!detail::accepts_raw_write(target)) {
360 error<std::invalid_argument>(Journal::Component::Kriya,
362 std::source_location::current(),
363 "Graphics buffer regenerates its own storage; write its owner, source or image instead");
364 }
365
366 if (!op.m_attached_processor) {
367 auto writer = std::make_shared<Buffers::DataWriteProcessor>();
368 m_buffer_manager->add_processor(writer, target, Buffers::ProcessingToken::GRAPHICS_BACKEND);
369 op.m_attached_processor = writer;
370 }
371
372 std::static_pointer_cast<Buffers::DataWriteProcessor>(op.m_attached_processor)->set_data(data);
373}
std::shared_ptr< Buffers::BufferManager > m_buffer_manager
@ GRAPHICS_BACKEND
Standard graphics processing backend configuration.
@ CoroutineScheduling
Coroutine scheduling and temporal coordination (Vruta::TaskScheduler)
@ Kriya
Automatable tasks and fluent scheduling api for Nodes and Buffers.
void write_layer(const std::shared_ptr< Buffers::VKBuffer > &target, uint32_t layer, const Kakshya::DataVariant &data)
Write a DataVariant into one layer of a layered buffer.
bool accepts_layer_write(const std::shared_ptr< Buffers::VKBuffer > &buffer)
Whether the buffer holds its frames as layers that can be written one at a time.
bool accepts_raw_write(const std::shared_ptr< Buffers::VKBuffer > &buffer)
Whether a DataVariant can be written to the buffer's primary storage.

References MayaFlux::Kriya::detail::accepts_layer_write(), MayaFlux::Kriya::detail::accepts_raw_write(), MayaFlux::Journal::CoroutineScheduling, MayaFlux::Buffers::GRAPHICS_BACKEND, MayaFlux::Journal::Kriya, MayaFlux::Kriya::BufferOperation::m_attached_processor, m_buffer_manager, MayaFlux::Kriya::BufferOperation::m_target_layer, and MayaFlux::Kriya::detail::write_layer().

Referenced by process_fuse(), process_load(), process_route(), and process_transform().

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