used 2d array at binding_map of MaterialDescriptorManager
This commit is contained in:
parent
a7c761e1c5
commit
9f8e63788d
@ -9,7 +9,7 @@ class MaterialDescriptorManager
|
|||||||
{
|
{
|
||||||
UTF8String mtl_name;
|
UTF8String mtl_name;
|
||||||
|
|
||||||
Map<AnsiString,int> binding_map[VK_DESCRIPTOR_TYPE_RANGE_SIZE];
|
Map<AnsiString,int> binding_map[DESCRIPTOR_SET_TYPE_COUNT][VK_DESCRIPTOR_TYPE_RANGE_SIZE];
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -25,12 +25,12 @@ public:
|
|||||||
|
|
||||||
const UTF8String &GetMaterialName()const{return mtl_name;}
|
const UTF8String &GetMaterialName()const{return mtl_name;}
|
||||||
|
|
||||||
const int GetBinding(const VkDescriptorType &desc_type,const AnsiString &name)const;
|
const int GetBinding(const DescriptorSetType &set_type,const VkDescriptorType &desc_type,const AnsiString &name)const;
|
||||||
|
|
||||||
const int GetUBO (const AnsiString &name,bool dynamic)const{return GetBinding(dynamic?VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,name);}
|
const int GetUBO (const DescriptorSetType &set_type,const AnsiString &name,bool dynamic)const{return GetBinding(set_type,dynamic?VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,name);}
|
||||||
const int GetSSBO (const AnsiString &name,bool dynamic)const{return GetBinding(dynamic?VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,name);}
|
const int GetSSBO (const DescriptorSetType &set_type,const AnsiString &name,bool dynamic)const{return GetBinding(set_type,dynamic?VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,name);}
|
||||||
const int GetImageSampler (const AnsiString &name )const{return GetBinding(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,name);}
|
const int GetImageSampler (const DescriptorSetType &set_type,const AnsiString &name )const{return GetBinding(set_type,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,name);}
|
||||||
const int GetInputAttachment(const AnsiString &name )const{return GetBinding(VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,name);}
|
const int GetInputAttachment(const DescriptorSetType &set_type,const AnsiString &name )const{return GetBinding(set_type,VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,name);}
|
||||||
|
|
||||||
const DescriptorSetLayoutCreateInfo *GetDSLCI(const DescriptorSetType &type)const{return dsl_ci+size_t(type);}
|
const DescriptorSetLayoutCreateInfo *GetDSLCI(const DescriptorSetType &type)const{return dsl_ci+size_t(type);}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ MaterialDescriptorManager::MaterialDescriptorManager(const UTF8String &name,Shad
|
|||||||
|
|
||||||
for(uint i=0;i<sd_count;i++)
|
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;
|
++dsl_ci[size_t(sp->set_type)].bindingCount;
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ MaterialDescriptorManager::MaterialDescriptorManager(const UTF8String &name,cons
|
|||||||
{
|
{
|
||||||
sd=(*sp)->right;
|
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);
|
WriteDescriptorSetLayoutBinding(dsl_bind[i],sd);
|
||||||
|
|
||||||
@ -127,8 +127,10 @@ MaterialDescriptorManager::~MaterialDescriptorManager()
|
|||||||
delete[] all_dslb;
|
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
|
if(desc_type<VK_DESCRIPTOR_TYPE_BEGIN_RANGE
|
||||||
||desc_type>VK_DESCRIPTOR_TYPE_END_RANGE)
|
||desc_type>VK_DESCRIPTOR_TYPE_END_RANGE)
|
||||||
return -1;
|
return -1;
|
||||||
@ -137,6 +139,6 @@ const int MaterialDescriptorManager::GetBinding(const VkDescriptorType &desc_typ
|
|||||||
|
|
||||||
int result;
|
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
|
VK_NAMESPACE_END
|
@ -21,7 +21,7 @@ bool MaterialParameters::BindUBO(const AnsiString &name,DeviceBuffer *ubo,bool d
|
|||||||
if(name.IsEmpty()||!ubo)
|
if(name.IsEmpty()||!ubo)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
const int index=desc_manager->GetUBO(name,dynamic);
|
const int index=desc_manager->GetUBO(set_type,name,dynamic);
|
||||||
|
|
||||||
if(index<0)
|
if(index<0)
|
||||||
return(false);
|
return(false);
|
||||||
@ -37,7 +37,7 @@ bool MaterialParameters::BindSSBO(const AnsiString &name,DeviceBuffer *ssbo,bool
|
|||||||
if(name.IsEmpty()||!ssbo)
|
if(name.IsEmpty()||!ssbo)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
const int index=desc_manager->GetSSBO(name,dynamic);
|
const int index=desc_manager->GetSSBO(set_type,name,dynamic);
|
||||||
|
|
||||||
if(index<0)
|
if(index<0)
|
||||||
return(false);
|
return(false);
|
||||||
@ -53,7 +53,7 @@ bool MaterialParameters::BindImageSampler(const AnsiString &name,Texture *tex,Sa
|
|||||||
if(name.IsEmpty()||!tex||!sampler)
|
if(name.IsEmpty()||!tex||!sampler)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
const int index=desc_manager->GetImageSampler(name);
|
const int index=desc_manager->GetImageSampler(set_type,name);
|
||||||
|
|
||||||
if(index<0)
|
if(index<0)
|
||||||
return(false);
|
return(false);
|
||||||
@ -69,7 +69,7 @@ bool MaterialParameters::BindInputAttachment(const AnsiString &name,ImageView *i
|
|||||||
if(name.IsEmpty()||!iv)
|
if(name.IsEmpty()||!iv)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
const int index=desc_manager->GetInputAttachment(name);
|
const int index=desc_manager->GetInputAttachment(set_type,name);
|
||||||
|
|
||||||
if(index<0)
|
if(index<0)
|
||||||
return(false);
|
return(false);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user