Fix global priority tests
authorziga-lunarg <ziga@lunarg.com>
Mon, 27 Feb 2023 15:01:56 +0000 (16:01 +0100)
committerPiotr Byszewski <piotr.byszewski@mobica.com>
Fri, 10 Mar 2023 08:53:45 +0000 (08:53 +0000)
Extensions VK_KHR_global_priority and VK_EXT_global_priority behave
differently, this test was once changed to fix the test using the
KHR extension, but it broke the test using EXT

The structs from global priority query must only be used with the KHR
version of the test

Components: Vulkan

VK-GL-CTS issue: 3898

Affected tests:
dEQP-VK.api.device_init.create_device_global_priority*

Change-Id: I906d8f9d7593f49533eb73c8faac4920dc9ce0c8

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

index 7790ad3..12dab26 100644 (file)
@@ -916,18 +916,21 @@ tcu::TestStatus createDeviceWithGlobalPriorityTest (Context& context, bool useKh
        std::vector<VkQueueFamilyProperties2>                                   queueFamilyProperties2          (queueFamilyPropertyCount);
        std::vector<VkQueueFamilyGlobalPriorityPropertiesKHR>   globalPriorityProperties        (queueFamilyPropertyCount);
 
-       for (deUint32 ndx = 0; ndx < queueFamilyPropertyCount; ndx++)
+       if (useKhrGlobalPriority)
        {
-               globalPriorityProperties[ndx].sType     = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR;
-               globalPriorityProperties[ndx].pNext     = DE_NULL;
-               queueFamilyProperties2[ndx].sType       = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2;
-               queueFamilyProperties2[ndx].pNext       = &globalPriorityProperties[ndx];
-       }
+               for (deUint32 ndx = 0; ndx < queueFamilyPropertyCount; ndx++)
+               {
+                       globalPriorityProperties[ndx].sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR;
+                       globalPriorityProperties[ndx].pNext = DE_NULL;
+                       queueFamilyProperties2[ndx].sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2;
+                       queueFamilyProperties2[ndx].pNext = &globalPriorityProperties[ndx];
+               }
 
-       instanceDriver.getPhysicalDeviceQueueFamilyProperties2(physicalDevice, &queueFamilyPropertyCount, queueFamilyProperties2.data());
-       TCU_CHECK((size_t)queueFamilyPropertyCount == queueFamilyProperties2.size());
+               instanceDriver.getPhysicalDeviceQueueFamilyProperties2(physicalDevice, &queueFamilyPropertyCount, queueFamilyProperties2.data());
+               TCU_CHECK((size_t)queueFamilyPropertyCount == queueFamilyProperties2.size());
+       }
 
-       std::vector<const char*> enabledExtensions = { "VK_EXT_global_priority", "VK_EXT_global_priority_query" };
+       std::vector<const char*> enabledExtensions = { "VK_EXT_global_priority" };
        if (useKhrGlobalPriority)
                enabledExtensions = { "VK_KHR_global_priority" };
 
@@ -964,20 +967,20 @@ tcu::TestStatus createDeviceWithGlobalPriorityTest (Context& context, bool useKh
 
                const VkDeviceCreateInfo                deviceCreateInfo        =
                {
-                       VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,   //sType;
-                       &globalPriorityQueryFeatures,                   //pNext;
-                       (VkDeviceCreateFlags)0u,                                //flags;
-                       1,                                                                              //queueRecordCount;
-                       &queueCreateInfo,                                               //pRequestedQueues;
-                       0,                                                                              //layerCount;
-                       DE_NULL,                                                                //ppEnabledLayerNames;
-                       (deUint32)enabledExtensions.size(),             //extensionCount;
-                       enabledExtensions.data(),                               //ppEnabledExtensionNames;
-                       DE_NULL,                                                                //pEnabledFeatures;
+                       VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,                                                   //sType;
+                       useKhrGlobalPriority ? &globalPriorityQueryFeatures : DE_NULL,  //pNext;
+                       (VkDeviceCreateFlags)0u,                                                                                //flags;
+                       1,                                                                                                                              //queueRecordCount;
+                       &queueCreateInfo,                                                                                               //pRequestedQueues;
+                       0,                                                                                                                              //layerCount;
+                       DE_NULL,                                                                                                                //ppEnabledLayerNames;
+                       (deUint32)enabledExtensions.size(),                                                             //extensionCount;
+                       enabledExtensions.data(),                                                                               //ppEnabledExtensionNames;
+                       DE_NULL,                                                                                                                //pEnabledFeatures;
                };
 
                const bool              mayBeDenied                             = globalPriority > VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT;
-               const bool              mustFail                                = globalPriority < globalPriorityProperties[0].priorities[0] || globalPriority > globalPriorityProperties[0].priorities[globalPriorityProperties[0].priorityCount - 1];
+               const bool              mustFail                                = useKhrGlobalPriority && (globalPriority < globalPriorityProperties[0].priorities[0] || globalPriority > globalPriorityProperties[0].priorities[globalPriorityProperties[0].priorityCount - 1]);
 
                try
                {