18 #ifndef INCLUDED_RENDERER_BACKEND_VULKAN_DESCRIPTORMANAGER 19 #define INCLUDED_RENDERER_BACKEND_VULKAN_DESCRIPTORMANAGER 24 #include <glad/vulkan.h> 27 #include <unordered_map> 55 VkDescriptorType type,
const uint32_t size);
58 VkDescriptorType type, VkDescriptorSetLayout layout,
59 const std::vector<CTexture::UID>& texturesUID,
60 const std::vector<CTexture*>& textures);
79 std::vector<std::pair<VkDescriptorSet, int16_t>>
elements;
98 static_assert(std::numeric_limits<int16_t>::max() >= DESCRIPTOR_INDEXING_BINDING_SIZE);
101 std::unordered_map<CTexture::UID, int16_t>
map;
103 std::array<DescriptorIndexingBindingMap, NUMBER_OF_BINDINGS_PER_DESCRIPTOR_INDEXING_SET>
115 std::unordered_map<SingleTypeCacheKey, VkDescriptorSet, SingleTypeCacheKeyHash>
m_SingleTypeSets;
124 #endif // INCLUDED_RENDERER_BACKEND_VULKAN_DESCRIPTORMANAGER std::array< DescriptorIndexingBindingMap, NUMBER_OF_BINDINGS_PER_DESCRIPTOR_INDEXING_SET > m_DescriptorIndexingBindings
Definition: DescriptorManager.h:104
std::unordered_map< CTexture::UID, uint32_t > m_TextureToBindingMap
Definition: DescriptorManager.h:105
VkDescriptorPool m_DescriptorIndexingPool
Definition: DescriptorManager.h:87
short int16_t
Definition: wposix_types.h:38
static constexpr uint32_t DESCRIPTOR_INDEXING_BINDING_SIZE
Definition: DescriptorManager.h:93
Definition: DescriptorManager.h:111
VkDescriptorSetLayout m_UniformDescriptorSetLayout
Definition: DescriptorManager.h:90
VkDescriptorSet GetSingleTypeDescritorSet(VkDescriptorType type, VkDescriptorSetLayout layout, const std::vector< CTexture::UID > &texturesUID, const std::vector< CTexture *> &textures)
Definition: DescriptorManager.cpp:214
uint32_t GetTextureDescriptor(CTexture *texture)
Definition: DescriptorManager.cpp:282
std::unordered_map< VkDescriptorType, std::vector< SingleTypePool > > m_SingleTypePools
Definition: DescriptorManager.h:107
std::pair< VkDescriptorSetLayout, std::vector< CTexture::UID > > SingleTypeCacheKey
Definition: DescriptorManager.h:110
std::unordered_map< CTexture::UID, std::vector< std::tuple< VkDescriptorType, uint8_t, int16_t > > > m_TextureSingleTypePoolMap
Definition: DescriptorManager.h:108
std::unordered_map< CTexture::UID, int16_t > map
Definition: DescriptorManager.h:101
const std::vector< VkDescriptorSetLayout > & GetDescriptorSetLayouts() const
Definition: DescriptorManager.h:71
const VkDescriptorSet & GetDescriptorIndexingSet()
Definition: DescriptorManager.h:69
static constexpr uint32_t NUMBER_OF_BINDINGS_PER_DESCRIPTOR_INDEXING_SET
Definition: DescriptorManager.h:94
uint32_t UID
Definition: Texture.h:74
bool UseDescriptorIndexing() const
Definition: DescriptorManager.h:48
const VkDescriptorSetLayout & GetUniformDescriptorSetLayout() const
Definition: DescriptorManager.h:68
bool m_UseDescriptorIndexing
Definition: DescriptorManager.h:85
void OnTextureDestroy(const CTexture::UID uid)
Definition: DescriptorManager.cpp:328
uint32_t GetUniformSet() const
Definition: DescriptorManager.cpp:277
SingleTypePool & GetSingleTypePool(const VkDescriptorType type, const uint32_t size)
Definition: DescriptorManager.cpp:152
pthread_key_t key
Definition: wpthread.cpp:140
VkDescriptorSet m_DescriptorIndexingSet
Definition: DescriptorManager.h:88
VkDescriptorPool pool
Definition: DescriptorManager.h:77
Backend
Definition: Backend.h:27
VkDescriptorSetLayout m_DescriptorIndexingSetLayout
Definition: DescriptorManager.h:89
Definition: DescriptorManager.h:96
CDevice * m_Device
Definition: DescriptorManager.h:83
Definition: DescriptorManager.h:74
const VkDescriptorSetLayout & GetDescriptorIndexingSetLayout() const
Definition: DescriptorManager.h:67
int16_t firstFreeIndex
Definition: DescriptorManager.h:78
unsigned int uint32_t
Definition: wposix_types.h:53
Definition: VideoMode.h:28
VkDescriptorSetLayout GetSingleTypeDescritorSetLayout(VkDescriptorType type, const uint32_t size)
Definition: DescriptorManager.cpp:199
std::unordered_map< SingleTypeCacheKey, VkDescriptorSet, SingleTypeCacheKeyHash > m_SingleTypeSets
Definition: DescriptorManager.h:115
std::vector< int16_t > elements
Definition: DescriptorManager.h:100
std::vector< std::pair< VkDescriptorSet, int16_t > > elements
Definition: DescriptorManager.h:79
std::vector< VkDescriptorSetLayout > m_DescriptorSetLayouts
Definition: DescriptorManager.h:91
~CDescriptorManager()
Definition: DescriptorManager.cpp:128
Definition: DescriptorManager.h:42
VkDescriptorSetLayout layout
Definition: DescriptorManager.h:76
CDescriptorManager(CDevice *device, const bool useDescriptorIndexing)
Definition: DescriptorManager.cpp:41