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

◆ compute_frame()

void MayaFlux::Nodes::GpuSync::GeometryReadbackNode::compute_frame ( )
overridevirtual

Download vertex data from GPU to CPU.

Issues a synchronous GPU-to-CPU transfer. Safe to call at VISUAL_RATE from a FRAME_ACCURATE metro callback.

Implements MayaFlux::Nodes::GpuSync::GpuSync.

Definition at line 48 of file GeometryReadbackNode.cpp.

49{
50 const size_t buf_bytes = m_gpu_buffer->get_size_bytes();
51 if (!m_gpu_buffer || buf_bytes == 0)
52 return;
53
54 const size_t count = buf_bytes / sizeof(Kakshya::MeshVertex);
55 m_vertices.resize(count);
56
58
59 set_vertices<Kakshya::MeshVertex>(std::span { m_vertices.data(), m_vertices.size() });
60 auto layout = get_vertex_layout();
61 layout->vertex_count = static_cast<uint32_t>(count);
62 set_vertex_layout(*layout);
63}
size_t count
std::shared_ptr< Buffers::VKBuffer > m_gpu_buffer
std::shared_ptr< Buffers::VKBuffer > m_staging_buffer
std::optional< Kakshya::VertexLayout > get_vertex_layout() const
Get cached vertex layout.
void set_vertex_layout(const Kakshya::VertexLayout &layout)
Set cached vertex layout.
void download_from_gpu_async(const std::shared_ptr< VKBuffer > &source, void *data, size_t size, std::shared_ptr< VKBuffer > &staging)
Download from a device-local GPU buffer without stalling the graphics queue.

References count, MayaFlux::Buffers::download_from_gpu_async(), MayaFlux::Nodes::GpuSync::GeometryWriterNode::get_vertex_layout(), m_gpu_buffer, m_staging_buffer, m_vertices, and MayaFlux::Nodes::GpuSync::GeometryWriterNode::set_vertex_layout().

+ Here is the call graph for this function: