13#include <vulkan/vulkan.h>
35 for (
const VkDescriptorType& type : NeededDescriptorTypes)
80 inline void GenerateHash()
86 m_Hash ^= std::hash<uint32_t>()(binding.binding) ^
87 std::hash<uint32_t>()(binding.descriptorType) ^
88 std::hash<uint32_t>()(binding.descriptorCount) ^
89 std::hash<uint32_t>()(binding.stageFlags);
93 friend uint32_t GetTypeHash(
const FSetLayout& Layout)
105 inline const KarmaMap<VkDescriptorType, uint32_t>& GetLayoutTypes()
const
111 void AddDescriptor(int32_t DescriptorSetIndex,
const VkDescriptorSetLayoutBinding& Descriptor);
122 VkPipelineBindPoint m_BindPoint = VK_PIPELINE_BIND_POINT_MAX_ENUM;
129 ~FVulkanDescriptorSetsLayout();
135 return m_LayoutHandles;
140 return m_LayoutHandleIds;
143 inline const VkDescriptorSetAllocateInfo& GetAllocateInfo()
const
145 return m_DescriptorSetsAllocateInfo;
148 inline uint32_t GetHash()
const
157 VkDescriptorSetAllocateInfo m_DescriptorSetsAllocateInfo;
206 class FVulkanDescriptorPool
210 ~FVulkanDescriptorPool();
220 return m_DescriptorPool;
236 uint32_t m_MaxDescriptorSets;
238 VkDescriptorPool m_DescriptorPool;
This file contains the custom types used in Engine's logic.
VkDescriptorPool GetHandle() const
Retrieves the Vulkan descriptor pool handle.
Definition VulkanDescriptorSets.h:218
void AllocateDescriptorSets(const FVulkanDescriptorSetsLayout &InLayout, FVulkanDescriptorSets &InDSets)
Allocates descriptor sets from the pool based on the provided allocation info.
Definition VulkanDescriptorSets.cpp:139
Definition VulkanDescriptorSets.h:242
Definition VulkanDescriptorSets.h:126
FVulkanDescriptorSetsLayoutInfo()
Constructor.
Definition VulkanDescriptorSets.h:29
uint32_t GetTypesUsed(VkDescriptorType Type) const
Returns the number of descriptors of a specific type used in the layout, across all descriptor sets.
Definition VulkanDescriptorSets.h:49
KarmaMap< VkDescriptorType, uint32_t > m_LayoutTypes
Map storing the count of each Vulkan descriptor type used in the layout.
Definition VulkanDescriptorSets.h:118
Manages Vulkan device resources and operations.
Definition VulkanDevice.h:33
Texture class.
Definition Texture.h:45
Vulkan specific implementation of Texture class.
Definition VulkanTexture.h:30
Karma's std::map wrapper.
Definition KarmaTypes.h:90
void Add(const KeyType &Key, const ValueType &Value)
Addes a key-value pair to the map.
Definition KarmaTypes.h:109
Karma's std::vector wrapper with additional functionalities.
Definition KarmaTypes.h:243
Definition VulkanDescriptorSets.h:161
FVulkanDescriptorSets(FVulkanDevice *InDevice, const FVulkanDescriptorSetsLayout &InLayout)
Constructor for FVulkanDescriptorSets.
Definition VulkanDescriptorSets.cpp:162
void UpdateUniformBufferDescriptorSet(class VulkanUniformBuffer *Uniform, uint32_t SetLayoutIndex, uint32_t DescriptorSetIndex, uint32_t FrameIndex)
Assigns an Engine's uniform buffer to a specific descriptor set of a specific layout.
Definition VulkanDescriptorSets.cpp:176
void UpdateTextureDescriptorSet(class VulkanTexture *Texture, uint32_t SetLayoutIndex, uint32_t DescriptorSetIndex)
Assigns an Engine's texture to a specific descriptor set of a specific layout.
Definition VulkanDescriptorSets.cpp:195
Structure representing a descriptor set layout.
Definition VulkanDescriptorSets.h:65
KarmaVector< VkDescriptorSetLayoutBinding > m_LayoutBindings
Layout bindings for this descriptor set, representing the individual descriptors and their configurat...
Definition VulkanDescriptorSets.h:70
uint32_t m_NumberOfDescriptorSets
The number of descriptor sets that use this layout. This is used for calculating the total number of ...
Definition VulkanDescriptorSets.h:78