Use associated physical device from custom instance
authorAri Suonpaa <ari.suonpaa@siru.fi>
Tue, 29 Mar 2022 08:56:44 +0000 (11:56 +0300)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 7 Apr 2022 17:47:58 +0000 (17:47 +0000)
Some of the API feature info tests created a custom instance,
but still used the default physical device. This is fixed by
choosing a physical device using the custom instance.

Comparison of VkPhysicalDeviceMemoryProperties was also
changed to only check the active memoryTypes and memoryHeaps
array elements instead of doing one large deMemCmp.

VK-GL-CTS Issue: 3590

Affects:

dEQP-VK.api.info.*

Components: Vulkan
Change-Id: I2378bcd1e97b7f85e533d34c5b5f6ac3e4fa9b93

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

index 9343a70..7ae9ea5 100644 (file)
@@ -4001,9 +4001,9 @@ bool checkExtension (vector<VkExtensionProperties>& properties, const char* exte
 
 tcu::TestStatus deviceFeatures2 (Context& context)
 {
-       const VkPhysicalDevice          physicalDevice  = context.getPhysicalDevice();
        const CustomInstance            instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&           vki                             (instance.getDriver());
+       const VkPhysicalDevice          physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        const int                                       count                   = 2u;
        TestLog&                                        log                             = context.getTestContext().getLog();
        VkPhysicalDeviceFeatures        coreFeatures;
@@ -4036,9 +4036,9 @@ tcu::TestStatus deviceFeatures2 (Context& context)
 
 tcu::TestStatus deviceProperties2 (Context& context)
 {
-       const VkPhysicalDevice                  physicalDevice  = context.getPhysicalDevice();
        const CustomInstance                    instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                   vki                             (instance.getDriver());
+       const VkPhysicalDevice                  physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        TestLog&                                                log                             = context.getTestContext().getLog();
        VkPhysicalDeviceProperties              coreProperties;
        VkPhysicalDeviceProperties2             extProperties;
@@ -4429,9 +4429,9 @@ string toString (const VkFormatProperties2& value)
 
 tcu::TestStatus deviceFormatProperties2 (Context& context)
 {
-       const VkPhysicalDevice                  physicalDevice  = context.getPhysicalDevice();
        const CustomInstance                    instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                   vki                             (instance.getDriver());
+       const VkPhysicalDevice                  physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        TestLog&                                                log                             = context.getTestContext().getLog();
 
        for (int formatNdx = 0; formatNdx < VK_CORE_FORMAT_LAST; ++formatNdx)
@@ -4452,10 +4452,10 @@ tcu::TestStatus deviceFormatProperties2 (Context& context)
                TCU_CHECK(extProperties.sType == VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2);
                TCU_CHECK(extProperties.pNext == DE_NULL);
 
-       if (deMemCmp(&coreProperties, &extProperties.formatProperties, sizeof(VkFormatProperties)) != 0)
-               TCU_FAIL("Mismatch between format properties reported by vkGetPhysicalDeviceFormatProperties and vkGetPhysicalDeviceFormatProperties2");
+               if (deMemCmp(&coreProperties, &extProperties.formatProperties, sizeof(VkFormatProperties)) != 0)
+                       TCU_FAIL("Mismatch between format properties reported by vkGetPhysicalDeviceFormatProperties and vkGetPhysicalDeviceFormatProperties2");
 
-       log << TestLog::Message << toString (extProperties) << TestLog::EndMessage;
+               log << TestLog::Message << toString (extProperties) << TestLog::EndMessage;
        }
 
        return tcu::TestStatus::pass("Querying device format properties succeeded");
@@ -4463,9 +4463,9 @@ tcu::TestStatus deviceFormatProperties2 (Context& context)
 
 tcu::TestStatus deviceQueueFamilyProperties2 (Context& context)
 {
-       const VkPhysicalDevice                  physicalDevice                  = context.getPhysicalDevice();
        const CustomInstance                    instance                                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                   vki                                             (instance.getDriver());
+       const VkPhysicalDevice                  physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        TestLog&                                                log                                             = context.getTestContext().getLog();
        deUint32                                                numCoreQueueFamilies    = ~0u;
        deUint32                                                numExtQueueFamilies             = ~0u;
@@ -4514,9 +4514,9 @@ tcu::TestStatus deviceQueueFamilyProperties2 (Context& context)
 
 tcu::TestStatus deviceMemoryProperties2 (Context& context)
 {
-       const VkPhysicalDevice                          physicalDevice  = context.getPhysicalDevice();
        const CustomInstance                            instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                           vki                             (instance.getDriver());
+       const VkPhysicalDevice                          physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        TestLog&                                                        log                             = context.getTestContext().getLog();
        VkPhysicalDeviceMemoryProperties        coreProperties;
        VkPhysicalDeviceMemoryProperties2       extProperties;
@@ -4533,8 +4533,16 @@ tcu::TestStatus deviceMemoryProperties2 (Context& context)
        TCU_CHECK(extProperties.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2);
        TCU_CHECK(extProperties.pNext == DE_NULL);
 
-       if (deMemCmp(&coreProperties, &extProperties.memoryProperties, sizeof(VkPhysicalDeviceMemoryProperties)) != 0)
-               TCU_FAIL("Mismatch between properties reported by vkGetPhysicalDeviceMemoryProperties and vkGetPhysicalDeviceMemoryProperties2");
+       if (coreProperties.memoryTypeCount != extProperties.memoryProperties.memoryTypeCount)
+               TCU_FAIL("Mismatch between memoryTypeCount reported by vkGetPhysicalDeviceMemoryProperties and vkGetPhysicalDeviceMemoryProperties2");
+       if (coreProperties.memoryHeapCount != extProperties.memoryProperties.memoryHeapCount)
+               TCU_FAIL("Mismatch between memoryHeapCount reported by vkGetPhysicalDeviceMemoryProperties and vkGetPhysicalDeviceMemoryProperties2");
+       for (deUint32 i = 0; i < coreProperties.memoryTypeCount; i++)
+               if (deMemCmp(&coreProperties.memoryTypes[i], &extProperties.memoryProperties.memoryTypes[i], sizeof(VkMemoryType)) != 0)
+                       TCU_FAIL("Mismatch between memoryTypes reported by vkGetPhysicalDeviceMemoryProperties and vkGetPhysicalDeviceMemoryProperties2");
+       for (deUint32 i = 0; i < coreProperties.memoryHeapCount; i++)
+               if (deMemCmp(&coreProperties.memoryHeaps[i], &extProperties.memoryProperties.memoryHeaps[i], sizeof(VkMemoryHeap)) != 0)
+                       TCU_FAIL("Mismatch between memoryHeaps reported by vkGetPhysicalDeviceMemoryProperties and vkGetPhysicalDeviceMemoryProperties2");
 
        log << TestLog::Message << extProperties << TestLog::EndMessage;
 
@@ -4655,9 +4663,9 @@ tcu::TestStatus deviceFeaturesVulkan12 (Context& context)
                { 0, 0 }
        };
        TestLog&                                                                                        log                                                                             = context.getTestContext().getLog();
-       const VkPhysicalDevice                                                          physicalDevice                                                  = context.getPhysicalDevice();
        const CustomInstance                                                            instance                                                                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                                                           vki                                                                             = instance.getDriver();
+       const VkPhysicalDevice                                                          physicalDevice                                                  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        const deUint32                                                                          vulkan11FeaturesBufferSize                              = sizeof(VkPhysicalDeviceVulkan11Features) + GUARD_SIZE;
        const deUint32                                                                          vulkan12FeaturesBufferSize                              = sizeof(VkPhysicalDeviceVulkan12Features) + GUARD_SIZE;
        VkPhysicalDeviceFeatures2                                                       extFeatures;
@@ -4817,9 +4825,9 @@ tcu::TestStatus devicePropertiesVulkan12 (Context& context)
                { 0, 0 }
        };
        TestLog&                                                                                log                                                                                     = context.getTestContext().getLog();
-       const VkPhysicalDevice                                                  physicalDevice                                                          = context.getPhysicalDevice();
        const CustomInstance                                                    instance                                                                        (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                                                   vki                                                                                     = instance.getDriver();
+       const VkPhysicalDevice                                                  physicalDevice                                                          (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
        const deUint32                                                                  vulkan11PropertiesBufferSize                            = sizeof(VkPhysicalDeviceVulkan11Properties) + GUARD_SIZE;
        const deUint32                                                                  vulkan12PropertiesBufferSize                            = sizeof(VkPhysicalDeviceVulkan12Properties) + GUARD_SIZE;
        VkPhysicalDeviceProperties2                                             extProperties;
@@ -4881,9 +4889,9 @@ tcu::TestStatus devicePropertiesVulkan12 (Context& context)
 tcu::TestStatus deviceFeatureExtensionsConsistencyVulkan12(Context& context)
 {
        TestLog&                                                                                        log                                                                             = context.getTestContext().getLog();
-       const VkPhysicalDevice                                                          physicalDevice                                                  = context.getPhysicalDevice();
        const CustomInstance                                                            instance                                                                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                                                           vki                                                                             = instance.getDriver();
+       const VkPhysicalDevice                                                          physicalDevice                                                  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
 
        if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
                TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
@@ -5094,9 +5102,9 @@ tcu::TestStatus deviceFeatureExtensionsConsistencyVulkan12(Context& context)
 tcu::TestStatus devicePropertyExtensionsConsistencyVulkan12(Context& context)
 {
        TestLog&                                                                                log                                                                                     = context.getTestContext().getLog();
-       const VkPhysicalDevice                                                  physicalDevice                                                          = context.getPhysicalDevice();
        const CustomInstance                                                    instance                                                                        (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                                                   vki                                                                                     = instance.getDriver();
+       const VkPhysicalDevice                                                  physicalDevice                                                          (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
 
        if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
                TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
@@ -5265,9 +5273,9 @@ tcu::TestStatus imageFormatProperties2 (Context& context, const VkFormat format,
 
        TestLog&                                                log                             = context.getTestContext().getLog();
 
-       const VkPhysicalDevice                  physicalDevice  = context.getPhysicalDevice();
        const CustomInstance                    instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                   vki                             (instance.getDriver());
+       const VkPhysicalDevice                  physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
 
        const VkImageCreateFlags                ycbcrFlags              = isYCbCrFormat(format) ? (VkImageCreateFlags)VK_IMAGE_CREATE_DISJOINT_BIT_KHR : (VkImageCreateFlags)0u;
        const VkImageUsageFlags                 allUsageFlags   = VK_IMAGE_USAGE_TRANSFER_SRC_BIT
@@ -5338,9 +5346,9 @@ tcu::TestStatus sparseImageFormatProperties2 (Context& context, const VkFormat f
 {
        TestLog&                                                log                             = context.getTestContext().getLog();
 
-       const VkPhysicalDevice                  physicalDevice  = context.getPhysicalDevice();
        const CustomInstance                    instance                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
        const InstanceDriver&                   vki                             (instance.getDriver());
+       const VkPhysicalDevice                  physicalDevice  (chooseDevice(vki, instance, context.getTestContext().getCommandLine()));
 
        const VkImageUsageFlags                 allUsageFlags   = VK_IMAGE_USAGE_TRANSFER_SRC_BIT
                                                                                                        | VK_IMAGE_USAGE_TRANSFER_DST_BIT