layers: PR1950, Update subresource range VUIDs
With updated test names in database.
Change-Id: Ie6cb2dfa9fa84de2dd0dea645249fe03c6780eba
diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp
index a66c9dc..003153f 100644
--- a/layers/buffer_validation.cpp
+++ b/layers/buffer_validation.cpp
@@ -1010,8 +1010,7 @@
skip |= insideRenderPass(dev_data, cb_node, "vkCmdClearColorImage()", VALIDATION_ERROR_18800017);
for (uint32_t i = 0; i < rangeCount; ++i) {
std::string param_name = "pRanges[" + std::to_string(i) + "]";
- skip |=
- ValidateImageSubresourceRange(dev_data, image_state, false, pRanges[i], "vkCmdClearColorImage", param_name.c_str());
+ skip |= ValidateCmdClearColorSubresourceRange(dev_data, image_state, pRanges[i], param_name.c_str());
skip |= ValidateImageAttributes(dev_data, image_state, pRanges[i]);
skip |= VerifyClearImageLayout(dev_data, cb_node, image_state, pRanges[i], imageLayout, "vkCmdClearColorImage()");
}
@@ -1054,8 +1053,7 @@
skip |= insideRenderPass(device_data, cb_node, "vkCmdClearDepthStencilImage()", VALIDATION_ERROR_18a00017);
for (uint32_t i = 0; i < rangeCount; ++i) {
std::string param_name = "pRanges[" + std::to_string(i) + "]";
- skip |= ValidateImageSubresourceRange(device_data, image_state, false, pRanges[i], "vkCmdClearDepthStencilImage",
- param_name.c_str());
+ skip |= ValidateCmdClearDepthSubresourceRange(device_data, image_state, pRanges[i], param_name.c_str());
skip |=
VerifyClearImageLayout(device_data, cb_node, image_state, pRanges[i], imageLayout, "vkCmdClearDepthStencilImage()");
// Image aspect must be depth or stencil or both
@@ -3116,84 +3114,144 @@
return skip;
}
-bool ValidateImageSubresourceRange(const layer_data *device_data, const IMAGE_STATE *image_state, const bool is_imageview_2d_array,
- const VkImageSubresourceRange &subresourceRange, const char *cmd_name, const char *param_name) {
+struct SubresourceRangeErrorCodes {
+ UNIQUE_VALIDATION_ERROR_CODE base_mip_err, mip_count_err, base_layer_err, layer_count_err;
+};
+
+bool ValidateImageSubresourceRange(const layer_data *device_data, const uint32_t image_mip_count, const uint32_t image_layer_count,
+ const VkImageSubresourceRange &subresourceRange, const char *cmd_name, const char *param_name,
+ const char *image_layer_count_var_name, const uint64_t image_handle,
+ SubresourceRangeErrorCodes errorCodes) {
const debug_report_data *report_data = core_validation::GetReportData(device_data);
bool skip = false;
// Validate mip levels
- const auto image_mip_count = image_state->createInfo.mipLevels;
+ if (subresourceRange.baseMipLevel >= image_mip_count) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, image_handle, __LINE__,
+ errorCodes.base_mip_err, "IMAGE",
+ "%s: %s.baseMipLevel (= %" PRIu32
+ ") is greater or equal to the mip level count of the image (i.e. greater or equal to %" PRIu32 "). %s",
+ cmd_name, param_name, subresourceRange.baseMipLevel, image_mip_count,
+ validation_error_map[errorCodes.base_mip_err]);
+ }
- if (subresourceRange.levelCount == 0) {
- skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
- HandleToUint64(image_state->image), __LINE__, VALIDATION_ERROR_0a8007fc, "IMAGE",
- "%s: %s.levelCount is 0. %s", cmd_name, param_name, validation_error_map[VALIDATION_ERROR_0a8007fc]);
- } else if (subresourceRange.levelCount == VK_REMAINING_MIP_LEVELS) {
- // TODO: Not in the spec VUs. Probably missing -- KhronosGroup/Vulkan-Docs#416
- if (subresourceRange.baseMipLevel >= image_mip_count) {
- skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
- HandleToUint64(image_state->image), __LINE__, DRAWSTATE_INVALID_IMAGE_SUBRANGE, "IMAGE",
- "%s: %s.baseMipLevel (= %" PRIu32
- ") is greater or equal to the mip level count of the image (i.e. "
- "greater or equal to %" PRIu32 ").",
- cmd_name, param_name, subresourceRange.baseMipLevel, image_mip_count);
- }
- } else {
- const uint64_t necessary_mip_count = uint64_t{subresourceRange.baseMipLevel} + uint64_t{subresourceRange.levelCount};
+ if (subresourceRange.levelCount != VK_REMAINING_MIP_LEVELS) {
+ if (subresourceRange.levelCount == 0) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, image_handle,
+ __LINE__, errorCodes.mip_count_err, "IMAGE", "%s: %s.levelCount is 0. %s", cmd_name, param_name,
+ validation_error_map[errorCodes.mip_count_err]);
+ } else {
+ const uint64_t necessary_mip_count = uint64_t{subresourceRange.baseMipLevel} + uint64_t{subresourceRange.levelCount};
- if (necessary_mip_count > image_mip_count) {
- skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
- HandleToUint64(image_state->image), __LINE__, VALIDATION_ERROR_0a8007fc, "IMAGE",
- "%s: %s.baseMipLevel + .levelCount (= %" PRIu32 " + %" PRIu32 " = %" PRIu64
- ") is greater than the "
- "mip level count of the image (i.e. greater than %" PRIu32 "). %s",
- cmd_name, param_name, subresourceRange.baseMipLevel, subresourceRange.levelCount, necessary_mip_count,
- image_mip_count, validation_error_map[VALIDATION_ERROR_0a8007fc]);
+ if (necessary_mip_count > image_mip_count) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, image_handle,
+ __LINE__, errorCodes.mip_count_err, "IMAGE",
+ "%s: %s.baseMipLevel + .levelCount (= %" PRIu32 " + %" PRIu32 " = %" PRIu64
+ ") is greater than the mip level count of the image (i.e. greater than %" PRIu32 "). %s",
+ cmd_name, param_name, subresourceRange.baseMipLevel, subresourceRange.levelCount,
+ necessary_mip_count, image_mip_count, validation_error_map[errorCodes.mip_count_err]);
+ }
}
}
// Validate array layers
- bool is_khr_maintenance1 = GetDeviceExtensions(device_data)->vk_khr_maintenance1;
- bool is_3D_to_2D_map = is_khr_maintenance1 && image_state->createInfo.imageType == VK_IMAGE_TYPE_3D && is_imageview_2d_array;
+ if (subresourceRange.baseArrayLayer >= image_layer_count) {
+ skip |=
+ log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, image_handle, __LINE__,
+ errorCodes.base_layer_err, "IMAGE",
+ "%s: %s.baseArrayLayer (= %" PRIu32
+ ") is greater or equal to the %s of the image when it was created (i.e. greater or equal to %" PRIu32 "). %s",
+ cmd_name, param_name, subresourceRange.baseArrayLayer, image_layer_count_var_name, image_layer_count,
+ validation_error_map[errorCodes.base_layer_err]);
+ }
- const auto image_layer_count = is_3D_to_2D_map ? image_state->createInfo.extent.depth : image_state->createInfo.arrayLayers;
- const auto image_layer_count_var_name = is_3D_to_2D_map ? "extent.depth" : "arrayLayers";
+ if (subresourceRange.layerCount != VK_REMAINING_ARRAY_LAYERS) {
+ if (subresourceRange.layerCount == 0) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, image_handle,
+ __LINE__, errorCodes.layer_count_err, "IMAGE", "%s: %s.layerCount is 0. %s", cmd_name, param_name,
+ validation_error_map[errorCodes.layer_count_err]);
+ } else {
+ const uint64_t necessary_layer_count =
+ uint64_t{subresourceRange.baseArrayLayer} + uint64_t{subresourceRange.layerCount};
- const auto invalid_layer_code =
- is_khr_maintenance1 ? (is_3D_to_2D_map ? VALIDATION_ERROR_0a800800 : VALIDATION_ERROR_0a800802) : VALIDATION_ERROR_0a8007fe;
-
- if (subresourceRange.layerCount == 0) {
- skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
- HandleToUint64(image_state->image), __LINE__, invalid_layer_code, "IMAGE", "%s: %s.layerCount is 0. %s",
- cmd_name, param_name, validation_error_map[invalid_layer_code]);
- } else if (subresourceRange.layerCount == VK_REMAINING_ARRAY_LAYERS) {
- // TODO: Not in the spec VUs. Probably missing -- KhronosGroup/Vulkan-Docs#416
- if (subresourceRange.baseArrayLayer >= image_layer_count) {
- skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
- HandleToUint64(image_state->image), __LINE__, DRAWSTATE_INVALID_IMAGE_SUBRANGE, "IMAGE",
- "%s: %s.baseArrayLayer (= %" PRIu32
- ") is greater or equal to the %s of the image when it was created "
- "(i.e. greater or equal to %" PRIu32 ").",
- cmd_name, param_name, subresourceRange.baseArrayLayer, image_layer_count_var_name, image_layer_count);
- }
- } else {
- const uint64_t necessary_layer_count = uint64_t{subresourceRange.baseArrayLayer} + uint64_t{subresourceRange.layerCount};
-
- if (necessary_layer_count > image_layer_count) {
- skip |=
- log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
- HandleToUint64(image_state->image), __LINE__, invalid_layer_code, "IMAGE",
- "%s: %s.baseArrayLayer + .layerCount (= %" PRIu32 " + %" PRIu32 " = %" PRIu64
- ") is greater than the "
- "%s of the image when it was created (i.e. greater than %" PRIu32 "). %s",
- cmd_name, param_name, subresourceRange.baseArrayLayer, subresourceRange.layerCount, necessary_layer_count,
- image_layer_count_var_name, image_layer_count, validation_error_map[invalid_layer_code]);
+ if (necessary_layer_count > image_layer_count) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, image_handle,
+ __LINE__, errorCodes.layer_count_err, "IMAGE",
+ "%s: %s.baseArrayLayer + .layerCount (= %" PRIu32 " + %" PRIu32 " = %" PRIu64
+ ") is greater than the %s of the image when it was created (i.e. greater than %" PRIu32 "). %s",
+ cmd_name, param_name, subresourceRange.baseArrayLayer, subresourceRange.layerCount,
+ necessary_layer_count, image_layer_count_var_name, image_layer_count,
+ validation_error_map[errorCodes.layer_count_err]);
+ }
}
}
return skip;
}
+bool ValidateCreateImageViewSubresourceRange(const layer_data *device_data, const IMAGE_STATE *image_state,
+ bool is_imageview_2d_type, const VkImageSubresourceRange &subresourceRange) {
+ bool is_khr_maintenance1 = GetDeviceExtensions(device_data)->vk_khr_maintenance1;
+ bool is_image_slicable = image_state->createInfo.imageType == VK_IMAGE_TYPE_3D &&
+ (image_state->createInfo.flags & VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR);
+ bool is_3D_to_2D_map = is_khr_maintenance1 && is_image_slicable && is_imageview_2d_type;
+
+ const auto image_layer_count = is_3D_to_2D_map ? image_state->createInfo.extent.depth : image_state->createInfo.arrayLayers;
+ const auto image_layer_count_var_name = is_3D_to_2D_map ? "extent.depth" : "arrayLayers";
+
+ SubresourceRangeErrorCodes subresourceRangeErrorCodes = {};
+ subresourceRangeErrorCodes.base_mip_err = VALIDATION_ERROR_0ac00b8c;
+ subresourceRangeErrorCodes.mip_count_err = VALIDATION_ERROR_0ac00b8e;
+ subresourceRangeErrorCodes.base_layer_err =
+ is_khr_maintenance1 ? (is_3D_to_2D_map ? VALIDATION_ERROR_0ac00b98 : VALIDATION_ERROR_0ac00b94) : VALIDATION_ERROR_0ac00b90;
+ subresourceRangeErrorCodes.layer_count_err =
+ is_khr_maintenance1 ? (is_3D_to_2D_map ? VALIDATION_ERROR_0ac00b9a : VALIDATION_ERROR_0ac00b96) : VALIDATION_ERROR_0ac00b92;
+
+ return ValidateImageSubresourceRange(device_data, image_state->createInfo.mipLevels, image_layer_count, subresourceRange,
+ "vkCreateImageView", "pCreateInfo->subresourceRange", image_layer_count_var_name,
+ HandleToUint64(image_state->image), subresourceRangeErrorCodes);
+}
+
+bool ValidateCmdClearColorSubresourceRange(const layer_data *device_data, const IMAGE_STATE *image_state,
+ const VkImageSubresourceRange &subresourceRange, const char *param_name) {
+ SubresourceRangeErrorCodes subresourceRangeErrorCodes = {};
+ subresourceRangeErrorCodes.base_mip_err = VALIDATION_ERROR_18800b7c;
+ subresourceRangeErrorCodes.mip_count_err = VALIDATION_ERROR_18800b7e;
+ subresourceRangeErrorCodes.base_layer_err = VALIDATION_ERROR_18800b80;
+ subresourceRangeErrorCodes.layer_count_err = VALIDATION_ERROR_18800b82;
+
+ return ValidateImageSubresourceRange(device_data, image_state->createInfo.mipLevels, image_state->createInfo.arrayLayers,
+ subresourceRange, "vkCmdClearColorImage", param_name, "arrayLayers",
+ HandleToUint64(image_state->image), subresourceRangeErrorCodes);
+}
+
+bool ValidateCmdClearDepthSubresourceRange(const layer_data *device_data, const IMAGE_STATE *image_state,
+ const VkImageSubresourceRange &subresourceRange, const char *param_name) {
+ SubresourceRangeErrorCodes subresourceRangeErrorCodes = {};
+ subresourceRangeErrorCodes.base_mip_err = VALIDATION_ERROR_18a00b84;
+ subresourceRangeErrorCodes.mip_count_err = VALIDATION_ERROR_18a00b86;
+ subresourceRangeErrorCodes.base_layer_err = VALIDATION_ERROR_18a00b88;
+ subresourceRangeErrorCodes.layer_count_err = VALIDATION_ERROR_18a00b8a;
+
+ return ValidateImageSubresourceRange(device_data, image_state->createInfo.mipLevels, image_state->createInfo.arrayLayers,
+ subresourceRange, "vkCmdClearDepthStencilImage", param_name, "arrayLayers",
+ HandleToUint64(image_state->image), subresourceRangeErrorCodes);
+}
+
+bool ValidateImageBarrierSubresourceRange(const layer_data *device_data, const IMAGE_STATE *image_state,
+ const VkImageSubresourceRange &subresourceRange, const char *cmd_name,
+ const char *param_name) {
+ SubresourceRangeErrorCodes subresourceRangeErrorCodes = {};
+ subresourceRangeErrorCodes.base_mip_err = VALIDATION_ERROR_0a000b9c;
+ subresourceRangeErrorCodes.mip_count_err = VALIDATION_ERROR_0a000b9e;
+ subresourceRangeErrorCodes.base_layer_err = VALIDATION_ERROR_0a000ba0;
+ subresourceRangeErrorCodes.layer_count_err = VALIDATION_ERROR_0a000ba2;
+
+ return ValidateImageSubresourceRange(device_data, image_state->createInfo.mipLevels, image_state->createInfo.arrayLayers,
+ subresourceRange, cmd_name, param_name, "arrayLayers", HandleToUint64(image_state->image),
+ subresourceRangeErrorCodes);
+}
+
bool PreCallValidateCreateImageView(layer_data *device_data, const VkImageViewCreateInfo *create_info) {
const debug_report_data *report_data = core_validation::GetReportData(device_data);
bool skip = false;
@@ -3208,8 +3266,10 @@
// If this isn't a sparse image, it needs to have memory backing it at CreateImageView time
skip |= ValidateMemoryIsBoundToImage(device_data, image_state, "vkCreateImageView()", VALIDATION_ERROR_0ac007f8);
// Checks imported from image layer
- skip |= ValidateImageSubresourceRange(device_data, image_state, create_info->viewType == VK_IMAGE_VIEW_TYPE_2D_ARRAY,
- create_info->subresourceRange, "vkCreateImageView", "pCreateInfo->subresourceRange");
+ skip |= ValidateCreateImageViewSubresourceRange(
+ device_data, image_state,
+ create_info->viewType == VK_IMAGE_VIEW_TYPE_2D || create_info->viewType == VK_IMAGE_VIEW_TYPE_2D_ARRAY,
+ create_info->subresourceRange);
VkImageCreateFlags image_flags = image_state->createInfo.flags;
VkFormat image_format = image_state->createInfo.format;
diff --git a/layers/buffer_validation.h b/layers/buffer_validation.h
index c10b337..dbc0127 100644
--- a/layers/buffer_validation.h
+++ b/layers/buffer_validation.h
@@ -186,8 +186,18 @@
bool ValidateImageAspectMask(layer_data *device_data, VkImage image, VkFormat format, VkImageAspectFlags aspect_mask,
const char *func_name);
-bool ValidateImageSubresourceRange(const layer_data *device_data, const IMAGE_STATE *image_state, const bool is_imageview_2d_array,
- const VkImageSubresourceRange &subresourceRange, const char *cmd_name, const char *param_name);
+bool ValidateCreateImageViewSubresourceRange(const layer_data *device_data, const IMAGE_STATE *image_state,
+ bool is_imageview_2d_type, const VkImageSubresourceRange &subresourceRange);
+
+bool ValidateCmdClearColorSubresourceRange(const layer_data *device_data, const IMAGE_STATE *image_state,
+ const VkImageSubresourceRange &subresourceRange, const char *param_name);
+
+bool ValidateCmdClearDepthSubresourceRange(const layer_data *device_data, const IMAGE_STATE *image_state,
+ const VkImageSubresourceRange &subresourceRange, const char *param_name);
+
+bool ValidateImageBarrierSubresourceRange(const layer_data *device_data, const IMAGE_STATE *image_state,
+ const VkImageSubresourceRange &subresourceRange, const char *cmd_name,
+ const char *param_name);
bool PreCallValidateCreateImageView(layer_data *device_data, const VkImageViewCreateInfo *create_info);
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 2e33a9e..b512726 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -6546,8 +6546,8 @@
skip |= ValidateImageAspectMask(device_data, image_data->image, image_data->createInfo.format, aspect_mask, funcName);
std::string param_name = "pImageMemoryBarriers[" + std::to_string(i) + "].subresourceRange";
- skip |= ValidateImageSubresourceRange(device_data, image_data, false, mem_barrier->subresourceRange, funcName,
- param_name.c_str());
+ skip |= ValidateImageBarrierSubresourceRange(device_data, image_data, mem_barrier->subresourceRange, funcName,
+ param_name.c_str());
}
}
diff --git a/layers/vk_validation_error_database.txt b/layers/vk_validation_error_database.txt
index db1c771..6bf4f75 100644
--- a/layers/vk_validation_error_database.txt
+++ b/layers/vk_validation_error_database.txt
@@ -692,10 +692,10 @@
VALIDATION_ERROR_0a00097a~^~Y~^~InvalidBarriers~^~vkCmdPipelineBarrier~^~VUID-VkImageMemoryBarrier-oldLayout-01213~^~core~^~The spec valid usage text states 'If either oldLayout or newLayout is VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL then image must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT set' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-oldLayout-01213)~^~
VALIDATION_ERROR_0a000aca~^~N~^~Unknown~^~vkCmdPipelineBarrier~^~VUID-VkImageMemoryBarrier-image-01381~^~(VK_KHR_external_memory)~^~The spec valid usage text states 'If image was created with a sharing mode of VK_SHARING_MODE_CONCURRENT, at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be VK_QUEUE_FAMILY_IGNORED' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageMemoryBarrier-image-01381)~^~
VALIDATION_ERROR_0a000acc~^~N~^~Unknown~^~vkCmdPipelineBarrier~^~VUID-VkImageMemoryBarrier-image-01382~^~(VK_KHR_external_memory)~^~The spec valid usage text states 'If image was created with a sharing mode of VK_SHARING_MODE_CONCURRENT, and one of srcQueueFamilyIndex and dstQueueFamilyIndex is VK_QUEUE_FAMILY_IGNORED, the other must be VK_QUEUE_FAMILY_IGNORED or VK_QUEUE_FAMILY_EXTERNAL_KHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageMemoryBarrier-image-01382)~^~
-VALIDATION_ERROR_0a000b9c~^~N~^~None~^~VkImageMemoryBarrier~^~VUID-VkImageMemoryBarrier-subresourceRange-01486~^~core~^~The spec valid usage text states 'subresourceRange::baseMipLevel must be less than the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-subresourceRange-01486)~^~
-VALIDATION_ERROR_0a000b9e~^~N~^~None~^~VkImageMemoryBarrier~^~VUID-VkImageMemoryBarrier-subresourceRange-01487~^~core~^~The spec valid usage text states 'If subresourceRange::levelCount is not VK_REMAINING_MIP_LEVELS, subresourceRange::levelCount must be non-zero and subresourceRange::baseMipLevel + subresourceRange::levelCount must be less than or equal to the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-subresourceRange-01487)~^~
-VALIDATION_ERROR_0a000ba0~^~N~^~None~^~VkImageMemoryBarrier~^~VUID-VkImageMemoryBarrier-subresourceRange-01488~^~core~^~The spec valid usage text states 'subresourceRange::baseArrayLayer must be less than the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-subresourceRange-01488)~^~
-VALIDATION_ERROR_0a000ba2~^~N~^~None~^~VkImageMemoryBarrier~^~VUID-VkImageMemoryBarrier-subresourceRange-01489~^~core~^~The spec valid usage text states 'If subresourceRange::layerCount is not VK_REMAINING_ARRAY_LAYERS, subresourceRange::layerCount must be non-zero and subresourceRange::baseArrayLayer + subresourceRange::layerCount must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-subresourceRange-01489)~^~
+VALIDATION_ERROR_0a000b9c~^~Y~^~ImageBarrierWithBadRange~^~VkImageMemoryBarrier~^~VUID-VkImageMemoryBarrier-subresourceRange-01486~^~core~^~The spec valid usage text states 'subresourceRange::baseMipLevel must be less than the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-subresourceRange-01486)~^~
+VALIDATION_ERROR_0a000b9e~^~Y~^~ImageBarrierWithBadRange~^~VkImageMemoryBarrier~^~VUID-VkImageMemoryBarrier-subresourceRange-01487~^~core~^~The spec valid usage text states 'If subresourceRange::levelCount is not VK_REMAINING_MIP_LEVELS, subresourceRange::levelCount must be non-zero and subresourceRange::baseMipLevel + subresourceRange::levelCount must be less than or equal to the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-subresourceRange-01487)~^~
+VALIDATION_ERROR_0a000ba0~^~Y~^~ImageBarrierWithBadRange~^~VkImageMemoryBarrier~^~VUID-VkImageMemoryBarrier-subresourceRange-01488~^~core~^~The spec valid usage text states 'subresourceRange::baseArrayLayer must be less than the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-subresourceRange-01488)~^~
+VALIDATION_ERROR_0a000ba2~^~Y~^~ImageBarrierWithBadRange~^~VkImageMemoryBarrier~^~VUID-VkImageMemoryBarrier-subresourceRange-01489~^~core~^~The spec valid usage text states 'If subresourceRange::layerCount is not VK_REMAINING_ARRAY_LAYERS, subresourceRange::layerCount must be non-zero and subresourceRange::baseArrayLayer + subresourceRange::layerCount must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-subresourceRange-01489)~^~
VALIDATION_ERROR_0a006801~^~Y~^~Unknown~^~vkCmdPipelineBarrier~^~VUID-VkImageMemoryBarrier-dstAccessMask-parameter~^~core~^~The spec valid usage text states 'dstAccessMask must be a valid combination of VkAccessFlagBits values' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-dstAccessMask-parameter)~^~implicit
VALIDATION_ERROR_0a00a001~^~Y~^~Unknown~^~vkCmdPipelineBarrier~^~VUID-VkImageMemoryBarrier-image-parameter~^~core~^~The spec valid usage text states 'image must be a valid VkImage handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-image-parameter)~^~implicit
VALIDATION_ERROR_0a00d401~^~Y~^~Unknown~^~vkCmdPipelineBarrier~^~VUID-VkImageMemoryBarrier-newLayout-parameter~^~core~^~The spec valid usage text states 'newLayout must be a valid VkImageLayout value' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageMemoryBarrier-newLayout-parameter)~^~implicit
@@ -729,10 +729,10 @@
VALIDATION_ERROR_0a600154~^~Y~^~CopyImageTypeExtentMismatch~^~vkCmdCopyImage~^~VUID-VkImageSubresourceLayers-baseArrayLayer-00170~^~core~^~The spec valid usage text states '(baseArrayLayer + layerCount) must be less than or equal to the arrayLayers specified in VkImageCreateInfo when the image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageSubresourceLayers-baseArrayLayer-00170)~^~
VALIDATION_ERROR_0a600c01~^~Y~^~Unknown~^~vkCmdCopyImage~^~VUID-VkImageSubresourceLayers-aspectMask-parameter~^~core~^~The spec valid usage text states 'aspectMask must be a valid combination of VkImageAspectFlagBits values' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageSubresourceLayers-aspectMask-parameter)~^~implicit
VALIDATION_ERROR_0a600c03~^~Y~^~Unknown~^~vkCmdCopyImage~^~VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask~^~core~^~The spec valid usage text states 'aspectMask must not be 0' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask)~^~implicit
-VALIDATION_ERROR_0a8007fc~^~Y~^~ImageViewSubresourceRangeTests,InvalidBarriers,ClearColorImageWithBadRange,ClearDepthStencilWithBadRange,ClearColorImageWithValidRange,ClearDepthStencilWithValidRange~^~vkCreateImageView~^~VUID-VkImageSubresourceRange-levelCount-01022~^~core~^~The spec valid usage text states 'If levelCount is not VK_REMAINING_MIP_LEVELS, levelCount must be non-zero and (baseMipLevel + levelCount) must be less than or equal to the mipLevels specified in VkImageCreateInfo when the image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageSubresourceRange-levelCount-01022)~^~
-VALIDATION_ERROR_0a8007fe~^~Y~^~ImageViewSubresourceRangeTests,InvalidBarriers,ClearColorImageWithBadRange,ClearDepthStencilWithBadRange,ClearColorImageWithValidRange,ClearDepthStencilWithValidRange~^~vkCreateImageView~^~VUID-VkImageSubresourceRange-layerCount-01023~^~core~^~The spec valid usage text states 'If layerCount is not VK_REMAINING_ARRAY_LAYERS, layerCount must be non-zero and (baseArrayLayer + layerCount) must be less than or equal to the arrayLayers specified in VkImageCreateInfo when the image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageSubresourceRange-layerCount-01023)~^~
-VALIDATION_ERROR_0a800800~^~Y~^~None~^~vkCreateImageView~^~VUID-VkImageSubresourceRange-imageType-01024~^~core~^~The spec valid usage text states 'If the imageType specified in VkImageCreateInfo when the image was created was VK_IMAGE_TYPE_3D and the image view is created with the viewType of VkImageViewCreateInfo set to VK_IMAGE_VIEW_TYPE_2D_ARRAY then layerCount must be VK_REMAINING_ARRAY_LAYERS, or layerCount must be non-zero and (baseArrayLayer + layerCount) must be less than or equal to the extent.depth specified in VkImageCreateInfo when the image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageSubresourceRange-imageType-01024)~^~
-VALIDATION_ERROR_0a800802~^~Y~^~None~^~vkCreateImageView~^~VUID-VkImageSubresourceRange-imageType-01025~^~core~^~The spec valid usage text states 'If the imageType specified in VkImageCreateInfo when the image was created was not VK_IMAGE_TYPE_3D or the image view is not created with the viewType of VkImageViewCreateInfo set to VK_IMAGE_VIEW_TYPE_2D_ARRAY then layerCount must be VK_REMAINING_ARRAY_LAYERS, or layerCount must be non-zero and (baseArrayLayer + layerCount) must be less than or equal to the arrayLayers specified in VkImageCreateInfo when the image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageSubresourceRange-imageType-01025)~^~
+VALIDATION_ERROR_0a8007fc~^~N~^~None~^~vkCreateImageView~^~VUID-VkImageSubresourceRange-levelCount-01022~^~core~^~The spec valid usage text states 'If levelCount is not VK_REMAINING_MIP_LEVELS, levelCount must be non-zero and (baseMipLevel + levelCount) must be less than or equal to the mipLevels specified in VkImageCreateInfo when the image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageSubresourceRange-levelCount-01022)~^~Removed from the specification; superseded by command specific VUs.
+VALIDATION_ERROR_0a8007fe~^~N~^~None~^~vkCreateImageView~^~VUID-VkImageSubresourceRange-layerCount-01023~^~core~^~The spec valid usage text states 'If layerCount is not VK_REMAINING_ARRAY_LAYERS, layerCount must be non-zero and (baseArrayLayer + layerCount) must be less than or equal to the arrayLayers specified in VkImageCreateInfo when the image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageSubresourceRange-layerCount-01023)~^~Removed from the specification; superseded by command specific VUs.
+VALIDATION_ERROR_0a800800~^~N~^~None~^~vkCreateImageView~^~VUID-VkImageSubresourceRange-imageType-01024~^~core~^~The spec valid usage text states 'If the imageType specified in VkImageCreateInfo when the image was created was VK_IMAGE_TYPE_3D and the image view is created with the viewType of VkImageViewCreateInfo set to VK_IMAGE_VIEW_TYPE_2D_ARRAY then layerCount must be VK_REMAINING_ARRAY_LAYERS, or layerCount must be non-zero and (baseArrayLayer + layerCount) must be less than or equal to the extent.depth specified in VkImageCreateInfo when the image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageSubresourceRange-imageType-01024)~^~Removed from the specification; superseded by command specific VUs.
+VALIDATION_ERROR_0a800802~^~N~^~None~^~vkCreateImageView~^~VUID-VkImageSubresourceRange-imageType-01025~^~core~^~The spec valid usage text states 'If the imageType specified in VkImageCreateInfo when the image was created was not VK_IMAGE_TYPE_3D or the image view is not created with the viewType of VkImageViewCreateInfo set to VK_IMAGE_VIEW_TYPE_2D_ARRAY then layerCount must be VK_REMAINING_ARRAY_LAYERS, or layerCount must be non-zero and (baseArrayLayer + layerCount) must be less than or equal to the arrayLayers specified in VkImageCreateInfo when the image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageSubresourceRange-imageType-01025)~^~Removed from the specification; superseded by command specific VUs.
VALIDATION_ERROR_0a800c01~^~N~^~Unknown~^~vkCreateImageView~^~VUID-VkImageSubresourceRange-aspectMask-parameter~^~core~^~The spec valid usage text states 'aspectMask must be a valid combination of VkImageAspectFlagBits values' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageSubresourceRange-aspectMask-parameter)~^~implicit
VALIDATION_ERROR_0a800c03~^~Y~^~Unknown~^~vkCreateImageView~^~VUID-VkImageSubresourceRange-aspectMask-requiredbitmask~^~core~^~The spec valid usage text states 'aspectMask must not be 0' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageSubresourceRange-aspectMask-requiredbitmask)~^~implicit
VALIDATION_ERROR_0aa007c6~^~N~^~Unknown~^~vkCreateImage~^~VUID-VkImageSwapchainCreateInfoKHX-swapchain-00995~^~core~^~The spec valid usage text states 'If swapchain is not VK_NULL_HANDLE, the fields of VkImageCreateInfo must match the implied image creation parameters of the swapchain' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageSwapchainCreateInfoKHX-swapchain-00995)~^~
@@ -757,14 +757,14 @@
VALIDATION_ERROR_0ac007f6~^~Y~^~CreateImageViewNoMutableFormatBit~^~vkCreateImageView~^~VUID-VkImageViewCreateInfo-image-01019~^~core~^~The spec valid usage text states 'If image was not created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, format must be identical to the format used to create image' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-image-01019)~^~
VALIDATION_ERROR_0ac007f8~^~Y~^~Unknown~^~vkCreateImageView~^~VUID-VkImageViewCreateInfo-image-01020~^~core~^~The spec valid usage text states 'If image is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-image-01020)~^~
VALIDATION_ERROR_0ac007fa~^~Y~^~CreateImageViewBreaksParameterCompatibilityRequirements~^~vkCreateImageView~^~VUID-VkImageViewCreateInfo-subResourceRange-01021~^~core~^~The spec valid usage text states 'subresourceRange and viewType must be compatible with the image, as described in the compatibility table' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-subResourceRange-01021)~^~
-VALIDATION_ERROR_0ac00b8c~^~N~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01478~^~core~^~The spec valid usage text states 'subresourceRange::baseMipLevel must be less than the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01478)~^~
-VALIDATION_ERROR_0ac00b8e~^~N~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01479~^~core~^~The spec valid usage text states 'If subresourceRange::levelCount is not VK_REMAINING_MIP_LEVELS, subresourceRange::levelCount must be non-zero and subresourceRange::baseMipLevel + subresourceRange::levelCount must be less than or equal to the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01479)~^~
-VALIDATION_ERROR_0ac00b90~^~N~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01480~^~!(VK_KHR_maintenance1)~^~The spec valid usage text states 'subresourceRange::baseArrayLayer must be less than the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01480)~^~
-VALIDATION_ERROR_0ac00b92~^~N~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01481~^~!(VK_KHR_maintenance1)~^~The spec valid usage text states 'If subresourceRange::layerCount is not VK_REMAINING_ARRAY_LAYERS, subresourceRange::layerCount must be non-zero and subresourceRange::baseArrayLayer + subresourceRange::layerCount must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01481)~^~
-VALIDATION_ERROR_0ac00b94~^~N~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-image-01482~^~(VK_KHR_maintenance1)~^~The spec valid usage text states 'If image is not a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR set, or viewType is not VK_IMAGE_VIEW_TYPE_2D or VK_IMAGE_VIEW_TYPE_2D_ARRAY, subresourceRange::baseArrayLayer must be less than the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageViewCreateInfo-image-01482)~^~
-VALIDATION_ERROR_0ac00b96~^~N~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01483~^~(VK_KHR_maintenance1)~^~The spec valid usage text states 'If subresourceRange::layerCount is not VK_REMAINING_ARRAY_LAYERS, image is not a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR set, or viewType is not VK_IMAGE_VIEW_TYPE_2D or VK_IMAGE_VIEW_TYPE_2D_ARRAY, subresourceRange::layerCount must be non-zero and subresourceRange::baseArrayLayer + subresourceRange::layerCount must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01483)~^~
-VALIDATION_ERROR_0ac00b98~^~N~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-image-01484~^~(VK_KHR_maintenance1)~^~The spec valid usage text states 'If image is a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR set, and viewType is VK_IMAGE_VIEW_TYPE_2D or VK_IMAGE_VIEW_TYPE_2D_ARRAY, subresourceRange::baseArrayLayer must be less than the extent.depth specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageViewCreateInfo-image-01484)~^~
-VALIDATION_ERROR_0ac00b9a~^~N~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01485~^~(VK_KHR_maintenance1)~^~The spec valid usage text states 'If subresourceRange::layerCount is not VK_REMAINING_ARRAY_LAYERS, image is a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR set, and viewType is VK_IMAGE_VIEW_TYPE_2D or VK_IMAGE_VIEW_TYPE_2D_ARRAY, subresourceRange::layerCount must be non-zero and subresourceRange::baseArrayLayer + subresourceRange::layerCount must be less than or equal to the extent.depth specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01485)~^~
+VALIDATION_ERROR_0ac00b8c~^~Y~^~CreateImageViewInvalidSubresourceRange~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01478~^~core~^~The spec valid usage text states 'subresourceRange::baseMipLevel must be less than the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01478)~^~
+VALIDATION_ERROR_0ac00b8e~^~Y~^~CreateImageViewInvalidSubresourceRange~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01479~^~core~^~The spec valid usage text states 'If subresourceRange::levelCount is not VK_REMAINING_MIP_LEVELS, subresourceRange::levelCount must be non-zero and subresourceRange::baseMipLevel + subresourceRange::levelCount must be less than or equal to the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01479)~^~
+VALIDATION_ERROR_0ac00b90~^~Y~^~CreateImageViewInvalidSubresourceRange~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01480~^~!(VK_KHR_maintenance1)~^~The spec valid usage text states 'subresourceRange::baseArrayLayer must be less than the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01480)~^~
+VALIDATION_ERROR_0ac00b92~^~Y~^~CreateImageViewInvalidSubresourceRange~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01481~^~!(VK_KHR_maintenance1)~^~The spec valid usage text states 'If subresourceRange::layerCount is not VK_REMAINING_ARRAY_LAYERS, subresourceRange::layerCount must be non-zero and subresourceRange::baseArrayLayer + subresourceRange::layerCount must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01481)~^~
+VALIDATION_ERROR_0ac00b94~^~Y~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-image-01482~^~(VK_KHR_maintenance1)~^~The spec valid usage text states 'If image is not a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR set, or viewType is not VK_IMAGE_VIEW_TYPE_2D or VK_IMAGE_VIEW_TYPE_2D_ARRAY, subresourceRange::baseArrayLayer must be less than the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageViewCreateInfo-image-01482)~^~
+VALIDATION_ERROR_0ac00b96~^~Y~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01483~^~(VK_KHR_maintenance1)~^~The spec valid usage text states 'If subresourceRange::layerCount is not VK_REMAINING_ARRAY_LAYERS, image is not a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR set, or viewType is not VK_IMAGE_VIEW_TYPE_2D or VK_IMAGE_VIEW_TYPE_2D_ARRAY, subresourceRange::layerCount must be non-zero and subresourceRange::baseArrayLayer + subresourceRange::layerCount must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01483)~^~
+VALIDATION_ERROR_0ac00b98~^~Y~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-image-01484~^~(VK_KHR_maintenance1)~^~The spec valid usage text states 'If image is a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR set, and viewType is VK_IMAGE_VIEW_TYPE_2D or VK_IMAGE_VIEW_TYPE_2D_ARRAY, subresourceRange::baseArrayLayer must be less than the extent.depth specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageViewCreateInfo-image-01484)~^~
+VALIDATION_ERROR_0ac00b9a~^~Y~^~None~^~VkImageViewCreateInfo~^~VUID-VkImageViewCreateInfo-subresourceRange-01485~^~(VK_KHR_maintenance1)~^~The spec valid usage text states 'If subresourceRange::layerCount is not VK_REMAINING_ARRAY_LAYERS, image is a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR set, and viewType is VK_IMAGE_VIEW_TYPE_2D or VK_IMAGE_VIEW_TYPE_2D_ARRAY, subresourceRange::layerCount must be non-zero and subresourceRange::baseArrayLayer + subresourceRange::layerCount must be less than or equal to the extent.depth specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-VkImageViewCreateInfo-subresourceRange-01485)~^~
VALIDATION_ERROR_0ac02c01~^~N~^~Unknown~^~vkCreateImageView~^~VUID-VkImageViewCreateInfo-components-parameter~^~core~^~The spec valid usage text states 'components must be a valid VkComponentMapping structure' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-components-parameter)~^~implicit
VALIDATION_ERROR_0ac09005~^~Y~^~Unknown~^~vkCreateImageView~^~VUID-VkImageViewCreateInfo-flags-zerobitmask~^~core~^~The spec valid usage text states 'flags must be 0' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-flags-zerobitmask)~^~implicit, TBD in parameter validation layer.
VALIDATION_ERROR_0ac09201~^~Y~^~Unknown~^~vkCreateImageView~^~VUID-VkImageViewCreateInfo-format-parameter~^~core~^~The spec valid usage text states 'format must be a valid VkFormat value' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkImageViewCreateInfo-format-parameter)~^~implicit
@@ -1670,10 +1670,10 @@
VALIDATION_ERROR_1880000e~^~Y~^~Unknown~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-image-00007~^~core~^~The spec valid usage text states 'image must not have a compressed or depth/stencil format' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-image-00007)~^~
VALIDATION_ERROR_18800017~^~Y~^~Unknown~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-renderpass~^~core~^~The spec valid usage text states 'This command must only be called outside of a render pass instance' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-renderpass)~^~implicit
VALIDATION_ERROR_18800ae4~^~N~^~None~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-imageLayout-01394~^~(VK_KHR_shared_presentable_image)~^~The spec valid usage text states 'imageLayout must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_GENERAL, or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VUID-vkCmdClearColorImage-imageLayout-01394)~^~
-VALIDATION_ERROR_18800b7c~^~N~^~None~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-baseMipLevel-01470~^~core~^~The spec valid usage text states 'The VkImageSubresourceRange::baseMipLevel members of the elements of the pRanges array must each be less than the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-baseMipLevel-01470)~^~
-VALIDATION_ERROR_18800b7e~^~N~^~None~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-levelCount-01471~^~core~^~The spec valid usage text states 'If the VkImageSubresourceRange::levelCount member of any element of the pRanges array is not VK_REMAINING_MIP_LEVELS, it must be non-zero and VkImageSubresourceRange::baseMipLevel + VkImageSubresourceRange::levelCount for that element of the pRanges array must be less than or equal to the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-levelCount-01471)~^~
-VALIDATION_ERROR_18800b80~^~N~^~None~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-baseArrayLayer-01472~^~core~^~The spec valid usage text states 'The VkImageSubresourceRange::baseArrayLayer members of the elements of the pRanges array must each be less than the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-baseArrayLayer-01472)~^~
-VALIDATION_ERROR_18800b82~^~N~^~None~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-layerCount-01473~^~core~^~The spec valid usage text states 'If the VkImageSubresourceRange::layerCount member of any element of the pRanges array is not VK_REMAINING_ARRAY_LAYERS, it must be non-zero and VkImageSubresourceRange::baseArrayLayer + VkImageSubresourceRange::layerCount for that element of the pRanges array must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-layerCount-01473)~^~
+VALIDATION_ERROR_18800b7c~^~Y~^~ClearColorImageWithBadRange~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-baseMipLevel-01470~^~core~^~The spec valid usage text states 'The VkImageSubresourceRange::baseMipLevel members of the elements of the pRanges array must each be less than the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-baseMipLevel-01470)~^~
+VALIDATION_ERROR_18800b7e~^~Y~^~ClearColorImageWithBadRange~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-levelCount-01471~^~core~^~The spec valid usage text states 'If the VkImageSubresourceRange::levelCount member of any element of the pRanges array is not VK_REMAINING_MIP_LEVELS, it must be non-zero and VkImageSubresourceRange::baseMipLevel + VkImageSubresourceRange::levelCount for that element of the pRanges array must be less than or equal to the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-levelCount-01471)~^~
+VALIDATION_ERROR_18800b80~^~Y~^~ClearColorImageWithBadRange~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-baseArrayLayer-01472~^~core~^~The spec valid usage text states 'The VkImageSubresourceRange::baseArrayLayer members of the elements of the pRanges array must each be less than the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-baseArrayLayer-01472)~^~
+VALIDATION_ERROR_18800b82~^~Y~^~ClearColorImageWithBadRange~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-layerCount-01473~^~core~^~The spec valid usage text states 'If the VkImageSubresourceRange::layerCount member of any element of the pRanges array is not VK_REMAINING_ARRAY_LAYERS, it must be non-zero and VkImageSubresourceRange::baseArrayLayer + VkImageSubresourceRange::layerCount for that element of the pRanges array must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-layerCount-01473)~^~
VALIDATION_ERROR_18802401~^~Y~^~None~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-commandBuffer-parameter~^~core~^~The spec valid usage text states 'commandBuffer must be a valid VkCommandBuffer handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-commandBuffer-parameter)~^~implicit
VALIDATION_ERROR_18802413~^~N~^~Unknown~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-commandBuffer-recording~^~core~^~The spec valid usage text states 'commandBuffer must be in the recording state' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-commandBuffer-recording)~^~implicit
VALIDATION_ERROR_18802415~^~Y~^~Unknown~^~vkCmdClearColorImage~^~VUID-vkCmdClearColorImage-commandBuffer-cmdpool~^~core~^~The spec valid usage text states 'The VkCommandPool that commandBuffer was allocated from must support graphics, or compute operations' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearColorImage-commandBuffer-cmdpool)~^~implicit
@@ -1691,10 +1691,10 @@
VALIDATION_ERROR_18a00018~^~Y~^~InvalidImageLayout~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-imageLayout-00012~^~core~^~The spec valid usage text states 'imageLayout must be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-imageLayout-00012)~^~
VALIDATION_ERROR_18a0001a~^~N~^~Unknown~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-pRanges-00013~^~core~^~The spec valid usage text states 'The image range of any given element of pRanges must be an image subresource range that is contained within image' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-pRanges-00013)~^~
VALIDATION_ERROR_18a0001c~^~Y~^~Unknown~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-image-00014~^~core~^~The spec valid usage text states 'image must have a depth/stencil format' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-image-00014)~^~
-VALIDATION_ERROR_18a00b84~^~N~^~None~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474~^~core~^~The spec valid usage text states 'The VkImageSubresourceRange::baseMipLevel members of the elements of the pRanges array must each be less than the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474)~^~
-VALIDATION_ERROR_18a00b86~^~N~^~None~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-levelCount-01475~^~core~^~The spec valid usage text states 'If the VkImageSubresourceRange::levelCount member of any element of the pRanges array is not VK_REMAINING_MIP_LEVELS, it must be non-zero and VkImageSubresourceRange::baseMipLevel + VkImageSubresourceRange::levelCount for that element of the pRanges array must be less than or equal to the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-levelCount-01475)~^~
-VALIDATION_ERROR_18a00b88~^~N~^~None~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476~^~core~^~The spec valid usage text states 'The VkImageSubresourceRange::baseArrayLayer members of the elements of the pRanges array must each be less than the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476)~^~
-VALIDATION_ERROR_18a00b8a~^~N~^~None~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-layerCount-01477~^~core~^~The spec valid usage text states 'If the VkImageSubresourceRange::layerCount member of any element of the pRanges array is not VK_REMAINING_ARRAY_LAYERS, it must be non-zero and VkImageSubresourceRange::baseArrayLayer + VkImageSubresourceRange::layerCount for that element of the pRanges array must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-layerCount-01477)~^~
+VALIDATION_ERROR_18a00b84~^~Y~^~ClearDepthStencilWithBadRange~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474~^~core~^~The spec valid usage text states 'The VkImageSubresourceRange::baseMipLevel members of the elements of the pRanges array must each be less than the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474)~^~
+VALIDATION_ERROR_18a00b86~^~Y~^~ClearDepthStencilWithBadRange~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-levelCount-01475~^~core~^~The spec valid usage text states 'If the VkImageSubresourceRange::levelCount member of any element of the pRanges array is not VK_REMAINING_MIP_LEVELS, it must be non-zero and VkImageSubresourceRange::baseMipLevel + VkImageSubresourceRange::levelCount for that element of the pRanges array must be less than or equal to the mipLevels specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-levelCount-01475)~^~
+VALIDATION_ERROR_18a00b88~^~Y~^~ClearDepthStencilWithBadRange~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476~^~core~^~The spec valid usage text states 'The VkImageSubresourceRange::baseArrayLayer members of the elements of the pRanges array must each be less than the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476)~^~
+VALIDATION_ERROR_18a00b8a~^~Y~^~ClearDepthStencilWithBadRange~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-layerCount-01477~^~core~^~The spec valid usage text states 'If the VkImageSubresourceRange::layerCount member of any element of the pRanges array is not VK_REMAINING_ARRAY_LAYERS, it must be non-zero and VkImageSubresourceRange::baseArrayLayer + VkImageSubresourceRange::layerCount for that element of the pRanges array must be less than or equal to the arrayLayers specified in VkImageCreateInfo when image was created' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-layerCount-01477)~^~
VALIDATION_ERROR_18a02401~^~Y~^~None~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter~^~core~^~The spec valid usage text states 'commandBuffer must be a valid VkCommandBuffer handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter)~^~implicit
VALIDATION_ERROR_18a02413~^~N~^~Unknown~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-commandBuffer-recording~^~core~^~The spec valid usage text states 'commandBuffer must be in the recording state' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-commandBuffer-recording)~^~implicit
VALIDATION_ERROR_18a02415~^~Y~^~Unknown~^~vkCmdClearDepthStencilImage~^~VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool~^~core~^~The spec valid usage text states 'The VkCommandPool that commandBuffer was allocated from must support graphics operations' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool)~^~implicit