From a017db3c0d1fbf89f30253254d57fb869f57a430 Mon Sep 17 00:00:00 2001 From: Lars-Ivar Hesselberg Simonsen Date: Fri, 23 Apr 2021 12:04:44 +0200 Subject: [PATCH] Fix use of binary semaphore in signaled state Vulkan spec specifies that binary semaphore waits and signals should occur in discrete 1:1 pairs. This change ensures that the binary semaphore signaled by synchronizationWrapper[SECOND] is waited on before being used again, which resolves the corresponding validation layer error. In addition, the change fixes an issue where the second submission pair did not correctly swap semaphore info. Components: Vulkan Affects: dEQP-VK.synchronization.basic.binary_semaphore.multi_queue dEQP-VK.synchronization.basic.binary_semaphore.multi_queue_typed dEQP-VK.synchronization.basic.timeline_semaphore.multi_queue VK-GL-CTS Issue: 2910 Change-Id: Id2fb2211a43150e3acb5c07dd6c205c7a42296d5 --- .../vktSynchronizationBasicSemaphoreTests.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationBasicSemaphoreTests.cpp b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationBasicSemaphoreTests.cpp index 3f7b196..e324e20 100644 --- a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationBasicSemaphoreTests.cpp +++ b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationBasicSemaphoreTests.cpp @@ -522,12 +522,12 @@ tcu::TestStatus basicMultiQueueCase(Context& context, TestConfig config) isTimelineSemaphore ); synchronizationWrapper[SECOND]->addSubmitInfo( - 0u, // deUint32 waitSemaphoreInfoCount - DE_NULL, // const VkSemaphoreSubmitInfoKHR* pWaitSemaphoreInfos - 1u, // deUint32 commandBufferInfoCount - &commandBufferInfo[SECOND], // const VkCommandBufferSubmitInfoKHR* pCommandBufferInfos - 1u, // deUint32 signalSemaphoreInfoCount - &signalSemaphoreSubmitInfo[SECOND], // const VkSemaphoreSubmitInfoKHR* pSignalSemaphoreInfos + isTimelineSemaphore ? 0u : 1u, // deUint32 waitSemaphoreInfoCount + isTimelineSemaphore ? DE_NULL : &waitSemaphoreSubmitInfo, // const VkSemaphoreSubmitInfoKHR* pWaitSemaphoreInfos + 1u, // deUint32 commandBufferInfoCount + &commandBufferInfo[SECOND], // const VkCommandBufferSubmitInfoKHR* pCommandBufferInfos + 1u, // deUint32 signalSemaphoreInfoCount + &signalSemaphoreSubmitInfo[FIRST], // const VkSemaphoreSubmitInfoKHR* pSignalSemaphoreInfos DE_FALSE, isTimelineSemaphore ); -- 2.7.4