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.
112 {
114
118 std::vector<VkDescriptorSetLayoutBinding> setLayoutBindings{};
119 std::vector<VkDescriptorBindingFlags> setBindingFlags{};
120
121 for (auto& kv : bindings)
122 {
123 setLayoutBindings.push_back(kv.second);
124
125 switch (kv.second.descriptorType)
126 {
127 case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
128 setBindingFlags.push_back(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT);
129 break;
130 default:
131 setBindingFlags.push_back(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT | VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT);
132 break;
133 }
134 }
135
139 VkDescriptorSetLayoutBindingFlagsCreateInfo bindingFlags{};
140 bindingFlags.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;
141 bindingFlags.pNext = nullptr;
142 bindingFlags.pBindingFlags = setBindingFlags.data();
143 bindingFlags.bindingCount = static_cast<uint32_t>(setBindingFlags.size());
144
148 VkDescriptorSetLayoutCreateInfo descriptorSetLayoutCreateInfo{};
149 descriptorSetLayoutCreateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
150 descriptorSetLayoutCreateInfo.bindingCount = static_cast<uint32_t>(setLayoutBindings.size());
151 descriptorSetLayoutCreateInfo.pBindings = setLayoutBindings.data();
152 descriptorSetLayoutCreateInfo.flags = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT;
153 descriptorSetLayoutCreateInfo.pNext = &bindingFlags;
154
159 DEBUGUTILS_SETOBJECTNAME(VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
reinterpret_cast<uint64_t
>(
m_Layout),
m_VulkanState.
m_Device,
"DescriptorSetLayout" + caption)
160 }
#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.