Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/Vulkan-Loader.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Giessen <charles@lunarg.com>2022-03-31 00:02:30 +0300
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>2022-04-05 04:17:07 +0300
commit469aead205e9a097b7c2846bd2de1fa73d37c85f (patch)
treeb7948cf0fdfec18be2091f3dfbc8997d05970bb0
parenta06dd5484ade7c4a5613e6b6e82b8c8f36b7c1fb (diff)
Allow meta layers to have newer component layers
Relax the requirement that all component layers in a meta layer must equal the version of the meta layer. This allows enabling layers that do not have the same API version as the meta layer.
-rw-r--r--loader/loader.c12
-rw-r--r--tests/loader_layer_tests.cpp10
2 files changed, 11 insertions, 11 deletions
diff --git a/loader/loader.c b/loader/loader.c
index 376067937..96c904fd5 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -111,9 +111,9 @@ loader_api_version loader_make_version(uint32_t version) {
loader_api_version loader_combine_version(uint32_t major, uint32_t minor, uint32_t patch) {
loader_api_version out_version;
- out_version.major = major;
- out_version.minor = minor;
- out_version.patch = patch;
+ out_version.major = (uint16_t)major;
+ out_version.minor = (uint16_t)minor;
+ out_version.patch = (uint16_t)patch;
return out_version;
}
@@ -1739,12 +1739,12 @@ static bool verify_meta_layer_component_layers(const struct loader_instance *ins
break;
}
- // Check the version of each layer, they need to be equal
+ // Check the version of each layer, they need to be at least MAJOR and MINOR
loader_api_version comp_prop_version = loader_make_version(comp_prop->info.specVersion);
- if (meta_layer_version.major != comp_prop_version.major || meta_layer_version.minor != comp_prop_version.minor) {
+ if (!loader_check_version_meets_required(meta_layer_version, comp_prop_version)) {
loader_log(inst, VULKAN_LOADER_WARN_BIT, 0,
"verify_meta_layer_component_layers: Meta-layer uses API version %d.%d, but component "
- "layer %d uses API version %d.%d. Skipping this layer.",
+ "layer %d has API version %d.%d that is lower. Skipping this layer.",
meta_layer_version.major, meta_layer_version.minor, comp_layer, comp_prop_version.major,
comp_prop_version.minor);
diff --git a/tests/loader_layer_tests.cpp b/tests/loader_layer_tests.cpp
index 7f2bd1e3c..c89a968fb 100644
--- a/tests/loader_layer_tests.cpp
+++ b/tests/loader_layer_tests.cpp
@@ -857,9 +857,9 @@ TEST(OverrideMetaLayer, OlderComponentLayerInMetaLayer) {
inst.create_info.set_api_version(1, 1, 0);
inst.CheckCreate();
VkPhysicalDevice phys_dev = inst.GetPhysDev();
- ASSERT_TRUE(
- env.debug_log.find("verify_meta_layer_component_layers: Meta-layer uses API version 1.1, but component layer 0 uses "
- "API version 1.0. Skipping this layer."));
+ EXPECT_TRUE(
+ env.debug_log.find("verify_meta_layer_component_layers: Meta-layer uses API version 1.1, but component layer 0 has API "
+ "version 1.0 that is lower. Skipping this layer."));
env.debug_log.clear();
uint32_t count = 0;
env.vulkan_functions.vkEnumerateDeviceLayerProperties(phys_dev, &count, nullptr);
@@ -877,8 +877,8 @@ TEST(OverrideMetaLayer, OlderComponentLayerInMetaLayer) {
inst.CheckCreate();
VkPhysicalDevice phys_dev = inst.GetPhysDev();
ASSERT_TRUE(
- env.debug_log.find("verify_meta_layer_component_layers: Meta-layer uses API version 1.1, but component layer 0 uses "
- "API version 1.0. Skipping this layer."));
+ env.debug_log.find("verify_meta_layer_component_layers: Meta-layer uses API version 1.1, but component layer 0 has API "
+ "version 1.0 that is lower. Skipping this layer."));
env.debug_log.clear();
uint32_t count = 0;
env.vulkan_functions.vkEnumerateDeviceLayerProperties(phys_dev, &count, nullptr);