From dba95552978423417af16ecf6e473d9773c7d76a Mon Sep 17 00:00:00 2001 From: Karl Schultz Date: Fri, 9 Dec 2016 16:34:16 -0700 Subject: [PATCH] layers: Use resolved range to avoid long loops Fixes #1251. Use the resolvedRange instead of the raw range, which could include VK_REMAINING_MIP_LEVELS and/or VK_REMAINING_ARRAY_LAYERS, which are really big numbers. This fixes a near-infinite loop issue when running the input_attachment sample with validation. Change-Id: I250118db74a6faaecd2b3cd4cb43f44c07ae436d --- layers/core_validation.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 647e209..4ebdf12 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -8272,11 +8272,11 @@ static bool VerifyClearImageLayout(layer_data *dev_data, GLOBAL_CB_NODE *cb_node } } - for (uint32_t levelIdx = 0; levelIdx < range.levelCount; ++levelIdx) { - uint32_t level = levelIdx + range.baseMipLevel; - for (uint32_t layerIdx = 0; layerIdx < range.layerCount; ++layerIdx) { - uint32_t layer = layerIdx + range.baseArrayLayer; - VkImageSubresource sub = {range.aspectMask, level, layer}; + for (uint32_t levelIdx = 0; levelIdx < resolvedRange.levelCount; ++levelIdx) { + uint32_t level = levelIdx + resolvedRange.baseMipLevel; + for (uint32_t layerIdx = 0; layerIdx < resolvedRange.layerCount; ++layerIdx) { + uint32_t layer = layerIdx + resolvedRange.baseArrayLayer; + VkImageSubresource sub = {resolvedRange.aspectMask, level, layer}; IMAGE_CMD_BUF_LAYOUT_NODE node; if (!FindLayout(cb_node, image, sub, node)) { SetLayout(cb_node, image, sub, IMAGE_CMD_BUF_LAYOUT_NODE(dest_image_layout, dest_image_layout)); -- 2.7.4