From: Charles Giessen Date: Fri, 10 Sep 2021 19:41:09 +0000 (-0600) Subject: Test when there are no devices or device extensions X-Git-Tag: upstream/v1.3.207~34 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fcdc9ae5ac49b1d8899cc29a4f0aa01e7165614d;p=platform%2Fupstream%2FVulkan-Loader.git Test when there are no devices or device extensions Adds 2 tests: * ZeroPhysicalDevices - Return VK_ERROR_INITIALIZATION_FAILED if the driver has zero physical devices. * ZeroPhyiscalDeviceExtensions - Return VK_SUCCESS if no physical device extensions are found. --- diff --git a/tests/loader_regression_tests.cpp b/tests/loader_regression_tests.cpp index f8583ef8..1b943891 100644 --- a/tests/loader_regression_tests.cpp +++ b/tests/loader_regression_tests.cpp @@ -347,6 +347,24 @@ TEST_F(EnumerateDeviceExtensionProperties, PropertyCountLessThanAvailable) { ASSERT_TRUE(device_extensions[0].specVersion == enumerated_device_exts[0].specVersion); } +TEST_F(EnumerateDeviceExtensionProperties, ZeroPhysicalDeviceExtensions) { + env->get_test_icd().add_physical_device({}); + InstWrapper inst{env->vulkan_functions}; + inst.create_info.set_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); + inst.CheckCreate(VK_SUCCESS); + + auto phys_dev = inst.GetPhysDev(); + DeviceWrapper dev{inst}; + dev.CheckCreate(phys_dev); + + uint32_t ext_count = 0; + ASSERT_EQ(VK_SUCCESS, env->vulkan_functions.vkEnumerateDeviceExtensionProperties(phys_dev, nullptr, &ext_count, nullptr)); + ASSERT_EQ(ext_count, 0); + VkExtensionProperties ext_props{}; + ASSERT_EQ(VK_SUCCESS, env->vulkan_functions.vkEnumerateDeviceExtensionProperties(phys_dev, nullptr, &ext_count, &ext_props)); + ASSERT_EQ(ext_count, 0); +} + TEST_F(EnumeratePhysicalDevices, OneCall) { auto& driver = env->get_test_icd().set_min_icd_interface_version(5); @@ -453,6 +471,16 @@ TEST_F(EnumeratePhysicalDevices, TwoCallIncomplete) { ASSERT_EQ(physical_count, 1); } +TEST_F(EnumeratePhysicalDevices, ZeroPhysicalDevices) { + InstWrapper inst{env->vulkan_functions}; + inst.create_info.set_api_version(VK_MAKE_API_VERSION(0, 1, 1, 0)); + inst.CheckCreate(VK_SUCCESS); + + uint32_t count = 0; + ASSERT_EQ(VK_ERROR_INITIALIZATION_FAILED, env->vulkan_functions.vkEnumeratePhysicalDevices(inst, &count, nullptr)); + ASSERT_EQ(count, 0); +} + TEST_F(EnumeratePhysicalDevices, ZeroPhysicalDevicesAfterCreateInstance) { auto& driver = env->get_test_icd().set_min_icd_interface_version(5); InstWrapper inst{env->vulkan_functions}; @@ -1569,4 +1597,4 @@ TEST(SortedPhysicalDevices, DeviceGroupsSortedEnabled) { } } #endif -#endif // __linux__ || __FreeBSD__ +#endif // __linux__ || __FreeBSD__ \ No newline at end of file