MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Yantra::GpuResourceManager Class Reference

Encapsulates all Vulkan resource lifecycle behind Portal facades. More...

#include <GpuResourceManager.hpp>

+ Collaboration diagram for MayaFlux::Yantra::GpuResourceManager:

Classes

struct  BufferSlot
 

Public Member Functions

void bind_descriptor (size_t index, const GpuBufferBinding &spec)
 
void bind_image_sampled (size_t index, const std::shared_ptr< Core::VKImage > &image, vk::Sampler sampler, const GpuBufferBinding &spec)
 Bind a combined image+sampler descriptor at the given slot index.
 
void bind_image_storage (size_t index, const std::shared_ptr< Core::VKImage > &image, const GpuBufferBinding &spec)
 Bind a storage image descriptor at the given slot index.
 
size_t buffer_allocated_bytes (size_t index) const
 
void cleanup ()
 
void dispatch (const std::array< uint32_t, 3 > &groups, const std::vector< GpuBufferBinding > &bindings, const uint8_t *push_constant_data, size_t push_constant_size)
 
void dispatch_batched (uint32_t pass_count, const std::array< uint32_t, 3 > &groups, const std::vector< GpuBufferBinding > &bindings, const std::function< void(uint32_t pass, std::vector< uint8_t > &)> &push_constant_updater, size_t push_constant_size, const std::unordered_map< std::string, std::any > &execution_metadata={})
 
void download (size_t index, float *dest, size_t byte_size)
 
void ensure_buffer (size_t index, size_t required_bytes)
 
 GpuResourceManager ()
 
 GpuResourceManager (const GpuResourceManager &)=delete
 
 GpuResourceManager (GpuResourceManager &&)=delete
 
bool initialise (const GpuShaderConfig &config, const std::vector< GpuBufferBinding > &bindings)
 
bool is_ready () const
 
GpuResourceManageroperator= (const GpuResourceManager &)=delete
 
GpuResourceManageroperator= (GpuResourceManager &&)=delete
 
void transition_image (const std::shared_ptr< Core::VKImage > &image, vk::ImageLayout old_layout, vk::ImageLayout new_layout)
 Transition a VKImage layout via an immediate command submission.
 
void upload (size_t index, const float *data, size_t byte_size)
 
void upload_raw (size_t index, const uint8_t *data, size_t byte_size)
 
 ~GpuResourceManager ()
 

Private Attributes

std::vector< BufferSlotm_buffer_slots
 
std::vector< Portal::Graphics::DescriptorSetIDm_descriptor_set_ids
 
std::vector< std::shared_ptr< Core::VKImage > > m_image_slots
 
std::unique_ptr< GpuResourceManagerImplm_impl
 
Portal::Graphics::ComputePipelineID m_pipeline_id { Portal::Graphics::INVALID_COMPUTE_PIPELINE }
 
bool m_ready {}
 
Portal::Graphics::ShaderID m_shader_id { Portal::Graphics::INVALID_SHADER }
 

Detailed Description

Encapsulates all Vulkan resource lifecycle behind Portal facades.

Manages storage buffers, pipeline, shader, and descriptor sets. PIMPL hides vk:: types from the header entirely.

Definition at line 62 of file GpuResourceManager.hpp.


The documentation for this class was generated from the following files: