Get linear binding data and flags.
@breif Instance a VkDescriptorSetLayoutBindingFlagsCreateInfo.
@breif Instance a VkDescriptorSetLayoutCreateInfo.
Create DescriptorSetLayout.
Get linear binding data and flags.
@breif Instance a VkDescriptorSetLayoutBindingFlagsCreateInfo.
@breif Instance a VkDescriptorSetLayoutCreateInfo.
Create DescriptorSetLayout.
166 {
168
172 std::vector<VkDescriptorSetLayoutBinding> setLayoutBindings{};
173 std::vector<VkDescriptorBindingFlags> setBindingFlags{};
174
175 for (auto& kv : bindings)
176 {
177 setLayoutBindings.push_back(kv.second);
178
179 switch (kv.second.descriptorType)
180 {
181 case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
182 setBindingFlags.push_back(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT | VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT | VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT);
183 break;
184 default:
185 SPICES_CORE_ERROR("BindLess only support COMBINED_IMAGE_SAMPLER type binding")
186 break;
187 }
188 }
189
193 VkDescriptorSetLayoutBindingFlagsCreateInfo bindingFlags{};
194 bindingFlags.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;
195 bindingFlags.pNext = nullptr;
196 bindingFlags.pBindingFlags = setBindingFlags.data();
197 bindingFlags.bindingCount = static_cast<uint32_t>(setBindingFlags.size());
198
202 VkDescriptorSetLayoutCreateInfo descriptorSetLayoutCreateInfo{};
203 descriptorSetLayoutCreateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
204 descriptorSetLayoutCreateInfo.bindingCount = static_cast<uint32_t>(setLayoutBindings.size());
205 descriptorSetLayoutCreateInfo.pBindings = setLayoutBindings.data();
206 descriptorSetLayoutCreateInfo.flags = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT;
207 descriptorSetLayoutCreateInfo.pNext = &bindingFlags;
208
213 DEBUGUTILS_SETOBJECTNAME(VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
reinterpret_cast<uint64_t
>(
m_Layout),
m_VulkanState.
m_Device,
"DescriptorSetLayout" + caption)
214 }
#define SPICES_PROFILE_ZONE
#define VK_CHECK(expr)
Vulkan Check macro. Verify Vulkan API Effectiveness.
VkDescriptorSetLayout m_Layout
The VkDescriptorSetLayout this class handled.
VulkanState & m_VulkanState
The global VulkanState Referenced from VulkanRenderBackend.