Add memory barrier to fragment shader interlock tests.
authorSzymon Szczyrbak <szymon.szczyrbak@intel.com>
Tue, 14 Jan 2020 12:40:51 +0000 (13:40 +0100)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Fri, 17 Apr 2020 12:13:04 +0000 (08:13 -0400)
Image or buffer written by GPU are copied to host-visible buffer used to
verify test's results.
Added a TRANSFER_WRITE/HOST_READ pipeline barrier to make sure that the data
accessed by host is up-to-date.

Component: Vulkan

Affects: dEQP-VK.fragment_shader_interlock.basic.*

VK-GL-CTS Issue: 2165

Change-Id: I6d458b2e650a3813e62948d670b8a53e864aed37
(cherry picked from commit 1f1f54995a1a32ad4b7f9f357a39c19d3c1c0a7c)

external/vulkancts/modules/vulkan/fragment_shader_interlock/vktFragmentShaderInterlockBasic.cpp

index dcdbf40..cd215af 100644 (file)
@@ -764,6 +764,11 @@ tcu::TestStatus FSITestInstance::iterate (void)
                vk.cmdCopyBuffer(*cmdBuffer, **buffer, **copyBuffer, 1, &copyRegion);
        }
 
+       memBarrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
+       memBarrier.dstAccessMask = VK_ACCESS_HOST_READ_BIT;
+       vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT,
+               0, 1, &memBarrier, 0, DE_NULL, 0, DE_NULL);
+
        endCommandBuffer(vk, *cmdBuffer);
 
        submitCommandsAndWait(vk, device, queue, cmdBuffer.get());