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

◆ enter_layer_mode()

void MayaFlux::Buffers::TextureArrayBuffer::enter_layer_mode ( )
private

Definition at line 314 of file TextureArrayBuffer.cpp.

315{
316 if (m_layer_mode) {
317 return;
318 }
319
320 ensure_array();
321 if (!has_texture()) {
322 return;
323 }
324
326 const size_t total = m_layer_bytes * m_layers;
327 const auto staging = create_image_staging_buffer(total);
328 if (!staging) {
330 "TextureArrayBuffer: failed to allocate staging for {} bytes", total);
331 return;
332 }
333
335 if (storage.size() == total) {
336 loom.upload_data(get_texture(), storage.data(), total, staging);
337 } else {
338 const std::vector<uint8_t> blank(total, 0);
339 loom.upload_data(get_texture(), blank.data(), total, staging);
340 }
341
342 std::vector<uint8_t>().swap(storage);
343 m_layer_mode = true;
344}
#define MF_ERROR(comp, ctx,...)
uint32_t total
SampleStorage storage
std::shared_ptr< Core::VKImage > get_texture() const
Get GPU texture image Suitable for binding to shaders via RenderProcessor::bind_texture()
std::vector< uint8_t > & get_pixel_data_mutable()
std::shared_ptr< VKBuffer > create_image_staging_buffer(size_t size)
Allocate a persistent host-visible staging buffer sized for repeated streaming uploads to an image of...
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.
MAYAFLUX_API TextureLoom & get_texture_manager()
Get the global texture manager instance.

References MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, MayaFlux::Buffers::create_image_staging_buffer(), ensure_array(), MayaFlux::Buffers::TextureBuffer::get_pixel_data_mutable(), MayaFlux::Buffers::TextureBuffer::get_texture(), MayaFlux::Portal::Graphics::get_texture_manager(), MayaFlux::Buffers::TextureBuffer::has_texture(), m_layer_bytes, m_layer_mode, m_layers, MF_ERROR, storage, and total.

Referenced by submit_layer().

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