diff options
Diffstat (limited to 'layers/parameter_validation.cpp')
| -rw-r--r-- | layers/parameter_validation.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/layers/parameter_validation.cpp b/layers/parameter_validation.cpp index b1a8a03f..80be9ce2 100644 --- a/layers/parameter_validation.cpp +++ b/layers/parameter_validation.cpp @@ -2539,28 +2539,32 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateImageView(VkDevice device, const VkImageVie if (pCreateInfo != nullptr) { if ((pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_1D) || (pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_2D)) { - if (pCreateInfo->subresourceRange.layerCount != 1) { + if ((pCreateInfo->subresourceRange.layerCount != 1) && + (pCreateInfo->subresourceRange.layerCount != VK_REMAINING_ARRAY_LAYERS)) { skip_call |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, 1, LayerName, "vkCreateImageView: if pCreateInfo->viewType is VK_IMAGE_TYPE_%dD, " "pCreateInfo->subresourceRange.layerCount must be 1", ((pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_1D) ? 1 : 2)); } } else if ((pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_1D_ARRAY) || - (pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_1D_ARRAY)) { - if (pCreateInfo->subresourceRange.layerCount < 1) { + (pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_2D_ARRAY)) { + if ((pCreateInfo->subresourceRange.layerCount < 1) && + (pCreateInfo->subresourceRange.layerCount != VK_REMAINING_ARRAY_LAYERS)) { skip_call |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, 1, LayerName, "vkCreateImageView: if pCreateInfo->viewType is VK_IMAGE_TYPE_%dD_ARRAY, " "pCreateInfo->subresourceRange.layerCount must be >= 1", ((pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_1D_ARRAY) ? 1 : 2)); } } else if (pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_CUBE) { - if (pCreateInfo->subresourceRange.layerCount != 6) { + if ((pCreateInfo->subresourceRange.layerCount != 6) && + (pCreateInfo->subresourceRange.layerCount != VK_REMAINING_ARRAY_LAYERS)) { skip_call |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, 1, LayerName, "vkCreateImageView: if pCreateInfo->viewType is VK_IMAGE_TYPE_CUBE, " "pCreateInfo->subresourceRange.layerCount must be 6"); } } else if (pCreateInfo->viewType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY) { - if ((pCreateInfo->subresourceRange.layerCount == 0) || ((pCreateInfo->subresourceRange.layerCount % 6) != 0)) { + if (((pCreateInfo->subresourceRange.layerCount == 0) || ((pCreateInfo->subresourceRange.layerCount % 6) != 0)) && + (pCreateInfo->subresourceRange.layerCount != VK_REMAINING_ARRAY_LAYERS)) { skip_call |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, 1, LayerName, "vkCreateImageView: if pCreateInfo->viewType is VK_IMAGE_TYPE_CUBE_ARRAY, " "pCreateInfo->subresourceRange.layerCount must be a multiple of 6"); @@ -2572,7 +2576,8 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateImageView(VkDevice device, const VkImageVie "pCreateInfo->subresourceRange.baseArrayLayer must be 0"); } - if (pCreateInfo->subresourceRange.layerCount != 1) { + if ((pCreateInfo->subresourceRange.layerCount != 1) && + (pCreateInfo->subresourceRange.layerCount != VK_REMAINING_ARRAY_LAYERS)) { skip_call |= log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, 1, LayerName, "vkCreateImageView: if pCreateInfo->viewType is VK_IMAGE_TYPE_3D, " "pCreateInfo->subresourceRange.layerCount must be 1"); |
