From a6304eeaf2ffe14abdab6595c789ad214fc14dfa Mon Sep 17 00:00:00 2001 From: Matthew Netsch Date: Thu, 11 Jun 2020 01:04:56 -0400 Subject: [PATCH] Fixes timeline semaphore test queues Components: Vulkan VK-GL-CTS Issue: 2416 Affects: dEQP-VK.synchronization.timeline_semaphore Change-Id: I3c101c869267c7bb747c53193195108df5996e70 --- .../synchronization/vktSynchronizationTimelineSemaphoreTests.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationTimelineSemaphoreTests.cpp b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationTimelineSemaphoreTests.cpp index cc2db0c..3b8f959 100644 --- a/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationTimelineSemaphoreTests.cpp +++ b/external/vulkancts/modules/vulkan/synchronization/vktSynchronizationTimelineSemaphoreTests.cpp @@ -1597,8 +1597,12 @@ public: for (deUint32 instanceIdx = 0; instanceIdx < queueFamilyProperties[familyIdx].queueCount && !added; instanceIdx++) { VkQueueFlags readOpQueueFlags = readOp->getQueueFlags(m_opContext); - if ((readOpQueueFlags & queueFamilyProperties[familyIdx].queueFlags) != readOpQueueFlags) - continue; + // If the readOpQueueFlags contain the transfer bit set then check if the queue supports graphics or compute operations before skipping this iteration. + // Because reporting transfer functionality is optional if a queue supports graphics or compute operations. + if (((readOpQueueFlags & queueFamilyProperties[familyIdx].queueFlags) != readOpQueueFlags) && + (((readOpQueueFlags & VK_QUEUE_TRANSFER_BIT) == 0) || + ((queueFamilyProperties[familyIdx].queueFlags & (VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT)) == 0))) + continue; // Add the read operation on the universal queue, it should be // submitted in order with regard to the write operation. -- 2.7.4