From: Charles Giessen Date: Fri, 28 Jan 2022 19:33:48 +0000 (-0700) Subject: Add wrong Variant tests X-Git-Tag: upstream/v1.3.207~54 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=393e23f91d21ce117c19e8c42e084477c3a25c7c;p=platform%2Fupstream%2FVulkan-Loader.git Add wrong Variant tests --- diff --git a/tests/framework/test_util.h b/tests/framework/test_util.h index 24508953..4622ecfe 100644 --- a/tests/framework/test_util.h +++ b/tests/framework/test_util.h @@ -463,8 +463,10 @@ bool string_eq(const char* a, const char* b) noexcept; bool string_eq(const char* a, const char* b, size_t len) noexcept; inline std::string version_to_string(uint32_t version) { - return std::to_string(VK_API_VERSION_MAJOR(version)) + "." + std::to_string(VK_API_VERSION_MINOR(version)) + "." + - std::to_string(VK_API_VERSION_PATCH(version)); + std::string out = std::to_string(VK_API_VERSION_MAJOR(version)) + "." + std::to_string(VK_API_VERSION_MINOR(version)) + "." + + std::to_string(VK_API_VERSION_PATCH(version)); + if (VK_API_VERSION_VARIANT(version) != 0) out += std::to_string(VK_API_VERSION_VARIANT(version)) + "." + out; + return out; } // Macro to ease the definition of variables with builder member functions diff --git a/tests/loader_version_tests.cpp b/tests/loader_version_tests.cpp index 0b7b7978..3fe35d2a 100644 --- a/tests/loader_version_tests.cpp +++ b/tests/loader_version_tests.cpp @@ -610,4 +610,41 @@ TEST(ApplicationInfoVersion, NonVulkanVariant) { ASSERT_TRUE(log.find( std::string("vkCreateInstance: The API Variant specified in pCreateInfo->pApplicationInfo.apiVersion is 1 instead of " "the expected value of 0."))); +} + +TEST(DriverManifest, NonVulkanVariant) { + FrameworkEnvironment env{}; + env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_6, VK_MAKE_API_VERSION(1, 1, 0, 0))); + env.get_test_icd().physical_devices.push_back({}); + + DebugUtilsLogger log; + InstWrapper inst{env.vulkan_functions}; + inst.create_info.set_api_version(VK_MAKE_API_VERSION(0, 1, 0, 0)); + FillDebugUtilsCreateDetails(inst.create_info, log); + inst.CheckCreate(VK_ERROR_INCOMPATIBLE_DRIVER); + ASSERT_TRUE(log.find("loader_icd_scan: Driver's ICD JSON ")); + // log prints the path to the file, don't look for it since it is hard to determine inside the test what the path should be. + ASSERT_TRUE(log.find("\'api_version\' field contains a non-zero variant value of 1. Skipping ICD JSON.")); +} + +TEST(LayerManifest, NonVulkanVariant) { + FrameworkEnvironment env{}; + env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_6, VK_MAKE_API_VERSION(0, 1, 0, 0))); + env.get_test_icd().physical_devices.push_back({}); + + const char* implicit_layer_name = "ImplicitTestLayer"; + env.add_implicit_layer(ManifestLayer{}.add_layer(ManifestLayer::LayerDescription{} + .set_name(implicit_layer_name) + .set_api_version(VK_MAKE_API_VERSION(1, 1, 0, 0)) + .set_lib_path(TEST_LAYER_PATH_EXPORT_VERSION_2) + .set_disable_environment("DISABLE_ME")), + "implicit_test_layer.json"); + + DebugUtilsLogger log; + InstWrapper inst{env.vulkan_functions}; + inst.create_info.set_api_version(VK_MAKE_API_VERSION(0, 1, 0, 0)); + FillDebugUtilsCreateDetails(inst.create_info, log); + inst.CheckCreate(); + ASSERT_TRUE(log.find(std::string("Layer ") + implicit_layer_name + + " has an \'api_version\' field which contains a non-zero variant value of 1. Skipping Layer.")); } \ No newline at end of file