Fix subpass dependency in geometry layered tests
authorziga-lunarg <ziga@lunarg.com>
Sun, 25 Sep 2022 15:39:29 +0000 (17:39 +0200)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 13 Oct 2022 16:16:15 +0000 (16:16 +0000)
If both stages include a framebuffer-space stage in a self dependency,
then flags must include VK_DEPENDENCY_BY_REGION_BIT

Components: Vulkan

VK-GL-CTS issue: 3997

Affected tests:
dEQP-VK.geometry.layered.*

Change-Id: Id9941c16488a4c3bfbf569490d9e146437c4ae40

external/vulkancts/modules/vulkan/geometry/vktGeometryLayeredRenderingTests.cpp

index 3866ab7..dfbc32e 100644 (file)
@@ -270,7 +270,7 @@ Move<VkRenderPass> makeRenderPassWithSelfDependency (const DeviceInterface& vk,
                VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,  // VkPipelineStageFlags dstStageMask
                VK_ACCESS_SHADER_WRITE_BIT,                             // VkAccessFlags                srcAccessMask
                VK_ACCESS_SHADER_READ_BIT,                              // VkAccessFlags                dstAccessMask
-               0u,                                                                             // VkDependencyFlags    dependencyFlags
+               VK_DEPENDENCY_BY_REGION_BIT,                    // VkDependencyFlags    dependencyFlags
        };
 
        const VkRenderPassCreateInfo    renderPassInfo                  =
@@ -1782,7 +1782,7 @@ tcu::TestStatus testSecondaryCmdBuffer (Context& context, const TestParams param
                        VK_ACCESS_SHADER_READ_BIT                       // VkAccessFlags        dstAccessMask
                };
 
-               vk.cmdPipelineBarrier(*secondaryCmdBuffer, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, 0u, 1u, &barrier, 0u, DE_NULL, 0u, DE_NULL);
+               vk.cmdPipelineBarrier(*secondaryCmdBuffer, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, VK_DEPENDENCY_BY_REGION_BIT, 1u, &barrier, 0u, DE_NULL, 0u, DE_NULL);
        }
        vk.cmdDraw(*secondaryCmdBuffer, 1u, 1u, 0u, 0u);
        endCommandBuffer(vk, *secondaryCmdBuffer);