Fix for issues in dynamic rendering tests
authorMarcin Kańtoch <marcin.kantoch@amd.com>
Sun, 12 Dec 2021 22:39:11 +0000 (23:39 +0100)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Sun, 9 Jan 2022 20:32:04 +0000 (20:32 +0000)
Missing barrier before begin rendering to transition image from
VK_IMAGE_LAYOUT_UNDEFINED to VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL

Components: Vulkan

VK-GL-CTS issue: 3383

Affects:
dEQP-VK.dynamic_rendering.suballocation.sparserendertarget*

Change-Id: Ied286e31282d56e8221e327e3d02a5d9333cf499

external/vulkancts/modules/vulkan/renderpass/vktRenderPassSparseRenderTargetTests.cpp

index 7bc2e59..7c86927 100644 (file)
@@ -485,6 +485,34 @@ tcu::TestStatus SparseRenderTargetTestInstance::iterateInternal (void)
        VkRect2D renderArea = makeRect2D(m_width, m_height);
        if (m_renderingType == RENDERING_TYPE_DYNAMIC_RENDERING)
        {
+               std::vector<VkImageMemoryBarrier> barriers;
+
+               const VkImageMemoryBarrier barrier =
+               {
+                       VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
+                       DE_NULL,
+
+                       0,
+                       VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+
+                       VK_IMAGE_LAYOUT_UNDEFINED,
+                       VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
+
+                       VK_QUEUE_FAMILY_IGNORED,
+                       VK_QUEUE_FAMILY_IGNORED,
+
+                       *m_dstImage,
+                       {
+                               VK_IMAGE_ASPECT_COLOR_BIT,
+                               0u,
+                               1u,
+                               0u,
+                               1u
+                       }
+               };
+
+               vkd.cmdPipelineBarrier(*commandBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, 0u, 0u, DE_NULL, 0u, DE_NULL, 1u, &barrier);
+
                const VkClearValue clearValue = makeClearValueColor({ 0.0f, 0.0f, 0.0f, 1.0f });
                beginRendering(vkd, *commandBuffer, *m_dstImageView, renderArea, clearValue, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_ATTACHMENT_LOAD_OP_DONT_CARE);
        }