Skip to content

Commit 5701cde

Browse files
Add Implicit Layer Enable Env Var tessettings file test
1 parent 8a1139b commit 5701cde

File tree

1 file changed

+117
-0
lines changed

1 file changed

+117
-0
lines changed

tests/loader_settings_tests.cpp

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,123 @@ TEST(SettingsFile, MismatchedLayerNameAndManifestPath) {
730730
ASSERT_NO_FATAL_FAILURE(inst.GetActiveLayers(inst.GetPhysDev(), 0));
731731
}
732732

733+
// Settings file should take precedence over the meta layer, if present
734+
TEST(SettingsFile, ImplicitLayerWithEnableEnvironment) {
735+
FrameworkEnvironment env{};
736+
env.add_icd(TestICDDetails(TEST_ICD_PATH_VERSION_2)).add_physical_device({});
737+
738+
const char* explicit_layer_1 = "VK_LAYER_Regular_TestLayer";
739+
env.add_explicit_layer(
740+
ManifestLayer{}.add_layer(
741+
ManifestLayer::LayerDescription{}.set_name(explicit_layer_1).set_lib_path(TEST_LAYER_PATH_EXPORT_VERSION_2)),
742+
"explicit_test_layer1.json");
743+
744+
const char* implicit_layer_1 = "VK_LAYER_RegularImplicit_TestLayer";
745+
env.add_implicit_layer(ManifestLayer{}.add_layer(ManifestLayer::LayerDescription{}
746+
.set_name(implicit_layer_1)
747+
.set_lib_path(TEST_LAYER_PATH_EXPORT_VERSION_2)
748+
.set_disable_environment("AndISaidHey")
749+
.set_enable_environment("WhatsGoingOn")),
750+
"implicit_layer1.json");
751+
752+
const char* explicit_layer_2 = "VK_LAYER_Regular_TestLayer1";
753+
env.add_explicit_layer(TestLayerDetails(
754+
ManifestLayer{}.add_layer(
755+
ManifestLayer::LayerDescription{}.set_name(explicit_layer_2).set_lib_path(TEST_LAYER_PATH_EXPORT_VERSION_2)),
756+
"explicit_test_layer2.json"));
757+
758+
const char* implicit_layer_2 = "VK_LAYER_RegularImplicit_TestLayer2";
759+
env.add_explicit_layer(TestLayerDetails(ManifestLayer{}.add_layer(ManifestLayer::LayerDescription{}
760+
.set_name(implicit_layer_2)
761+
.set_lib_path(TEST_LAYER_PATH_EXPORT_VERSION_2)
762+
.set_disable_environment("HeyHeyHeyyaya")
763+
.set_enable_environment("HeyHeyHeyhey")),
764+
"implicit_layer2.json"));
765+
const char* explicit_layer_3 = "VK_LAYER_Regular_TestLayer3";
766+
env.add_explicit_layer(TestLayerDetails(
767+
ManifestLayer{}.add_layer(
768+
ManifestLayer::LayerDescription{}.set_name(explicit_layer_3).set_lib_path(TEST_LAYER_PATH_EXPORT_VERSION_2)),
769+
"explicit_test_layer3.json"));
770+
env.update_loader_settings(env.loader_settings.set_file_format_version({1, 0, 0}).add_app_specific_setting(
771+
AppSpecificSettings{}
772+
.add_stderr_log_filter("all")
773+
.add_layer_configuration(LoaderSettingsLayerConfiguration{}
774+
.set_name(explicit_layer_1)
775+
.set_path(env.get_shimmed_layer_manifest_path(0))
776+
.set_control("auto")
777+
.set_treat_as_implicit_manifest(false))
778+
.add_layer_configuration(LoaderSettingsLayerConfiguration{}.set_control("unordered_layer_location"))
779+
.add_layer_configuration(LoaderSettingsLayerConfiguration{}
780+
.set_name(implicit_layer_1)
781+
.set_path(env.get_shimmed_layer_manifest_path(1))
782+
.set_control("auto")
783+
.set_treat_as_implicit_manifest(true))
784+
.add_layer_configuration(LoaderSettingsLayerConfiguration{}
785+
.set_name(explicit_layer_2)
786+
.set_path(env.get_shimmed_layer_manifest_path(2))
787+
.set_control("auto")
788+
.set_treat_as_implicit_manifest(false))
789+
.add_layer_configuration(LoaderSettingsLayerConfiguration{}
790+
.set_name(implicit_layer_2)
791+
.set_path(env.get_shimmed_layer_manifest_path(3))
792+
.set_control("auto")
793+
.set_treat_as_implicit_manifest(true))
794+
.add_layer_configuration(LoaderSettingsLayerConfiguration{}
795+
.set_name(explicit_layer_3)
796+
.set_path(env.get_shimmed_layer_manifest_path(4))
797+
.set_control("on")
798+
.set_treat_as_implicit_manifest(false))));
799+
{
800+
auto layer_props = env.GetLayerProperties(5);
801+
ASSERT_TRUE(string_eq(layer_props.at(0).layerName, explicit_layer_1));
802+
ASSERT_TRUE(string_eq(layer_props.at(1).layerName, implicit_layer_1));
803+
ASSERT_TRUE(string_eq(layer_props.at(2).layerName, explicit_layer_2));
804+
ASSERT_TRUE(string_eq(layer_props.at(3).layerName, implicit_layer_2));
805+
ASSERT_TRUE(string_eq(layer_props.at(4).layerName, explicit_layer_3));
806+
807+
InstWrapper inst{env.vulkan_functions};
808+
FillDebugUtilsCreateDetails(inst.create_info, env.debug_log);
809+
inst.CheckCreate();
810+
ASSERT_TRUE(env.debug_log.find(get_settings_location_log_message(env)));
811+
auto layers = inst.GetActiveLayers(inst.GetPhysDev(), 1);
812+
ASSERT_TRUE(string_eq(layers.at(0).layerName, explicit_layer_3));
813+
}
814+
{
815+
EnvVarWrapper enable_meta_layer{"WhatsGoingOn", "1"};
816+
auto layer_props = env.GetLayerProperties(5);
817+
ASSERT_TRUE(string_eq(layer_props.at(0).layerName, explicit_layer_1));
818+
ASSERT_TRUE(string_eq(layer_props.at(1).layerName, implicit_layer_1));
819+
ASSERT_TRUE(string_eq(layer_props.at(2).layerName, explicit_layer_2));
820+
ASSERT_TRUE(string_eq(layer_props.at(3).layerName, implicit_layer_2));
821+
ASSERT_TRUE(string_eq(layer_props.at(4).layerName, explicit_layer_3));
822+
823+
InstWrapper inst{env.vulkan_functions};
824+
FillDebugUtilsCreateDetails(inst.create_info, env.debug_log);
825+
inst.CheckCreate();
826+
ASSERT_TRUE(env.debug_log.find(get_settings_location_log_message(env)));
827+
auto layers = inst.GetActiveLayers(inst.GetPhysDev(), 2);
828+
ASSERT_TRUE(string_eq(layers.at(0).layerName, implicit_layer_1));
829+
ASSERT_TRUE(string_eq(layers.at(1).layerName, explicit_layer_3));
830+
}
831+
{
832+
EnvVarWrapper enable_meta_layer{"HeyHeyHeyhey", "1"};
833+
auto layer_props = env.GetLayerProperties(5);
834+
ASSERT_TRUE(string_eq(layer_props.at(0).layerName, explicit_layer_1));
835+
ASSERT_TRUE(string_eq(layer_props.at(1).layerName, implicit_layer_1));
836+
ASSERT_TRUE(string_eq(layer_props.at(2).layerName, explicit_layer_2));
837+
ASSERT_TRUE(string_eq(layer_props.at(3).layerName, implicit_layer_2));
838+
ASSERT_TRUE(string_eq(layer_props.at(4).layerName, explicit_layer_3));
839+
840+
InstWrapper inst{env.vulkan_functions};
841+
FillDebugUtilsCreateDetails(inst.create_info, env.debug_log);
842+
inst.CheckCreate();
843+
ASSERT_TRUE(env.debug_log.find(get_settings_location_log_message(env)));
844+
auto layers = inst.GetActiveLayers(inst.GetPhysDev(), 2);
845+
ASSERT_TRUE(string_eq(layers.at(0).layerName, implicit_layer_2));
846+
ASSERT_TRUE(string_eq(layers.at(1).layerName, explicit_layer_3));
847+
}
848+
}
849+
733850
// Settings file should take precedence over the meta layer, if present
734851
TEST(SettingsFile, MetaLayerAlsoActivates) {
735852
FrameworkEnvironment env{};

0 commit comments

Comments
 (0)