layers: Don't spuriously produce an error if there are no view type bits set
authorChris Forbes <chrisforbes@google.com>
Wed, 31 Aug 2016 19:00:35 +0000 (12:00 -0700)
committerChris Forbes <chrisforbes@google.com>
Thu, 1 Sep 2016 15:32:53 +0000 (08:32 -0700)
Previously we'd complain about any input attachment, since we don't constrain
its view type at all.

Signed-off-by: Chris Forbes <chrisforbes@google.com>
layers/core_validation_types.h
layers/descriptor_sets.cpp

index 8c89262..f36e3b2 100644 (file)
@@ -100,6 +100,8 @@ enum descriptor_req {
     DESCRIPTOR_REQ_VIEW_TYPE_CUBE = 1 << VK_IMAGE_VIEW_TYPE_CUBE,
     DESCRIPTOR_REQ_VIEW_TYPE_CUBE_ARRAY = 1 << VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,
 
+    DESCRIPTOR_REQ_ALL_VIEW_TYPE_BITS = (1 << (VK_IMAGE_VIEW_TYPE_END_RANGE + 1)) - 1,
+
     DESCRIPTOR_REQ_SINGLE_SAMPLE = 2 << VK_IMAGE_VIEW_TYPE_END_RANGE,
     DESCRIPTOR_REQ_MULTI_SAMPLE = DESCRIPTOR_REQ_SINGLE_SAMPLE << 1,
 };
index c7b39f7..00c0d19 100644 (file)
@@ -429,7 +429,7 @@ bool cvdescriptorset::DescriptorSet::ValidateDrawState(const std::map<uint32_t,
                         auto image_view_data = getImageViewData(device_data_, image_view);
                         assert(image_view_data);
 
-                        if (~reqs & (1 << image_view_data->viewType)) {
+                        if ((reqs & DESCRIPTOR_REQ_ALL_VIEW_TYPE_BITS) && (~reqs & (1 << image_view_data->viewType))) {
                             // bad view type
                             std::stringstream error_str;
                             error_str << "Descriptor in binding #" << binding << " at global descriptor index " << i