Fix tracking image layout in load_store_op_none tests

If multiple aspects of the image were read, the image was transitioned
from the same layout multiple times

Components: Vulkan

VK-GL-CTS issue: 3941

Affected tests:
dEQP-VK.*.load_store_op_none.*

Change-Id: Iea645d3c6fc683dcd3005e11d7c4ec50379dd2ff
diff --git a/external/vulkancts/modules/vulkan/renderpass/vktRenderPassLoadStoreOpNoneTests.cpp b/external/vulkancts/modules/vulkan/renderpass/vktRenderPassLoadStoreOpNoneTests.cpp
index 6f452a8..1b43ef3 100644
--- a/external/vulkancts/modules/vulkan/renderpass/vktRenderPassLoadStoreOpNoneTests.cpp
+++ b/external/vulkancts/modules/vulkan/renderpass/vktRenderPassLoadStoreOpNoneTests.cpp
@@ -1348,6 +1348,7 @@
 	// Verify selected attachments.
 	for (size_t i = 0; i < m_testParams.attachments.size(); i++)
 	{
+		bool transitioned = false;
 		for (const auto& verify : m_testParams.attachments[i].verifyAspects)
 		{
 			de::MovePtr<tcu::TextureLevel>		textureLevelResult;
@@ -1357,19 +1358,22 @@
 
 			if (verify.aspect == VK_IMAGE_ASPECT_DEPTH_BIT)
 			{
-				VkImageLayout layout = (m_testParams.groupParams->renderingType == RENDERING_TYPE_DYNAMIC_RENDERING) ? VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
+				VkImageLayout layout = (m_testParams.groupParams->renderingType == RENDERING_TYPE_DYNAMIC_RENDERING && !transitioned) ? VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
 				textureLevelResult = pipeline::readDepthAttachment(vk, vkDevice, queue, queueFamilyIndex, allocator, *attachmentImages[i], m_testParams.depthStencilFormat, m_imageSize, layout);
+				transitioned = true;
 			}
 			else if (verify.aspect == VK_IMAGE_ASPECT_STENCIL_BIT)
 			{
-				VkImageLayout layout = (m_testParams.groupParams->renderingType == RENDERING_TYPE_DYNAMIC_RENDERING) ? VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
+				VkImageLayout layout = (m_testParams.groupParams->renderingType == RENDERING_TYPE_DYNAMIC_RENDERING && !transitioned) ? VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
 				textureLevelResult = pipeline::readStencilAttachment(vk, vkDevice, queue, queueFamilyIndex, allocator, *attachmentImages[i], m_testParams.depthStencilFormat, m_imageSize, layout);
+				transitioned = true;
 			}
 			else
 			{
 				DE_ASSERT(verify.aspect == VK_IMAGE_ASPECT_COLOR_BIT);
-				VkImageLayout layout = ((m_testParams.groupParams->renderingType == RENDERING_TYPE_DYNAMIC_RENDERING) ? VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
+				VkImageLayout layout = ((m_testParams.groupParams->renderingType == RENDERING_TYPE_DYNAMIC_RENDERING && !transitioned) ? VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
 				textureLevelResult = pipeline::readColorAttachment(vk, vkDevice, queue, queueFamilyIndex, allocator, *attachmentImages[i], format, m_imageSize, layout);
+				transitioned = true;
 			}
 
 			const tcu::ConstPixelBufferAccess&	access				= textureLevelResult->getAccess();