Add check comparing conformanceVersion to API version
authorSlawomir Cygan <slawomir.cygan@intel.com>
Thu, 7 Nov 2019 16:27:16 +0000 (17:27 +0100)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Wed, 20 Nov 2019 08:35:18 +0000 (03:35 -0500)
Fail if reported conformanceVersion is older than API version.

Components: Vulkan

VK-GL-CTS Issue: 2091

Change-Id: If2a3337a11cc04c777ab28ea890eace994ced76e
Affects: dEQP-VK.api.driver_properties.conformance_version

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

index 496369a..d405497 100644 (file)
@@ -133,8 +133,18 @@ void testInfoZeroTerminated (const VkPhysicalDeviceDriverPropertiesKHR& deviceDr
                TCU_FAIL("Driver info is not a null-terminated string");
 }
 
-void testVersion (const VkPhysicalDeviceDriverPropertiesKHR& deviceDriverProperties)
+void testVersion (const VkPhysicalDeviceDriverPropertiesKHR& deviceDriverProperties, deUint32 usedApiVersion)
 {
+       const deUint32 apiMajorVersion = VK_VERSION_MAJOR(usedApiVersion);
+       const deUint32 apiMinorVersion = VK_VERSION_MINOR(usedApiVersion);
+
+       if (deviceDriverProperties.conformanceVersion.major < apiMajorVersion ||
+               (deviceDriverProperties.conformanceVersion.major == apiMajorVersion &&
+                deviceDriverProperties.conformanceVersion.minor < apiMinorVersion))
+       {
+               TCU_FAIL("Wrong driver conformance version (older than used API version)");
+       }
+
        for (const VkConformanceVersionKHR* pConformanceVersion  = knownConformanceVersions;
                                                                                pConformanceVersion != DE_ARRAY_END(knownConformanceVersions);
                                                                          ++pConformanceVersion)
@@ -143,7 +153,7 @@ void testVersion (const VkPhysicalDeviceDriverPropertiesKHR& deviceDriverPropert
                        return;
        }
 
-       TCU_FAIL("Wrong driver conformance version");
+       TCU_FAIL("Wrong driver conformance version (not known)");
 }
 
 tcu::TestStatus testQueryProperties (Context& context, const TestType testType)
@@ -167,11 +177,11 @@ tcu::TestStatus testQueryProperties (Context& context, const TestType testType)
        // Verify the returned values
        switch (testType)
        {
-               case TEST_TYPE_DRIVER_ID_MATCH:                 testDriverMatch                 (deviceDriverProperties);       break;
-               case TEST_TYPE_NAME_IS_NOT_EMPTY:               testNameIsNotEmpty              (deviceDriverProperties);       break;
-               case TEST_TYPE_NAME_ZERO_TERMINATED:    testNameZeroTerminated  (deviceDriverProperties);       break;
-               case TEST_TYPE_INFO_ZERO_TERMINATED:    testInfoZeroTerminated  (deviceDriverProperties);       break;
-               case TEST_TYPE_VERSION:                                 testVersion                             (deviceDriverProperties);       break;
+               case TEST_TYPE_DRIVER_ID_MATCH:                 testDriverMatch                 (deviceDriverProperties);                                                               break;
+               case TEST_TYPE_NAME_IS_NOT_EMPTY:               testNameIsNotEmpty              (deviceDriverProperties);                                                               break;
+               case TEST_TYPE_NAME_ZERO_TERMINATED:    testNameZeroTerminated  (deviceDriverProperties);                                                               break;
+               case TEST_TYPE_INFO_ZERO_TERMINATED:    testInfoZeroTerminated  (deviceDriverProperties);                                                               break;
+               case TEST_TYPE_VERSION:                                 testVersion                             (deviceDriverProperties, context.getUsedApiVersion());  break;
                default:                                                                TCU_THROW(InternalError, "Unknown test type specified");
        }