Skip to content
Snippets Groups Projects
Commit 8c34b3e9 authored by Artur Wasmut's avatar Artur Wasmut
Browse files

[#105] fix variable descriptor count.

parent 873c6cb9
No related branches found
No related tags found
1 merge request!88Resolve "Indirect Draw"
Pipeline #27086 failed
...@@ -157,7 +157,7 @@ int main(int argc, const char** argv) { ...@@ -157,7 +157,7 @@ int main(int argc, const char** argv) {
const std::unordered_map<uint32_t, vkcv::DescriptorBinding> &descriptorBindings = firstMeshProgram.getReflectedDescriptors().at(0); const std::unordered_map<uint32_t, vkcv::DescriptorBinding> &descriptorBindings = firstMeshProgram.getReflectedDescriptors().at(0);
std::unordered_map<uint32_t, vkcv::DescriptorBinding> adjustedBindings = descriptorBindings; std::unordered_map<uint32_t, vkcv::DescriptorBinding> adjustedBindings = descriptorBindings;
adjustedBindings[1].descriptorCount = 5; adjustedBindings[1].descriptorCount = 6;
vkcv::DescriptorSetLayoutHandle descriptorSetLayout = core.createDescriptorSetLayout(adjustedBindings); vkcv::DescriptorSetLayoutHandle descriptorSetLayout = core.createDescriptorSetLayout(adjustedBindings);
vkcv::DescriptorSetHandle descriptorSet = core.createDescriptorSet(descriptorSetLayout); vkcv::DescriptorSetHandle descriptorSet = core.createDescriptorSet(descriptorSetLayout);
......
...@@ -113,6 +113,21 @@ namespace vkcv ...@@ -113,6 +113,21 @@ namespace vkcv
DescriptorSetLayout setLayout = m_DescriptorSetLayouts[setLayoutHandle.getId()]; DescriptorSetLayout setLayout = m_DescriptorSetLayouts[setLayoutHandle.getId()];
vk::DescriptorSet vulkanHandle = VK_NULL_HANDLE; vk::DescriptorSet vulkanHandle = VK_NULL_HANDLE;
vk::DescriptorSetAllocateInfo allocInfo(m_Pools.back(), 1, &setLayout.vulkanHandle); vk::DescriptorSetAllocateInfo allocInfo(m_Pools.back(), 1, &setLayout.vulkanHandle);
uint32_t sumVariableDescriptorCounts = 0;
for (auto bindingElem : setLayout.descriptorBindings)
{
DescriptorBinding binding = bindingElem.second;
uint32_t bindingID = bindingElem.first;
if(binding.variableCount)
sumVariableDescriptorCounts += binding.descriptorCount;
}
vk::DescriptorSetVariableDescriptorCountAllocateInfo variableAllocInfo(1, &sumVariableDescriptorCounts);
allocInfo.setPNext(&variableAllocInfo);
auto result = m_Device.allocateDescriptorSets(&allocInfo, &vulkanHandle); auto result = m_Device.allocateDescriptorSets(&allocInfo, &vulkanHandle);
if(result != vk::Result::eSuccess) if(result != vk::Result::eSuccess)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment