From 78bde8057e3caf6bb4e1742a9a75dabb94d04a9a Mon Sep 17 00:00:00 2001 From: Ari Suonpaa Date: Tue, 29 Mar 2022 11:56:44 +0300 Subject: [PATCH] Use associated physical device from custom instance 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 --- .../modules/vulkan/api/vktApiFeatureInfo.cpp | 40 +++++++++++++--------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp index 9343a70..7ae9ea5 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp @@ -4001,9 +4001,9 @@ bool checkExtension (vector& 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 -- 2.7.4