Don't run _concurrent sync tests on 1 queue devices
authorGraeme Leese <gleese@broadcom.com>
Fri, 4 Jun 2021 16:23:28 +0000 (17:23 +0100)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Tue, 29 Jun 2021 07:10:52 +0000 (07:10 +0000)
The tests are testing synchronisation primitives in combination with
images marked as SHARING_MODE_CONCURRENT but this is not possible on
deivces that only support a single queue family. Because creating an
image with concurrent sharing requires two distinct queue families, it
is not supported on these devices.

Component: Vulkan
Affects: dEQP-VK.synchronization*.multi_queue.*_concurrent

Change-Id: I30a05bb085eef9e3087adfa12377a4909942f9c3

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

index 6e10bed..4aeaaf6 100644 (file)
@@ -831,6 +831,12 @@ public:
                        context.requireDeviceFunctionality("VK_KHR_synchronization2");
                if (m_syncPrimitive == SYNC_PRIMITIVE_TIMELINE_SEMAPHORE)
                        context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+
+               const InstanceInterface&                                        instance                                = context.getInstanceInterface();
+               const VkPhysicalDevice                                          physicalDevice                  = context.getPhysicalDevice();
+               const std::vector<VkQueueFamilyProperties>      queueFamilyProperties   = getPhysicalDeviceQueueFamilyProperties(instance, physicalDevice);
+               if (m_sharingMode == VK_SHARING_MODE_CONCURRENT && queueFamilyProperties.size() < 2)
+                       TCU_THROW(NotSupportedError, "Concurrent requires more than 1 queue family");
        }
 
        TestInstance* createInstance (Context& context) const