Class VulkanDescriptorSetManager

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

class VulkanDescriptorSetManager : public portal::renderer::DescriptorSetManager

Vulkan descriptor set manager with automatic invalidation tracking.

Binds resources to shader descriptor sets by name using shader reflection. Manages descriptor allocation, updates, and multi-buffering.

Public Functions

~VulkanDescriptorSetManager() override
VulkanDescriptorSetManager(const VulkanDescriptorSetManager&) = delete
VulkanDescriptorSetManager &operator=(const VulkanDescriptorSetManager&) = delete
virtual void set_input(StringId name, const Reference<UniformBufferSet> &buffer) override

Binds uniform buffer set.

virtual void set_input(StringId name, const Reference<UniformBuffer> &buffer) override

Binds uniform buffer.

virtual void set_input(StringId name, const Reference<StorageBufferSet> &buffer) override

Binds storage buffer set.

virtual void set_input(StringId name, const Reference<StorageBuffer> &buffer) override

Binds storage buffer.

virtual void set_input(StringId name, const Reference<Texture> &texture) override

Binds texture.

virtual void set_input(StringId name, const Reference<Image> &image) override

Binds image.

virtual void set_input(StringId name, const Reference<ImageView> &image) override

Binds image view.

template<typename T>
inline virtual Reference<T> get_input(const StringId name)

Gets bound input resource (typed)

Template Parameters:

TResource type

Parameters:

name – Binding name

Returns:

Resource reference

virtual Reference<RendererResource> get_input(StringId name) override

Gets bound input resource.

Parameters:

name – Binding name

Returns:

Resource reference

virtual bool is_invalidated(size_t set, size_t binding_index) const override

Checks if binding is invalidated.

Parameters:
  • set – Descriptor set index

  • binding_index – Binding index

Returns:

True if invalidated

virtual bool validate() override

Validates all bindings are set.

virtual void bake() override

Finalizes descriptor sets for rendering.

const shader_reflection::ShaderResourceDeclaration *get_input_declaration(const StringId &name) const

Gets resource declaration from shader reflection.

Parameters:

nameResource name

Returns:

Reflection data or nullptr

virtual void invalidate_and_update(size_t frame_index) override

Updates invalidated bindings for frame.

Parameters:

frame_index – Frame-in-flight index

size_t get_first_set_index() const

Gets first managed descriptor set index.

const std::vector<vk::raii::DescriptorSet> &get_descriptor_sets(size_t frame_index) const

Gets descriptor sets for frame.

Parameters:

frame_index – Frame-in-flight index

Returns:

Descriptor sets

Public Members

std::unordered_map<size_t, std::unordered_map<size_t, DescriptorInput>> input_resources
std::unordered_map<size_t, std::unordered_map<size_t, DescriptorInput>> invalid_input_resources
std::unordered_map<StringId, shader_reflection::ShaderResourceDeclaration> input_declarations
std::vector<std::vector<vk::raii::DescriptorSet>> descriptor_sets
std::vector<std::unordered_map<size_t, std::unordered_map<size_t, WriteDescriptor>>> write_descriptors_map

Public Static Functions

static VulkanDescriptorSetManager create(const DescriptorSetManagerProperties &properties, const VulkanDevice &device)

Creates descriptor set manager.

Parameters:
  • properties – Configuration

  • device – Vulkan device

Returns:

Descriptor set manager

static std::unique_ptr<VulkanDescriptorSetManager> create_unique(const DescriptorSetManagerProperties &properties, const VulkanDevice &device)

Creates unique descriptor set manager.

Parameters:
  • properties – Configuration

  • device – Vulkan device

Returns:

Unique pointer to manager

struct WriteDescriptor

Public Members

vk::WriteDescriptorSet write_descriptor_set
std::vector<void*> resource_handles