Fix Set/WaitEvent2KHR dependency flags setup
authorIulian Milas <iulian.milas@arm.com>
Wed, 5 Jan 2022 11:35:03 +0000 (12:35 +0100)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 3 Feb 2022 19:06:17 +0000 (19:06 +0000)
Vulkan specifies that the dependencyFlags member of pDependencyInfo
must be 0 in case of vkCmdSetEvent2KHR and vkCmdWaitEvents2KHR.
The conformance tests use a non zero default flag.

Components: Vulkan

Affects:

dEQP-VK.synchronization2.basic.event.*
dEQP-VK.synchronization2.op.single_queue.event.*

VK-GL-CTS Issue: 3462

Change-Id: Ic67fb77bcddf198fc77bbc9b3a25979d3e43678b

external/vulkancts/modules/vulkan/synchronization/vktSynchronizationBasicEventTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationSingleQueueTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationUtil.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationUtil.hpp

index d4a92d3..90ac6a2 100644 (file)
@@ -102,7 +102,7 @@ tcu::TestStatus deviceResetSetEventCase (Context& context, TestConfig config)
                VK_PIPELINE_STAGE_2_HOST_BIT_KHR,                                       // VkPipelineStageFlags2KHR                     dstStageMask
                VK_ACCESS_2_HOST_READ_BIT_KHR                                           // VkAccessFlags2KHR                            dstAccessMask
        };
-       VkDependencyInfoKHR                                     dependencyInfo                  = makeCommonDependencyInfo(&memoryBarrier2);
+       VkDependencyInfoKHR                                     dependencyInfo                  = makeCommonDependencyInfo(&memoryBarrier2, DE_NULL, DE_NULL, DE_TRUE);
 
        {
                SynchronizationWrapperPtr synchronizationWrapper = getSynchronizationWrapper(config.type, vk, DE_FALSE);
@@ -171,7 +171,7 @@ tcu::TestStatus singleSubmissionCase (Context& context, TestConfig config)
                                                                                                                                        makeCommonCommandBufferSubmitInfo(cmdBuffers[SET]),
                                                                                                                                        makeCommonCommandBufferSubmitInfo(cmdBuffers[WAIT])
                                                                                                                                };
-       VkDependencyInfoKHR                             dependencyInfo                          = makeCommonDependencyInfo();
+       VkDependencyInfoKHR                             dependencyInfo                          = makeCommonDependencyInfo(DE_NULL, DE_NULL, DE_NULL, DE_TRUE);
        SynchronizationWrapperPtr               synchronizationWrapper          = getSynchronizationWrapper(config.type, vk, DE_FALSE);
 
        synchronizationWrapper->addSubmitInfo(
@@ -224,8 +224,8 @@ tcu::TestStatus multiSubmissionCase(Context& context, TestConfig config)
        };
        VkDependencyInfoKHR                             dependencyInfos[] =
        {
-               makeCommonDependencyInfo(),
-               makeCommonDependencyInfo()
+               makeCommonDependencyInfo(DE_NULL, DE_NULL, DE_NULL, DE_TRUE),
+               makeCommonDependencyInfo(DE_NULL, DE_NULL, DE_NULL, DE_TRUE)
        };
 
        synchronizationWrapper[SET]->addSubmitInfo(
@@ -306,8 +306,8 @@ tcu::TestStatus secondaryCommandBufferCase (Context& context, TestConfig config)
        VkCommandBufferSubmitInfoKHR                    commandBufferSubmitInfo = makeCommonCommandBufferSubmitInfo(*primaryCmdBuffer);
        VkDependencyInfoKHR                                             dependencyInfos[]               =
                                                                                                                                        {
-                                                                                                                                               makeCommonDependencyInfo(),
-                                                                                                                                               makeCommonDependencyInfo()
+                                                                                                                                               makeCommonDependencyInfo(DE_NULL, DE_NULL, DE_NULL, DE_TRUE),
+                                                                                                                                               makeCommonDependencyInfo(DE_NULL, DE_NULL, DE_NULL, DE_TRUE)
                                                                                                                                        };
        SynchronizationWrapperPtr                               synchronizationWrapper  = getSynchronizationWrapper(config.type, vk, DE_FALSE);
 
index 0c7f157..3fb2b80 100644 (file)
@@ -109,7 +109,7 @@ public:
                                m_resource->getImage().handle,                                  // VkImage                                                      image
                                m_resource->getImage().subresourceRange                 // VkImageSubresourceRange                      subresourceRange
                        );
-                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, DE_NULL, &imageMemoryBarrier2);
+                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, DE_NULL, &imageMemoryBarrier2, DE_TRUE);
                        synchronizationWrapper->cmdSetEvent(*cmdBuffer, *event, &dependencyInfo);
                        synchronizationWrapper->cmdWaitEvents(*cmdBuffer, 1u, &event.get(), &dependencyInfo);
                }
