diff options
| author | Dave Houlton <daveh@lunarg.com> | 2018-04-10 16:41:14 -0600 |
|---|---|---|
| committer | Dave Houlton <daveh@lunarg.com> | 2018-04-12 14:05:51 -0600 |
| commit | 78bfa6c301bd1d87ec8aa3c097455beac0b65c4f (patch) | |
| tree | 6916d40fa11e1290929facad4886f69ddafdae95 /layers/parameter_validation_utils.cpp | |
| parent | b4c7b602e4238558e7001ca541e0fe8924c5c2ec (diff) | |
| download | usermoji-78bfa6c301bd1d87ec8aa3c097455beac0b65c4f.tar.xz | |
layers: maint2 image usage bit validation
Add partial support for VK_IMAGE_CREATE_EXTENDED_USAGE_BIT in
vkCreateImage(), currently just avoiding the usage bit checks when
EXTENDED_USAGE is specified. Full support will require an
exhaustive search of all compatible format's usage bits, which
seems pretty expensive. TODO for now.
Adds support for checking for a chained VkImageViewUsageCreateInfo
struct when doing usage bit validation in vkCreateImageView().
Change-Id: I79a5853dc93dfa54040ace162170f1226a978c2d
Diffstat (limited to 'layers/parameter_validation_utils.cpp')
| -rw-r--r-- | layers/parameter_validation_utils.cpp | 18 |
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; } |
