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

◆ write_back_buffer()

void MayaFlux::Buffers::DataWriteProcessor::write_back_buffer ( size_t  index,
Kakshya::DataVariant  data 
)

Write a raw back_buffers slot of the attached buffer.

Parameters
indexSlot index into its back_buffers.
dataSource data; a slot does not carry its size, so the data must not exceed what the buffer's owner allocated for it.

Definition at line 109 of file DataWriteProcessor.cpp.

110{
111 auto payload = std::make_shared<Kakshya::DataVariant>(std::move(data));
112 enqueue_write([index, payload](DataWriteProcessor& self, const std::shared_ptr<VKBuffer>& vk) {
113 const auto bytes = Kakshya::convert_variant<uint8_t>(*payload);
114 const auto& slots = vk->get_buffer_resources().back_buffers;
115 if (index >= slots.size() || bytes.size_bytes() == 0) {
117 "DataWriteProcessor write_back_buffer needs an existing slot and nonempty data");
118 return;
119 }
120 if (!slots[index].mapped_ptr) {
121 ensure_staging(self.m_write_staging, bytes.size_bytes());
122 }
123 upload_back_buffer(slots[index], bytes.data(), bytes.size_bytes(), self.m_write_staging);
124 });
125}
#define MF_RT_ERROR(comp, ctx,...)
uint64_t payload
Definition Composite.cpp:18
uint32_t index
Definition VKDevice.cpp:122
void upload_back_buffer(const VKBufferResources::GenerationSlot &slot, const void *data, size_t size, std::shared_ptr< VKBuffer > &staging)
Upload host memory into a raw back_buffers slot.
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.

References MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, enqueue_write(), index, m_write_staging, MF_RT_ERROR, payload, and MayaFlux::Buffers::upload_back_buffer().

+ Here is the call graph for this function: