From 2689311113f80517f812230d5151372c00c15d8a Mon Sep 17 00:00:00 2001 From: Roland Hill Date: Thu, 20 Aug 2026 09:07:36 +1000 Subject: [PATCH] A VkDescriptorSetLayoutBinding can have multiple descriptors, so the descriptorCount needs to be taken account of when comparing to the size of vsg::Descriptors. Without this, valid texture arrays get rejected. The current code assumes that VkDescriptorSetLayoutBinding.descriptorCount is always 1. --- src/vsg/state/DescriptorSet.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/vsg/state/DescriptorSet.cpp b/src/vsg/state/DescriptorSet.cpp index 775ff7f611..44c680653a 100644 --- a/src/vsg/state/DescriptorSet.cpp +++ b/src/vsg/state/DescriptorSet.cpp @@ -76,9 +76,14 @@ void DescriptorSet::compile(Context& context) throw Exception{"Error: invalid DescriptorSet as no setLayout assigned.", VK_INCOMPLETE}; } - if (setLayout->bindings.size() != descriptors.size()) + size_t numDescriptors = 0; + for(auto& binding : setLayout->bindings) { - throw Exception{make_string("Error: invalid DescriptorSet as setLayout bindings size (", setLayout->bindings.size(), ") and descriptors size ", descriptors.size(), ") not equal."), VK_INCOMPLETE}; + numDescriptors += binding.descriptorCount; + } + if (numDescriptors != descriptors.size()) + { + throw Exception{make_string("Error: invalid DescriptorSet as setLayout bindings size (", numDescriptors, ") and descriptors size ", descriptors.size(), ") not equal."), VK_INCOMPLETE}; } // make sure all the contributing objects are compiled