2
3
4
5
9#include "Render/Vulkan/VulkanRenderBackend.h"
10#include "../../../assets/Shaders/src/Header/ShaderCommon.h"
21 std::unique_lock<std::mutex> lock(m_Mutex);
23 if (m_DescriptorSets.find(name) != m_DescriptorSets.end())
25 if (m_DescriptorSets[name].find(set) != m_DescriptorSets[name].end())
27 return m_DescriptorSets[name][set];
31 m_DescriptorSets[name][set] = std::make_shared<VulkanDescriptorSet>(VulkanRenderBackend::GetState(), VulkanRenderBackend::GetDescriptorPool());
33 return m_DescriptorSets[name][set];
40 return Registry({ name , name }, set);
47 std::unique_lock<std::mutex> lock(m_Mutex);
49 if (m_DescriptorSets.find(name) != m_DescriptorSets.end())
51 if (m_DescriptorSets[name].find(SpicesShader::BINDLESS_TEXTURE_SET) == m_DescriptorSets[name].end())
53 m_DescriptorSets.erase(name);
57 const auto descriptorSet = m_DescriptorSets[name][SpicesShader::BINDLESS_TEXTURE_SET];
58 m_DescriptorSets.erase(name);
59 m_DescriptorSets[name][SpicesShader::BINDLESS_TEXTURE_SET] = descriptorSet;
75 std::unique_lock<std::mutex> lock(m_Mutex);
77 if (m_DescriptorSets.find(name) != m_DescriptorSets.end())
79 m_DescriptorSets.erase(name);
94 std::unique_lock<std::mutex> lock(m_Mutex);
96 m_DescriptorSets.clear();
103 std::unique_lock<std::mutex> lock(m_Mutex);
105 return m_DescriptorSets[name];
113 return GetByName(str);
#define SPICES_PROFILE_ZONE
static void UnLoadAll()
Forcing UnLoad all VulkanDescriptorSet.
static void UnLoadForce(const String2 &name)
Forcing UnLoad a VulkanDescriptorSet.
static std::shared_ptr< VulkanDescriptorSet > Registry(const String2 &name, uint32_t set)
Registry a VulkanDescriptorSet, create one if find none.
static void UnLoad(const String2 &name)
UnLoad a VulkanDescriptorSet.
static void UnLoad(const std::string &name)
UnLoad a VulkanDescriptorSet.
static std::shared_ptr< VulkanDescriptorSet > Registry(const std::string &name, uint32_t set)
Registry a VulkanDescriptorSet, create one if find none.
static std::mutex m_Mutex
Mutex of this DescriptorSetManager.
static DescriptorManagerContainer m_DescriptorSets
The container of all descriptor sets, identified with owner's name and set number.
static void UnLoadForce(const std::string &name)
Forcing UnLoad a VulkanDescriptorSet.
This Class manages all descriptor sets this project.
This Class is a wrapper of VkDescriptorSet.
String2(const std::string &str0, const std::string &str1)
Constructor Function.