Fix device creation in sync multi queue tests
authorAlexander Galazin <alexander.galazin@arm.com>
Tue, 3 Oct 2017 20:11:30 +0000 (22:11 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Wed, 4 Oct 2017 19:09:53 +0000 (15:09 -0400)
context.getDeviceExtensions() now returns all extension
promoted to core. This may not be true for some implementations.
While creating a new device need to enumerate exactly the extensions
supported by an implementation.

VK-GL-CTS issue: 734

Components: Vulkan

Affects:
dEQP-VK.synchronization.op.multi_queue.*

Change-Id: If943692748d7813a88f8f4eb1bc4739fd43370d4

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

index 2810100..d9a5b5e 100644 (file)
@@ -118,24 +118,24 @@ public:
                }
 
                {
-                       const std::vector<std::string>& deviceExtensions        = context.getDeviceExtensions();
-                       std::vector<const char*>                charDevExtensions;
+                       const std::vector<VkExtensionProperties>        deviceExtensions        = enumerateDeviceExtensionProperties(context.getInstanceInterface(), context.getPhysicalDevice(), DE_NULL);
+                       std::vector<const char*>                                        charDevExtensions;
 
-                       for (size_t ndx = 0; ndx < deviceExtensions.size(); ++ndx)
-                               charDevExtensions.push_back(deviceExtensions[ndx].c_str());
+                       for (size_t ndx = 0; ndx < deviceExtensions.size(); ndx++)
+                               charDevExtensions.push_back(deviceExtensions[ndx].extensionName);
 
                        const VkDeviceCreateInfo                deviceInfo              =
                        {
-                               VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,                   //VkStructureType                                       sType;
-                               DE_NULL,                                                                                //const void*                                           pNext;
-                               0u,                                                                                             //VkDeviceCreateFlags                           flags;
-                               static_cast<deUint32>(queueInfos.size()),               //deUint32                                                      queueCreateInfoCount;
-                               &queueInfos[0],                                                                 //const VkDeviceQueueCreateInfo*        pQueueCreateInfos;
-                               0u,                                                                                             //deUint32                                                      enabledLayerCount;
-                               DE_NULL,                                                                                //const char* const*                            ppEnabledLayerNames;
-                               static_cast<deUint32>(deviceExtensions.size()), //deUint32                                                      enabledExtensionCount;
-                               &charDevExtensions[0],                                                  //const char* const*                            ppEnabledExtensionNames;
-                               &context.getDeviceFeatures()                                    //const VkPhysicalDeviceFeatures*       pEnabledFeatures;
+                               VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,                                                   //VkStructureType                                       sType;
+                               DE_NULL,                                                                                                                //const void*                                           pNext;
+                               0u,                                                                                                                             //VkDeviceCreateFlags                           flags;
+                               static_cast<deUint32>(queueInfos.size()),                                               //deUint32                                                      queueCreateInfoCount;
+                               &queueInfos[0],                                                                                                 //const VkDeviceQueueCreateInfo*        pQueueCreateInfos;
+                               0u,                                                                                                                             //deUint32                                                      enabledLayerCount;
+                               DE_NULL,                                                                                                                //const char* const*                            ppEnabledLayerNames;
+                               static_cast<deUint32>(deviceExtensions.size()),                                 //deUint32                                                      enabledExtensionCount;
+                               charDevExtensions.empty() ? DE_NULL : &charDevExtensions[0],    //const char* const*                            ppEnabledExtensionNames;
+                               &context.getDeviceFeatures()                                                                    //const VkPhysicalDeviceFeatures*       pEnabledFeatures;
                        };
 
                        m_logicalDevice = createDevice(instance, physicalDevice, &deviceInfo);