|
MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
|
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 | |
| VKDescriptorManager & | operator= (const VKDescriptorManager &)=delete |
| VKDescriptorManager (VKDescriptorManager &&) noexcept | |
| VKDescriptorManager & | operator= (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 |
Manages descriptor pools, layouts, and set allocation.
Responsibilities:
Does NOT handle:
Design:
Definition at line 131 of file VKDescriptorManager.hpp.