Skip to content

Commit b7d2562

Browse files
Make Settings file "ON" take priority over disable env-var
The VK_LOADER_LAYERS_DISABLE env-var was disabling layers even if the settings file was turning them on. The fix is a simple change in logic to only check for the layer disable if the layer wasn't set to "ON". Checking for "OFF" isn't needed since that happens above this check.
1 parent d795bbf commit b7d2562

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

loader/settings.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -285,9 +285,9 @@ void log_settings(const struct loader_instance* inst, loader_settings* settings)
285285
cmd_line_msg[0] = '\0';
286286

287287
generate_debug_flag_str(settings->debug_level, cmd_line_size, cmd_line_msg, &num_used);
288-
if (num_used > 0) {
289-
loader_log(inst, VULKAN_LOADER_DEBUG_BIT, 0, "Loader Settings Filters for Logging to Standard Error: %s", cmd_line_msg);
290-
}
288+
if (num_used > 0) {
289+
loader_log(inst, VULKAN_LOADER_DEBUG_BIT, 0, "Loader Settings Filters for Logging to Standard Error: %s", cmd_line_msg);
290+
}
291291

292292
loader_log(inst, VULKAN_LOADER_DEBUG_BIT, 0, "Layer Configurations count = %d", settings->layer_configuration_count);
293293
for (uint32_t i = 0; i < settings->layer_configuration_count; i++) {
@@ -770,13 +770,13 @@ VkResult enable_correct_layers_from_settings(const struct loader_instance* inst,
770770
// Force enable it based on settings
771771
if (props->settings_control_value == LOADER_SETTINGS_LAYER_CONTROL_ON) {
772772
enable_layer = true;
773-
}
774-
775-
// Check if disable filter needs to skip the layer
776-
if ((filters->disable_filter.disable_all || filters->disable_filter.disable_all_implicit ||
777-
check_name_matches_filter_environment_var(props->info.layerName, &filters->disable_filter.additional_filters)) &&
778-
!check_name_matches_filter_environment_var(props->info.layerName, &filters->allow_filter)) {
779-
continue;
773+
} else {
774+
// Check if disable filter needs to skip the layer
775+
if ((filters->disable_filter.disable_all || filters->disable_filter.disable_all_implicit ||
776+
check_name_matches_filter_environment_var(props->info.layerName, &filters->disable_filter.additional_filters)) &&
777+
!check_name_matches_filter_environment_var(props->info.layerName, &filters->allow_filter)) {
778+
continue;
779+
}
780780
}
781781
// Check the enable filter
782782
if (!enable_layer && check_name_matches_filter_environment_var(props->info.layerName, &filters->enable_filter)) {

tests/loader_settings_tests.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1749,7 +1749,8 @@ TEST(SettingsFile, EnvVarsWork_VK_LOADER_LAYERS_DISABLE) {
17491749
FillDebugUtilsCreateDetails(inst.create_info, env.debug_log);
17501750
inst.CheckCreate();
17511751
ASSERT_TRUE(env.debug_log.find(get_settings_location_log_message(env)));
1752-
ASSERT_NO_FATAL_FAILURE(inst.GetActiveLayers(inst.GetPhysDev(), 0));
1752+
auto layers = inst.GetActiveLayers(inst.GetPhysDev(), 1);
1753+
ASSERT_TRUE(string_eq(layers.at(0).layerName, explicit_layer_name));
17531754
}
17541755

17551756
#if defined(WIN32)

0 commit comments

Comments
 (0)