Fix buffer RAW hazards in synchronization tests
authorIgor Ostrowski <igor.ostrowski@intel.com>
Thu, 28 Feb 2019 16:15:12 +0000 (17:15 +0100)
committerIgor Ostrowski <igor.ostrowski@intel.com>
Fri, 1 Mar 2019 11:20:07 +0000 (12:20 +0100)
Missing barrier for buffers in semaphore tests.

Affects:
dEQP-VK.synchronization.op.single_queue.semaphore.write_*_read_*.buffer_*

Components: Vulkan
VK-GL-CTS issue: 1633

Change-Id: I0f4ffed00e28816496948d8167e08bbbed999b79

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

index 979f269..22f3a53 100644 (file)
@@ -232,6 +232,12 @@ public:
                                writeSync.imageLayout, readSync.imageLayout, m_resource->getImage().handle, m_resource->getImage().subresourceRange);
                        vk.cmdPipelineBarrier(cmdBuffers[WRITE],  writeSync.stageMask, readSync.stageMask, (VkDependencyFlags)0, 0u, (const VkMemoryBarrier*)DE_NULL, 0u, (const VkBufferMemoryBarrier*)DE_NULL, 1u, &barrier);
                }
+               else
+               {
+                       const VkBufferMemoryBarrier barrier = makeBufferMemoryBarrier(writeSync.accessMask, readSync.accessMask,
+                               m_resource->getBuffer().handle, 0, VK_WHOLE_SIZE);
+                       vk.cmdPipelineBarrier(cmdBuffers[WRITE],  writeSync.stageMask, readSync.stageMask, (VkDependencyFlags)0, 0u, (const VkMemoryBarrier*)DE_NULL, 1u, &barrier, 0u, (const VkImageMemoryBarrier*)DE_NULL);
+               }
 
                endCommandBuffer(vk, cmdBuffers[WRITE]);