used 2d array at binding_map of MaterialDescriptorManager

This commit is contained in:
2023-03-21 22:28:01 +08:00
parent a7c761e1c5
commit 9f8e63788d
3 changed files with 16 additions and 14 deletions

View File

@@ -29,7 +29,7 @@ MaterialDescriptorManager::MaterialDescriptorManager(const UTF8String &name,Shad
for(uint i=0;i<sd_count;i++)
{
binding_map[size_t(sp->desc_type)].Add(sp->name,sp->binding);
binding_map[size_t(sp->set_type)][size_t(sp->desc_type)].Add(sp->name,sp->binding);
++dsl_ci[size_t(sp->set_type)].bindingCount;
@@ -110,7 +110,7 @@ MaterialDescriptorManager::MaterialDescriptorManager(const UTF8String &name,cons
{
sd=(*sp)->right;
binding_map[size_t(sd->desc_type)].Add(sd->name,sd->binding);
binding_map[size_t(sd->set_type)][size_t(sd->desc_type)].Add(sd->name,sd->binding);
WriteDescriptorSetLayoutBinding(dsl_bind[i],sd);
@@ -127,8 +127,10 @@ MaterialDescriptorManager::~MaterialDescriptorManager()
delete[] all_dslb;
}
const int MaterialDescriptorManager::GetBinding(const VkDescriptorType &desc_type,const AnsiString &name)const
const int MaterialDescriptorManager::GetBinding(const DescriptorSetType &set_type,const VkDescriptorType &desc_type,const AnsiString &name)const
{
RANGE_CHECK_RETURN(set_type,-1)
if(desc_type<VK_DESCRIPTOR_TYPE_BEGIN_RANGE
||desc_type>VK_DESCRIPTOR_TYPE_END_RANGE)
return -1;
@@ -137,6 +139,6 @@ const int MaterialDescriptorManager::GetBinding(const VkDescriptorType &desc_typ
int result;
return(binding_map[size_t(desc_type)].Get(name,result)?result:-1);
return(binding_map[size_t(set_type)][size_t(desc_type)].Get(name,result)?result:-1);
}
VK_NAMESPACE_END

View File

@@ -21,7 +21,7 @@ bool MaterialParameters::BindUBO(const AnsiString &name,DeviceBuffer *ubo,bool d
if(name.IsEmpty()||!ubo)
return(false);
const int index=desc_manager->GetUBO(name,dynamic);
const int index=desc_manager->GetUBO(set_type,name,dynamic);
if(index<0)
return(false);
@@ -37,7 +37,7 @@ bool MaterialParameters::BindSSBO(const AnsiString &name,DeviceBuffer *ssbo,bool
if(name.IsEmpty()||!ssbo)
return(false);
const int index=desc_manager->GetSSBO(name,dynamic);
const int index=desc_manager->GetSSBO(set_type,name,dynamic);
if(index<0)
return(false);
@@ -53,7 +53,7 @@ bool MaterialParameters::BindImageSampler(const AnsiString &name,Texture *tex,Sa
if(name.IsEmpty()||!tex||!sampler)
return(false);
const int index=desc_manager->GetImageSampler(name);
const int index=desc_manager->GetImageSampler(set_type,name);
if(index<0)
return(false);
@@ -69,7 +69,7 @@ bool MaterialParameters::BindInputAttachment(const AnsiString &name,ImageView *i
if(name.IsEmpty()||!iv)
return(false);
const int index=desc_manager->GetInputAttachment(name);
const int index=desc_manager->GetInputAttachment(set_type,name);
if(index<0)
return(false);