MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Core::VKDescriptorManager Class Reference

Manages descriptor pools, layouts, and set allocation. More...

#include <VKDescriptorManager.hpp>

+ Collaboration diagram for MayaFlux::Core::VKDescriptorManager:

Public Member Functions

 VKDescriptorManager ()=default
 
 ~VKDescriptorManager ()
 
 VKDescriptorManager (const VKDescriptorManager &)=delete
 
VKDescriptorManageroperator= (const VKDescriptorManager &)=delete
 
 VKDescriptorManager (VKDescriptorManager &&) noexcept
 
VKDescriptorManageroperator= (VKDescriptorManager &&) noexcept
 
bool initialize (vk::Device device, uint32_t initial_pool_size=1024)
 Initialize descriptor manager.
 
void cleanup (vk::Device device)
 Cleanup all descriptor resources.
 
vk::DescriptorSetLayout create_layout (vk::Device device, const DescriptorSetLayoutConfig &config)
 Create descriptor set layout from configuration.
 
vk::DescriptorSet allocate_set (vk::Device device, vk::DescriptorSetLayout layout)
 Allocate a descriptor set from the pool.
 
void update_buffer (vk::Device device, vk::DescriptorSet set, uint32_t binding, vk::Buffer buffer, vk::DeviceSize offset=0, vk::DeviceSize range=VK_WHOLE_SIZE)
 Update descriptor set with buffer binding.
 
void update_image (vk::Device device, vk::DescriptorSet set, uint32_t binding, vk::ImageView image_view, vk::Sampler sampler=nullptr, vk::ImageLayout layout=vk::ImageLayout::eGeneral)
 Update descriptor set with image binding.
 
void update_sampler (vk::Device device, vk::DescriptorSet set, uint32_t binding, vk::Sampler sampler)
 Update descriptor set with sampler binding.
 
void update_combined_image_sampler (vk::Device device, vk::DescriptorSet set, uint32_t binding, vk::ImageView image_view, vk::Sampler sampler, vk::ImageLayout layout=vk::ImageLayout::eShaderReadOnlyOptimal)
 Update descriptor set with combined image+sampler.
 
void update_input_attachment (vk::Device device, vk::DescriptorSet set, uint32_t binding, vk::ImageView image_view, vk::ImageLayout layout=vk::ImageLayout::eShaderReadOnlyOptimal)
 Update descriptor set with input attachment.
 
DescriptorUpdateBatch begin_batch (vk::Device device, vk::DescriptorSet set)
 Begin a batch descriptor update.
 
void copy_descriptor_set (vk::Device device, vk::DescriptorSet src, vk::DescriptorSet dst, uint32_t copy_count=0)
 Copy descriptor set contents.
 
std::vector< vk::DescriptorSet > allocate_sets (vk::Device device, const std::vector< vk::DescriptorSetLayout > &layouts)
 Allocate multiple descriptor sets at once.
 
void batch_update (vk::Device device, const std::vector< vk::WriteDescriptorSet > &writes)
 Batch update multiple bindings at once.
 
void reset_pools (vk::Device device)
 Reset all descriptor pools.
 
std::pair< uint32_t, uint32_t > get_pool_stats () const
 Get current pool utilization.
 

Private Member Functions

vk::DescriptorPool create_pool (vk::Device device, uint32_t max_sets)
 Create a new descriptor pool.
 
bool grow_pools (vk::Device device)
 Grow pool capacity by allocating new pool.
 
size_t hash_layout_config (const DescriptorSetLayoutConfig &config) const
 Compute hash of descriptor set layout config.
 

Private Attributes

vk::Device m_device = nullptr
 
std::vector< vk::DescriptorPool > m_pools
 
size_t m_current_pool_index = 0
 
uint32_t m_pool_size = 1024
 Sets per pool.
 
uint32_t m_allocated_count = 0
 Total allocated sets.
 
uint32_t m_pool_capacity = 0
 Total capacity across all pools.
 
std::vector< vk::DescriptorSetLayout > m_layouts
 
std::unordered_map< size_t, size_t > m_layout_cache
 

Detailed Description

Manages descriptor pools, layouts, and set allocation.

Responsibilities:

  • Create descriptor set layouts from bindings
  • Allocate descriptor pools
  • Allocate descriptor sets from pools
  • Update descriptor sets (bind buffers/images)
  • Handle pool exhaustion and growth

Does NOT handle:

Design:

  • One manager per logical context (e.g., per VulkanBackend)
  • Pools grow automatically when exhausted
  • Layouts are cached by configuration

Definition at line 131 of file VKDescriptorManager.hpp.


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