const VkPhysicalDeviceFeatures deviceFeatures = deviceFeatures2.features;
const vector<VkQueueFamilyProperties> queueFamilyProperties = getPhysicalDeviceQueueFamilyProperties(instanceDriver, physicalDevice);
int numErrors = 0;
-#ifdef CTS_USES_VULKANSC
- VkDeviceObjectReservationCreateInfo memReservationStatMax = context.getResourceInterface()->getStatMax();
-#endif // CTS_USES_VULKANSC
- bool isSubProcess = context.getTestContext().getCommandLine().isSubProcess();
// Test features listed in VkPhysicalDeviceFeatures structure
{
}
}
- VkPhysicalDeviceFeatures emptyDeviceFeatures;
- deMemset(&emptyDeviceFeatures, 0, sizeof(emptyDeviceFeatures));
-
- // Only non-core extensions will be used when creating the device.
- vector<const char*> coreExtensions;
- getCoreDeviceExtensions(context.getUsedApiVersion(), coreExtensions);
- vector<string> nonCoreExtensions(removeExtensions(context.getDeviceExtensions(), coreExtensions));
-
- vector<const char*> extensionNames;
- extensionNames.reserve(nonCoreExtensions.size());
- for (const string& extension : nonCoreExtensions)
- extensionNames.push_back(extension.c_str());
-
- // Test features provided by extensions and Vulkan 1.1 and 1.2.
-
- #include "vkDeviceFeatureTest.inl"
-
- if (numErrors > 1)
- return tcu::TestStatus(resultCollector.getResult(), "Enabling " + de::toString(numErrors) + " unsupported features didn't return VK_ERROR_FEATURE_NOT_PRESENT.");
- else
- return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage());
+ return tcu::TestStatus(resultCollector.getResult(), resultCollector.getMessage());
}
+#include "vkDeviceFeatureTest.inl"
+
tcu::TestStatus createDeviceQueue2Test (Context& context)
{
if (!context.contextSupports(vk::ApiVersion(0, 1, 1, 0)))
} // anonymous
+static inline void addFunctionCaseInNewSubgroup (
+ tcu::TestContext& testCtx,
+ tcu::TestCaseGroup* group,
+ const std::string& subgroupName,
+ const std::string& subgroupDescription,
+ FunctionInstance0::Function testFunc)
+{
+ de::MovePtr<tcu::TestCaseGroup> subgroup(new tcu::TestCaseGroup(testCtx, subgroupName.c_str(), subgroupDescription.c_str()));
+ addFunctionCase(subgroup.get(), "basic", "", testFunc);
+ group->addChild(subgroup.release());
+}
+
+static inline void addFunctionCaseInNewSubgroup (
+ tcu::TestContext& testCtx,
+ tcu::TestCaseGroup* group,
+ const std::string& subgroupName,
+ const std::string& subgroupDescription,
+ FunctionSupport0::Function checkSupport,
+ FunctionInstance0::Function testFunc)
+{
+ de::MovePtr<tcu::TestCaseGroup> subgroup(new tcu::TestCaseGroup(testCtx, subgroupName.c_str(), subgroupDescription.c_str()));
+ addFunctionCase(subgroup.get(), "basic", "", checkSupport, testFunc);
+ group->addChild(subgroup.release());
+}
+
+template<typename Arg0>
+static void addFunctionCaseInNewSubgroup (
+ tcu::TestContext& testCtx,
+ tcu::TestCaseGroup* group,
+ const std::string& subgroupName,
+ const std::string& subgroupDescription,
+ typename FunctionSupport1<Arg0>::Function checkSupport,
+ typename FunctionInstance1<Arg0>::Function testFunc,
+ Arg0 arg0)
+{
+ de::MovePtr<tcu::TestCaseGroup> subgroup(new tcu::TestCaseGroup(testCtx, subgroupName.c_str(), subgroupDescription.c_str()));
+ subgroup->addChild(createFunctionCase<Arg0>(testCtx, tcu::NODETYPE_SELF_VALIDATE, "basic", "", checkSupport, testFunc, arg0));
+ group->addChild(subgroup.release());
+}
+
tcu::TestCaseGroup* createDeviceInitializationTests (tcu::TestContext& testCtx)
{
de::MovePtr<tcu::TestCaseGroup> deviceInitializationTests (new tcu::TestCaseGroup(testCtx, "device_init", "Device Initialization Tests"));
- addFunctionCase(deviceInitializationTests.get(), "create_instance_name_version", "", createInstanceTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_instance_name_version", "", createInstanceTest);
#ifndef CTS_USES_VULKANSC
- addFunctionCase(deviceInitializationTests.get(), "create_instance_invalid_api_version", "", createInstanceWithInvalidApiVersionTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_instance_invalid_api_version", "", createInstanceWithInvalidApiVersionTest);
#endif // CTS_USES_VULKANSC
- addFunctionCase(deviceInitializationTests.get(), "create_instance_null_appinfo", "", createInstanceWithNullApplicationInfoTest);
- addFunctionCase(deviceInitializationTests.get(), "create_instance_unsupported_extensions", "", createInstanceWithUnsupportedExtensionsTest);
- addFunctionCase(deviceInitializationTests.get(), "create_instance_extension_name_abuse", "", createInstanceWithExtensionNameAbuseTest);
- addFunctionCase(deviceInitializationTests.get(), "create_instance_layer_name_abuse", "", createInstanceWithLayerNameAbuseTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_instance_null_appinfo", "", createInstanceWithNullApplicationInfoTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_instance_unsupported_extensions", "", createInstanceWithUnsupportedExtensionsTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_instance_extension_name_abuse", "", createInstanceWithExtensionNameAbuseTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_instance_layer_name_abuse", "", createInstanceWithLayerNameAbuseTest);
#ifndef CTS_USES_VULKANSC
- addFunctionCase(deviceInitializationTests.get(), "enumerate_devices_alloc_leak", "", enumerateDevicesAllocLeakTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "enumerate_devices_alloc_leak", "", enumerateDevicesAllocLeakTest);
#endif // CTS_USES_VULKANSC
- addFunctionCase(deviceInitializationTests.get(), "create_device", "", createDeviceTest);
- addFunctionCase(deviceInitializationTests.get(), "create_multiple_devices", "", createMultipleDevicesTest);
- addFunctionCase(deviceInitializationTests.get(), "create_device_unsupported_extensions", "", createDeviceWithUnsupportedExtensionsTest);
- addFunctionCase(deviceInitializationTests.get(), "create_device_various_queue_counts", "", createDeviceWithVariousQueueCountsTest);
- addFunctionCase(deviceInitializationTests.get(), "create_device_global_priority", "", checkGlobalPrioritySupport, createDeviceWithGlobalPriorityTest, false);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device", "", createDeviceTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_multiple_devices", "", createMultipleDevicesTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_unsupported_extensions", "", createDeviceWithUnsupportedExtensionsTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_various_queue_counts", "", createDeviceWithVariousQueueCountsTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_global_priority", "", checkGlobalPrioritySupport, createDeviceWithGlobalPriorityTest, false);
#ifndef CTS_USES_VULKANSC
- addFunctionCase(deviceInitializationTests.get(), "create_device_global_priority_khr", "", checkGlobalPrioritySupport, createDeviceWithGlobalPriorityTest, true);
- addFunctionCase(deviceInitializationTests.get(), "create_device_global_priority_query", "", checkGlobalPriorityQuerySupport, createDeviceWithQueriedGlobalPriorityTest, false);
- addFunctionCase(deviceInitializationTests.get(), "create_device_global_priority_query_khr", "", checkGlobalPriorityQuerySupport, createDeviceWithQueriedGlobalPriorityTest, true);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_global_priority_khr", "", checkGlobalPrioritySupport, createDeviceWithGlobalPriorityTest, true);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_global_priority_query", "", checkGlobalPriorityQuerySupport, createDeviceWithQueriedGlobalPriorityTest, false);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_global_priority_query_khr", "", checkGlobalPriorityQuerySupport, createDeviceWithQueriedGlobalPriorityTest, true);
#endif // CTS_USES_VULKANSC
- addFunctionCase(deviceInitializationTests.get(), "create_device_features2", "", createDeviceFeatures2Test);
- addFunctionCase(deviceInitializationTests.get(), "create_device_unsupported_features", "", createDeviceWithUnsupportedFeaturesTest);
- addFunctionCase(deviceInitializationTests.get(), "create_device_queue2", "", createDeviceQueue2Test);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_features2", "", createDeviceFeatures2Test);
+ {
+ de::MovePtr<tcu::TestCaseGroup> subgroup(new tcu::TestCaseGroup(testCtx, "create_device_unsupported_features", ""));
+ addFunctionCase(subgroup.get(), "core", "", createDeviceWithUnsupportedFeaturesTest);
+ addSeparateUnsupportedFeatureTests(subgroup.get());
+ deviceInitializationTests->addChild(subgroup.release());
+ }
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_queue2", "", createDeviceQueue2Test);
#ifndef CTS_USES_VULKANSC
// Removed because in main process this test does not really create any instance nor device and functions creating it always return VK_SUCCESS
- addFunctionCase(deviceInitializationTests.get(), "create_instance_device_intentional_alloc_fail", "", createInstanceDeviceIntentionalAllocFail);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_instance_device_intentional_alloc_fail", "", createInstanceDeviceIntentionalAllocFail);
#endif // CTS_USES_VULKANSC
// Tests using a single Queue Family when creating a device.
- addFunctionCase(deviceInitializationTests.get(), "create_device_queue2_two_queues", "", checkProtectedMemorySupport, createDeviceQueue2WithTwoQueuesSmokeTest);
- addFunctionCase(deviceInitializationTests.get(), "create_device_queue2_all_protected", "", checkProtectedMemorySupport, createDeviceQueue2WithAllProtectedQueues);
- addFunctionCase(deviceInitializationTests.get(), "create_device_queue2_all_unprotected", "", checkProtectedMemorySupport, createDeviceQueue2WithAllUnprotectedQueues);
- addFunctionCase(deviceInitializationTests.get(), "create_device_queue2_split", "", checkProtectedMemorySupport, createDeviceQueue2WithNProtectedAndMUnprotectedQueues);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_queue2_two_queues", "", checkProtectedMemorySupport, createDeviceQueue2WithTwoQueuesSmokeTest);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_queue2_all_protected", "", checkProtectedMemorySupport, createDeviceQueue2WithAllProtectedQueues);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_queue2_all_unprotected", "", checkProtectedMemorySupport, createDeviceQueue2WithAllUnprotectedQueues);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_queue2_split", "", checkProtectedMemorySupport, createDeviceQueue2WithNProtectedAndMUnprotectedQueues);
// Tests using multiple Queue Families when creating a device.
- addFunctionCase(deviceInitializationTests.get(), "create_device_queue2_all_families", "", checkProtectedMemorySupport, createDeviceQueue2WithAllFamilies);
- addFunctionCase(deviceInitializationTests.get(), "create_device_queue2_all_families_protected", "", checkProtectedMemorySupport, createDeviceQueue2WithAllFamiliesProtected);
- addFunctionCase(deviceInitializationTests.get(), "create_device_queue2_all_combinations", "", checkProtectedMemorySupport, createDeviceQueue2WithMultipleQueueCombinations);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_queue2_all_families", "", checkProtectedMemorySupport, createDeviceQueue2WithAllFamilies);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_queue2_all_families_protected", "", checkProtectedMemorySupport, createDeviceQueue2WithAllFamiliesProtected);
+ addFunctionCaseInNewSubgroup(testCtx, deviceInitializationTests.get(), "create_device_queue2_all_combinations", "", checkProtectedMemorySupport, createDeviceQueue2WithMultipleQueueCombinations);
return deviceInitializationTests.release();
}