支持0个DescriptorSets
This commit is contained in:
parent
c6787acf27
commit
ed8d4a276c
@ -67,15 +67,20 @@ void DescriptorSetLayoutCreater::Bind(const int binding,VkDescriptorType desc_ty
|
||||
|
||||
DescriptorSetLayout *DescriptorSetLayoutCreater::Create()
|
||||
{
|
||||
const int count=layout_binding_list.GetCount();
|
||||
|
||||
if(count<=0)
|
||||
return(nullptr);
|
||||
|
||||
VkDescriptorSetLayoutCreateInfo descriptor_layout = {};
|
||||
descriptor_layout.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
||||
descriptor_layout.pNext = nullptr;
|
||||
descriptor_layout.bindingCount = layout_binding_list.GetCount();
|
||||
descriptor_layout.bindingCount = count;
|
||||
descriptor_layout.pBindings = layout_binding_list.GetData();
|
||||
|
||||
List<VkDescriptorSetLayout> dsl_list;
|
||||
|
||||
dsl_list.SetCount(layout_binding_list.GetCount());
|
||||
dsl_list.SetCount(count);
|
||||
if(vkCreateDescriptorSetLayout(device->GetDevice(),&descriptor_layout, nullptr, dsl_list.GetData())!=VK_SUCCESS)
|
||||
return(false);
|
||||
|
||||
|
@ -10,30 +10,23 @@ PipelineLayout::~PipelineLayout()
|
||||
|
||||
PipelineLayout *CreatePipelineLayout(VkDevice dev,const DescriptorSetLayout *dsl)
|
||||
{
|
||||
if(!dsl)return(nullptr);
|
||||
|
||||
if(dsl->GetCount()<=0)return(nullptr);
|
||||
|
||||
DescriptorSets *desc_sets=dsl->CreateSets();
|
||||
|
||||
if(!desc_sets)
|
||||
return(nullptr);
|
||||
const uint32_t layout_count=(dsl?dsl->GetCount():0);
|
||||
const VkDescriptorSetLayout *layouts=(layout_count>0?dsl->GetData():nullptr);
|
||||
|
||||
VkPipelineLayoutCreateInfo pPipelineLayoutCreateInfo = {};
|
||||
pPipelineLayoutCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
||||
pPipelineLayoutCreateInfo.pNext = nullptr;
|
||||
pPipelineLayoutCreateInfo.pushConstantRangeCount = 0;
|
||||
pPipelineLayoutCreateInfo.pPushConstantRanges = nullptr;
|
||||
pPipelineLayoutCreateInfo.setLayoutCount = dsl->GetCount();
|
||||
pPipelineLayoutCreateInfo.pSetLayouts = dsl->GetData();
|
||||
pPipelineLayoutCreateInfo.setLayoutCount = layout_count;
|
||||
pPipelineLayoutCreateInfo.pSetLayouts = layouts;
|
||||
|
||||
VkPipelineLayout pipeline_layout;
|
||||
|
||||
if(vkCreatePipelineLayout(dev, &pPipelineLayoutCreateInfo, nullptr, &pipeline_layout)!=VK_SUCCESS)
|
||||
{
|
||||
delete desc_sets;
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
DescriptorSets *desc_sets=(layout_count>0?dsl->CreateSets():nullptr);
|
||||
|
||||
return(new PipelineLayout(dev,pipeline_layout,desc_sets));
|
||||
}
|
||||
|
@ -23,8 +23,8 @@ public:
|
||||
|
||||
operator VkPipelineLayout (){return layout;}
|
||||
|
||||
const uint32_t GetDescriptorSetCount ()const{return desc_sets->GetCount();}
|
||||
const VkDescriptorSet * GetDescriptorSets ()const{return desc_sets->GetData();}
|
||||
const uint32_t GetDescriptorSetCount ()const{return desc_sets?desc_sets->GetCount():0;}
|
||||
const VkDescriptorSet * GetDescriptorSets ()const{return desc_sets?desc_sets->GetData():nullptr;}
|
||||
};//class PipelineLayout
|
||||
|
||||
PipelineLayout *CreatePipelineLayout(VkDevice dev,const DescriptorSetLayout *dsl);
|
||||
|
Loading…
x
Reference in New Issue
Block a user