From: Chris Forbes Date: Thu, 8 Sep 2016 03:25:24 +0000 (+1200) Subject: layers: CmdClearAttachments colorAttachment is index into subpass X-Git-Tag: accepted/tizen/3.0.m2/mobile/20170105.023708~206 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1710af939cd452f3c02e93f598f20e5e12eb6c3b;p=platform%2Fupstream%2FVulkan-LoaderAndValidationLayers.git layers: CmdClearAttachments colorAttachment is index into subpass We were previously treating this as being an index into the renderpass attachment descriptions, but that's nonsense. It's also well-defined what happens if an out-of-range index is provided, so downgrade to a warning. Signed-off-by: Chris Forbes --- diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 8b5e9f6..b25eea8 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -8102,18 +8102,11 @@ VKAPI_ATTR void VKAPI_CALL CmdClearAttachments(VkCommandBuffer commandBuffer, ui for (uint32_t attachment_idx = 0; attachment_idx < attachmentCount; attachment_idx++) { const VkClearAttachment *attachment = &pAttachments[attachment_idx]; if (attachment->aspectMask & VK_IMAGE_ASPECT_COLOR_BIT) { - bool found = false; - for (uint32_t i = 0; i < pSD->colorAttachmentCount; i++) { - if (attachment->colorAttachment == pSD->pColorAttachments[i].attachment) { - found = true; - break; - } - } - if (!found) { + if (attachment->colorAttachment >= pSD->colorAttachmentCount) { skip_call |= log_msg( - dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + dev_data->report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, (uint64_t)commandBuffer, __LINE__, DRAWSTATE_MISSING_ATTACHMENT_REFERENCE, "DS", - "vkCmdClearAttachments() attachment index %d not found in attachment reference array of active subpass %d", + "vkCmdClearAttachments() color attachment index %d out of range for active subpass %d; ignored", attachment->colorAttachment, pCB->activeSubpass); } } else if (attachment->aspectMask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) { diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp index 579f8ed..ce584de 100644 --- a/tests/layer_validation_tests.cpp +++ b/tests/layer_validation_tests.cpp @@ -11756,9 +11756,8 @@ TEST_F(VkLayerTest, MissingClearAttachment) { TEST_DESCRIPTION("Points to a wrong colorAttachment index in a VkClearAttachment " "structure passed to vkCmdClearAttachments"); ASSERT_NO_FATAL_FAILURE(InitState()); - m_errorMonitor->SetDesiredFailureMsg(VK_DEBUG_REPORT_ERROR_BIT_EXT, - "vkCmdClearAttachments() attachment index 1 not found in attachment " - "reference array of active subpass 0"); + m_errorMonitor->SetDesiredFailureMsg(VK_DEBUG_REPORT_WARNING_BIT_EXT, + "vkCmdClearAttachments() color attachment index 1 out of range for active subpass 0; ignored"); VKTriangleTest(bindStateVertShaderText, bindStateFragShaderText, BsoFailCmdClearAttachments); m_errorMonitor->VerifyFound();