From 6a76d54579eef725c8499a0abb4061aa561390da Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 30 Dec 2025 14:59:28 +0000 Subject: [PATCH 1/3] Added throwing of exceptions when invalid setup of DescriptorSet/DescriptorSetLayout. --- src/vsg/state/DescriptorSet.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/vsg/state/DescriptorSet.cpp b/src/vsg/state/DescriptorSet.cpp index 711db34cda..84ecaf0ff7 100644 --- a/src/vsg/state/DescriptorSet.cpp +++ b/src/vsg/state/DescriptorSet.cpp @@ -71,8 +71,19 @@ void DescriptorSet::compile(Context& context) { if (!_implementation[context.deviceID]) { + if (!setLayout) + { + throw Exception{"Error: invalid DescriptorSet as no setLayout assigned. ", VK_INCOMPLETE}; + } + + if (setLayout->bindings.size() != descriptors.size()) + { + throw Exception{make_string("Error: invalid DescriptorSet as setLayout bindings size (", setLayout->bindings.size() , ") and descriptors size ", descriptors.size(), ") not equal."), VK_INCOMPLETE}; + } + // make sure all the contributing objects are compiled - if (setLayout) setLayout->compile(context); + setLayout->compile(context); + for (auto& descriptor : descriptors) descriptor->compile(context); _implementation[context.deviceID] = context.allocateDescriptorSet(setLayout); From a5e1fcfbca14205aa8ec20491899b5e387900587 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 30 Dec 2025 15:09:05 +0000 Subject: [PATCH 2/3] Removed stray space --- src/vsg/state/DescriptorSet.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vsg/state/DescriptorSet.cpp b/src/vsg/state/DescriptorSet.cpp index 84ecaf0ff7..39fcb77d15 100644 --- a/src/vsg/state/DescriptorSet.cpp +++ b/src/vsg/state/DescriptorSet.cpp @@ -73,7 +73,7 @@ void DescriptorSet::compile(Context& context) { if (!setLayout) { - throw Exception{"Error: invalid DescriptorSet as no setLayout assigned. ", VK_INCOMPLETE}; + throw Exception{"Error: invalid DescriptorSet as no setLayout assigned.", VK_INCOMPLETE}; } if (setLayout->bindings.size() != descriptors.size()) From b85149c6386bfd28e14c4262455bcf085cd71834 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 30 Dec 2025 15:09:29 +0000 Subject: [PATCH 3/3] Ran clang-format --- src/vsg/state/DescriptorSet.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vsg/state/DescriptorSet.cpp b/src/vsg/state/DescriptorSet.cpp index 39fcb77d15..775ff7f611 100644 --- a/src/vsg/state/DescriptorSet.cpp +++ b/src/vsg/state/DescriptorSet.cpp @@ -78,7 +78,7 @@ void DescriptorSet::compile(Context& context) if (setLayout->bindings.size() != descriptors.size()) { - throw Exception{make_string("Error: invalid DescriptorSet as setLayout bindings size (", setLayout->bindings.size() , ") and descriptors size ", descriptors.size(), ") not equal."), VK_INCOMPLETE}; + throw Exception{make_string("Error: invalid DescriptorSet as setLayout bindings size (", setLayout->bindings.size(), ") and descriptors size ", descriptors.size(), ") not equal."), VK_INCOMPLETE}; } // make sure all the contributing objects are compiled