From 0d5af3be3625c91c82698558ec46eb9536ca5d71 Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 20 Nov 2016 13:58:12 -0500 Subject: [PATCH] clear incompatible shaders at config_load --- configuration.c | 59 ++++++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/configuration.c b/configuration.c index b9775e1abf..4695bc8a2a 100644 --- a/configuration.c +++ b/configuration.c @@ -1627,6 +1627,28 @@ static void config_read_keybinds_conf(config_file_t *conf) read_keybinds_user(conf, i); } +static bool check_shader_compatibility(enum file_path_enum enum_idx) +{ + settings_t *settings = config_get_ptr(); + + if (string_is_equal("vulkan", settings->video.driver)) + { + if (enum_idx != FILE_PATH_SLANGP_EXTENSION) + return false; + return true; + } + + if (string_is_equal("gl", settings->video.driver) || + string_is_equal("d3d9", settings->video.driver)) + { + if (enum_idx == FILE_PATH_SLANGP_EXTENSION) + return false; + return true; + } + + return false; +} + #if 0 static bool config_read_keybinds(const char *path) { @@ -2150,6 +2172,19 @@ static bool config_load_file(const char *path, bool set_defaults, config_read_keybinds_conf(conf); ret = true; + + for(i = FILE_PATH_CGP_EXTENSION; i <= FILE_PATH_SLANGP_EXTENSION; i++) + { + if(strstr(file_path_str((enum file_path_enum)(i)), path_get_extension(settings->path.shader))) + { + if (!check_shader_compatibility(i)) + { + RARCH_LOG("Incompatible shader for backend %s, clearing...\n", settings->video.driver); + settings->path.shader[0] = '\0'; + break; + } + } + } end: if (conf) @@ -2434,28 +2469,6 @@ bool config_load_remap(void) return false; } -static bool check_shader_compatibility(enum file_path_enum enum_idx) -{ - settings_t *settings = config_get_ptr(); - - if (string_is_equal("vulkan", settings->video.driver)) - { - if (enum_idx != FILE_PATH_SLANGP_EXTENSION) - return false; - return true; - } - - if (string_is_equal("gl", settings->video.driver) || - string_is_equal("d3d9", settings->video.driver)) - { - if (enum_idx == FILE_PATH_SLANGP_EXTENSION) - return false; - return true; - } - - return false; -} - /** * config_load_shader_preset: * @@ -2502,7 +2515,7 @@ bool config_load_shader_preset(void) RARCH_LOG("Shaders: preset directory: %s\n", shader_directory); - for(idx = FILE_PATH_CGP_EXTENSION; idx < FILE_PATH_SLANGP_EXTENSION; idx++) + for(idx = FILE_PATH_CGP_EXTENSION; idx <= FILE_PATH_SLANGP_EXTENSION; idx++) { config_file_t *new_conf = NULL;