corechecks: Add VU checks for CUBE_COMPAT images
Change-Id: I7e413cde3c2aae861c2f3dfb7ad9336841d32dcb
diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp
index df6f3df..ba82c0a 100644
--- a/layers/buffer_validation.cpp
+++ b/layers/buffer_validation.cpp
@@ -1326,11 +1326,21 @@
}
}
- if ((pCreateInfo->flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) && (VK_IMAGE_TYPE_2D != pCreateInfo->imageType)) {
- skip |= log_msg(
- report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
- "VUID-VkImageCreateInfo-flags-00949",
- "vkCreateImage(): Image type must be VK_IMAGE_TYPE_2D when VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT flag bit is set");
+ if (pCreateInfo->flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) {
+ if (VK_IMAGE_TYPE_2D != pCreateInfo->imageType) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ "VUID-VkImageCreateInfo-flags-00949",
+ "vkCreateImage(): Image type must be VK_IMAGE_TYPE_2D when VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT "
+ "flag bit is set");
+ }
+
+ if ((pCreateInfo->extent.width != pCreateInfo->extent.height) || (pCreateInfo->arrayLayers < 6)) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ "VUID-VkImageCreateInfo-imageType-00954",
+ "vkCreateImage(): If VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT flag bit is set, width (%d) must equal "
+ "height (%d) and arrayLayers (%d) must be >= 6.",
+ pCreateInfo->extent.width, pCreateInfo->extent.height, pCreateInfo->arrayLayers);
+ }
}
const VkPhysicalDeviceLimits *device_limits = &phys_dev_props.limits;