Fix incorrect shader output format
authorJames Fitzpatrick <james.fitzpatrick@imgtec.com>
Tue, 5 Oct 2021 09:12:46 +0000 (10:12 +0100)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Fri, 22 Oct 2021 20:55:25 +0000 (20:55 +0000)
For test variants that write to a stencil buffer, the final attachment
will be R8_UINT. For these tests ensure the fragment shader is
outputing to this attachment as a uint.

Affects: dEQP-VK.synchronization2.none_stage.*

Components: Vulkan

VK-GL-CTS issue: 3177

Change-Id: Ia7e185c8c8486c8b0e76e11038e0a5108770f21f
(cherry picked from commit 4dbc15461d925429b6545bd162c97a86ba3f8a73)

external/vulkancts/modules/vulkan/synchronization/vktSynchronizationNoneStageTests.cpp

index 49ce903..6c329c4 100644 (file)
@@ -406,7 +406,7 @@ NoneStageTestInstance::NoneStageTestInstance(Context& context, const TestParams&
                                m_referenceImageUsage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
 
                        // when we read stencil as color we need to use usampler2D
-                       if (readAspect == VK_IMAGE_ASPECT_STENCIL_BIT || (readAspect == IMAGE_ASPECT_DEPTH_STENCIL && readStencilFromCombinedDepthStencil))
+                       if ((readAspect | writeAspect) == VK_IMAGE_ASPECT_STENCIL_BIT || (readAspect == IMAGE_ASPECT_DEPTH_STENCIL && readStencilFromCombinedDepthStencil))
                                m_readFragShaderName             = "frag-stencil-to-color";
                }
        }
@@ -1232,7 +1232,7 @@ void NoneStageTestCase::initPrograms(SourceCollections& sourceCollections) const
        }
        if ((readLayout != VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL) &&
                (readLayout != VK_IMAGE_LAYOUT_GENERAL) &&
-               (readAspect == VK_IMAGE_ASPECT_STENCIL_BIT || (readAspect == IMAGE_ASPECT_DEPTH_STENCIL && m_testParams.readLayout == VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL)))
+               ((readAspect | writeAspect) == VK_IMAGE_ASPECT_STENCIL_BIT || (readAspect == IMAGE_ASPECT_DEPTH_STENCIL && m_testParams.readLayout == VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL)))
        {
                // use usampler2D and uvec4 for color
                sourceCollections.glslSources.add("frag-stencil-to-color") << glu::FragmentSource(