aboutsummaryrefslogtreecommitdiff
path: root/layers/parameter_validation.cpp
diff options
context:
space:
mode:
authorDustin Graves <dustin@lunarg.com>2016-07-12 13:57:02 -0600
committerDustin Graves <dustin@lunarg.com>2016-07-12 15:11:12 -0600
commit86a2c3f28bac0fbe55fb0e473231eea9277ec321 (patch)
tree9b4a448e8fac833cb2677ef7fefb03ed89b978eb /layers/parameter_validation.cpp
parentf9760b8ef2ff145d67c8faa00371aa2538cb88f8 (diff)
downloadusermoji-86a2c3f28bac0fbe55fb0e473231eea9277ec321.tar.xz
layers: Handle special layerCount case
Make parameter validation logic for VkImageSubresource ignore layerCount when it is set to VK_REMAINING_ARRAY_LAYERS. Change-Id: Ib2e50e678c79f00850e085fe39c22631f9d00636 Issues-Addressed: GitHub VulkanTools #58
Diffstat (limited to 'layers/parameter_validation.cpp')
-rw-r--r--layers/parameter_validation.cpp17
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");