Add missing barrier after cmdFillBuffer.
authorArkadiusz Sarwa <arkadiusz.sarwa@amd.com>
Tue, 11 Oct 2022 14:29:06 +0000 (16:29 +0200)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 13 Oct 2022 17:13:24 +0000 (17:13 +0000)
Components: Vulkan

VK-GL-CTS issue: 4036

Affected tests:
dEQP-VK.api.image_clearing.*

Change-Id: Ieddaa85461311e1b39de4aeee69a192d01c6c92c

external/vulkancts/modules/vulkan/api/vktApiImageClearingTests.cpp

index 6a78792..0a767db 100644 (file)
@@ -1374,6 +1374,27 @@ void ImageClearingTestInstance::preClearImage (const deUint32 imageMipLevels, Vk
 
        m_vkd.cmdFillBuffer(*commandBuffer, *m_stagingBuffer, 0u, VK_WHOLE_SIZE, 0u);
 
+       const vk::VkBufferMemoryBarrier copyBufferBarrier       =
+         {
+               vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,    // VkStructureType      sType
+               DE_NULL,                                                                                // const void*          pNext
+               VK_ACCESS_TRANSFER_WRITE_BIT,                                   // VkAccessFlags        srcAccessMask
+               VK_ACCESS_TRANSFER_READ_BIT,                                    // VkAccessFlags        dstAccessMask
+               VK_QUEUE_FAMILY_IGNORED,                                                // uint32_t                     srcQueueFamilyIndex
+               VK_QUEUE_FAMILY_IGNORED,                                                // uint32_t                     dstQueueFamilyIndex
+               *m_stagingBuffer,                                                               // VkBuffer                     buffer
+               0u,                                                                                             // VkDeviceSize         offset
+               VK_WHOLE_SIZE,                                                                  // VkDeviceSize         size
+       };
+
+       m_vkd.cmdPipelineBarrier(*commandBuffer,
+                                                        VK_PIPELINE_STAGE_TRANSFER_BIT,
+                                                        VK_PIPELINE_STAGE_TRANSFER_BIT,
+                                                        (VkDependencyFlags)0,
+                                                        0, (const vk::VkMemoryBarrier*)DE_NULL,
+                                                        1, &copyBufferBarrier,
+                                                        0, (const vk::VkImageMemoryBarrier*)DE_NULL);
+
        pipelineImageBarrier(VK_PIPELINE_STAGE_TRANSFER_BIT,                    // VkPipelineStageFlags         srcStageMask
                                                 VK_PIPELINE_STAGE_TRANSFER_BIT,                        // VkPipelineStageFlags         dstStageMask
                                                 VK_ACCESS_TRANSFER_WRITE_BIT,                          // VkAccessFlags                        srcAccessMask