diff --git a/src/vsg/state/DescriptorSet.cpp b/src/vsg/state/DescriptorSet.cpp index 711db34cd..775ff7f61 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);