|
MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
|
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 |
| GpuResourceManager & | operator= (const GpuResourceManager &)=delete |
| GpuResourceManager & | operator= (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< BufferSlot > | m_buffer_slots |
| std::vector< Portal::Graphics::DescriptorSetID > | m_descriptor_set_ids |
| std::vector< std::shared_ptr< Core::VKImage > > | m_image_slots |
| std::unique_ptr< GpuResourceManagerImpl > | m_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 } |
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.