aboutsummaryrefslogtreecommitdiff
path: root/layers/parameter_validation_utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layers/parameter_validation_utils.cpp')
-rw-r--r--layers/parameter_validation_utils.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/layers/parameter_validation_utils.cpp b/layers/parameter_validation_utils.cpp
index ba071d8d..53a9f875 100644
--- a/layers/parameter_validation_utils.cpp
+++ b/layers/parameter_validation_utils.cpp
@@ -1113,6 +1113,24 @@ bool pv_vkCreateImageView(VkDevice device, const VkImageViewCreateInfo *pCreateI
"pCreateInfo->subresourceRange.layerCount must be 1");
}
}
+
+ // Validate chained VkImageViewUsageCreateInfo struct, if present
+ if (nullptr != pCreateInfo->pNext) {
+ auto chained_ivuci_struct = lvl_find_in_chain<VkImageViewUsageCreateInfoKHR>(pCreateInfo->pNext);
+ if (chained_ivuci_struct) {
+ if (0 == chained_ivuci_struct->usage) {
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ VALIDATION_ERROR_3f230603,
+ "vkCreateImageView: Chained VkImageViewUsageCreateInfo usage field must not be 0");
+ } else if (chained_ivuci_struct->usage & ~AllVkImageUsageFlagBits) {
+ std::stringstream ss;
+ ss << "vkCreateImageView: Chained VkImageViewUsageCreateInfo usage field (0x" << std::hex
+ << chained_ivuci_struct->usage << ") contains invalid flag bits.";
+ skip |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ VALIDATION_ERROR_3f230601, "%s", ss.str().c_str());
+ }
+ }
+ }
}
return skip;
}