layers: GH644 Validate DS image aspect bit restriction

If a DS image is used in a descriptor, regardless of the underlying
image layout, we need to validate that BOTH DEPTH and STENCIL aspect
bits are NOT set. Only one of the two bits is allowed.
diff --git a/layers/descriptor_sets.cpp b/layers/descriptor_sets.cpp
index f8bd9cc..9f3b239 100644
--- a/layers/descriptor_sets.cpp
+++ b/layers/descriptor_sets.cpp
@@ -665,7 +665,23 @@
         }
         break;
     default:
-        // anything to check for other layouts?
+        // For other layouts if the source is ds image, both aspect bits must not be set
+        if (ds) {
+            if (aspect_mask & VK_IMAGE_ASPECT_DEPTH_BIT) {
+                if (aspect_mask & VK_IMAGE_ASPECT_STENCIL_BIT) {
+                    // both  must NOT be set
+                    std::stringstream error_str;
+                    error_str << "ImageView (" << image_view << ") has layout " << string_VkImageLayout(image_layout)
+                              << " and is using depth/stencil image of format " << string_VkFormat(format)
+                              << " but it has both STENCIL and DEPTH aspects set, which is illegal. When using a depth/stencil "
+                                 "image in a descriptor set, please only set either VK_IMAGE_ASPECT_DEPTH_BIT or "
+                                 "VK_IMAGE_ASPECT_STENCIL_BIT depending on whether it will be used for depth reads or stencil "
+                                 "reads respectively.";
+                    *error = error_str.str();
+                    return false;
+                }
+            }
+        }
         break;
     }
     // Now validate that usage flags are correctly set for given type of update