@@ -124,7 +124,7 @@ public:
                                m_resource->getBuffer().offset,                                 // VkDeviceSize                                         offset
                                m_resource->getBuffer().size                                    // VkDeviceSize                                         size
                        );
-                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, &bufferMemoryBarrier2);
+                       VkDependencyInfoKHR dependencyInfo = makeCommonDependencyInfo(DE_NULL, &bufferMemoryBarrier2, DE_NULL, DE_TRUE);
                        synchronizationWrapper->cmdSetEvent(*cmdBuffer, *event, &dependencyInfo);
                        synchronizationWrapper->cmdWaitEvents(*cmdBuffer, 1u, &event.get(), &dependencyInfo);
                }
index e3f25c7..1751dc2 100644 (file)
@@ -1057,19 +1057,20 @@ VkSemaphoreSubmitInfoKHR makeCommonSemaphoreSubmitInfo(VkSemaphore semaphore, de
        };
 }
 
-VkDependencyInfoKHR makeCommonDependencyInfo(const VkMemoryBarrier2KHR* pMemoryBarrier, const VkBufferMemoryBarrier2KHR* pBufferMemoryBarrier, const VkImageMemoryBarrier2KHR* pImageMemoryBarrier)
+VkDependencyInfoKHR makeCommonDependencyInfo(const VkMemoryBarrier2KHR* pMemoryBarrier, const VkBufferMemoryBarrier2KHR* pBufferMemoryBarrier, const VkImageMemoryBarrier2KHR* pImageMemoryBarrier,
+                                                                                        bool eventDependency)
 {
        return
        {
-               VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR,          // VkStructureType                                      sType
-               DE_NULL,                                                                        // const void*                                          pNext
-               VK_DEPENDENCY_BY_REGION_BIT,                            // VkDependencyFlags                            dependencyFlags
-               !!pMemoryBarrier,                                                       // deUint32                                                     memoryBarrierCount
-               pMemoryBarrier,                                                         // const VkMemoryBarrier2KHR*           pMemoryBarriers
-               !!pBufferMemoryBarrier,                                         // deUint32                                                     bufferMemoryBarrierCount
-               pBufferMemoryBarrier,                                           // const VkBufferMemoryBarrier2KHR* pBufferMemoryBarriers
-               !!pImageMemoryBarrier,                                          // deUint32                                                     imageMemoryBarrierCount
-               pImageMemoryBarrier                                                     // const VkImageMemoryBarrier2KHR*      pImageMemoryBarriers
+               VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR,                          // VkStructureType                                      sType
+               DE_NULL,                                                                                        // const void*                                          pNext
+               eventDependency ? (VkDependencyFlags)0u : (VkDependencyFlags)VK_DEPENDENCY_BY_REGION_BIT,       // VkDependencyFlags                            dependencyFlags
+               !!pMemoryBarrier,                                                                       // deUint32                                                     memoryBarrierCount
+               pMemoryBarrier,                                                                         // const VkMemoryBarrier2KHR*           pMemoryBarriers
+               !!pBufferMemoryBarrier,                                                         // deUint32                                                     bufferMemoryBarrierCount
+               pBufferMemoryBarrier,                                                           // const VkBufferMemoryBarrier2KHR* pBufferMemoryBarriers
+               !!pImageMemoryBarrier,                                                          // deUint32                                                     imageMemoryBarrierCount
+               pImageMemoryBarrier                                                                     // const VkImageMemoryBarrier2KHR*      pImageMemoryBarriers
        };
 };
 
index 78c6ee4..c937cc7 100644 (file)
@@ -299,7 +299,7 @@ std::string                                                 getResourceName                                                         (const ResourceDescription& resource);
 bool                                                           isIndirectBuffer                                                        (const ResourceType type);
 vk::VkCommandBufferSubmitInfoKHR       makeCommonCommandBufferSubmitInfo                       (const vk::VkCommandBuffer cmdBuf);
 vk::VkSemaphoreSubmitInfoKHR           makeCommonSemaphoreSubmitInfo                           (vk::VkSemaphore semaphore, deUint64 value, vk::VkPipelineStageFlags2KHR stageMask);
-vk::VkDependencyInfoKHR                                makeCommonDependencyInfo                                        (const vk::VkMemoryBarrier2KHR* pMemoryBarrier = DE_NULL, const vk::VkBufferMemoryBarrier2KHR* pBufferMemoryBarrier = DE_NULL, const vk::VkImageMemoryBarrier2KHR* pImageMemoryBarrier = DE_NULL);
+vk::VkDependencyInfoKHR                                makeCommonDependencyInfo                                        (const vk::VkMemoryBarrier2KHR* pMemoryBarrier = DE_NULL, const vk::VkBufferMemoryBarrier2KHR* pBufferMemoryBarrier = DE_NULL, const vk::VkImageMemoryBarrier2KHR* pImageMemoryBarrier = DE_NULL, bool eventDependency = DE_FALSE);
 
 } // synchronization
 } // vkt