diff --git a/list_special.c b/list_special.c index b6bab8efdd..4df9ed804d 100644 --- a/list_special.c +++ b/list_special.c @@ -99,7 +99,6 @@ struct string_list *dir_list_new_special(const char *input_dir, case DIR_LIST_SHADERS: { union string_list_elem_attr attr; - bool is_preset = false; struct string_list *str_list = string_list_new(); if (!str_list) @@ -109,24 +108,33 @@ struct string_list *dir_list_new_special(const char *input_dir, attr.i = 0; - if (video_shader_is_supported(RARCH_SHADER_CG) && - video_shader_get_type_from_ext("cgp", &is_preset)) - string_list_append(str_list, "cgp", attr); - if (video_shader_is_supported(RARCH_SHADER_CG) && - video_shader_get_type_from_ext("cg", &is_preset)) - string_list_append(str_list, "cg", attr); - if (video_shader_is_supported(RARCH_SHADER_GLSL) && - video_shader_get_type_from_ext("glsl", &is_preset)) - string_list_append(str_list, "glsl", attr); - if (video_shader_is_supported(RARCH_SHADER_GLSL) && - video_shader_get_type_from_ext("glslp", &is_preset)) - string_list_append(str_list, "glslp", attr); - if (video_shader_is_supported(RARCH_SHADER_SLANG) && - video_shader_get_type_from_ext("slang", &is_preset)) - string_list_append(str_list, "slang", attr); - if (video_shader_is_supported(RARCH_SHADER_SLANG) && - video_shader_get_type_from_ext("slangp", &is_preset)) - string_list_append(str_list, "slangp", attr); + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_CG)) + { + string_list_append(str_list, "cgp", attr); + string_list_append(str_list, "cg", attr); + } + } + + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_GLSL)) + { + string_list_append(str_list, "glslp", attr); + string_list_append(str_list, "glsl", attr); + } + } + + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_SLANG)) + { + string_list_append(str_list, "slangp", attr); + string_list_append(str_list, "slang", attr); + } + } + string_list_join_concat(ext_shaders, sizeof(ext_shaders), str_list, "|"); string_list_free(str_list); exts = ext_shaders; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 8321bbed67..7d3f2b7652 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -8093,31 +8093,32 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist { char new_exts[PATH_MAX_LENGTH]; union string_list_elem_attr attr; - struct string_list *str_list = NULL; - bool is_preset = false; + struct string_list *str_list = string_list_new(); attr.i = 0; new_exts[0] = '\0'; - str_list = string_list_new(); filebrowser_clear_type(); info->type_default = FILE_TYPE_SHADER; - if (video_shader_is_supported(RARCH_SHADER_CG) && - video_shader_get_type_from_ext("cg", &is_preset) - != RARCH_SHADER_NONE) - string_list_append(str_list, "cg", attr); + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_CG)) + string_list_append(str_list, "cg", attr); + } - if (video_shader_is_supported(RARCH_SHADER_GLSL) && - video_shader_get_type_from_ext("glsl", &is_preset) - != RARCH_SHADER_NONE) - string_list_append(str_list, "glsl", attr); + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_GLSL)) + string_list_append(str_list, "glsl", attr); + } - if (video_shader_is_supported(RARCH_SHADER_SLANG) && - video_shader_get_type_from_ext("slang", &is_preset) - != RARCH_SHADER_NONE) - string_list_append(str_list, "slang", attr); + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_SLANG)) + string_list_append(str_list, "slang", attr); + } string_list_join_concat(new_exts, sizeof(new_exts), str_list, "|"); if (!string_is_empty(info->exts)) diff --git a/ui/drivers/qt/shaderparamsdialog.cpp b/ui/drivers/qt/shaderparamsdialog.cpp index 44885ed947..49cebadb60 100644 --- a/ui/drivers/qt/shaderparamsdialog.cpp +++ b/ui/drivers/qt/shaderparamsdialog.cpp @@ -494,15 +494,13 @@ void ShaderParamsDialog::onShaderPassMoveUpClicked() void ShaderParamsDialog::onShaderLoadPresetClicked() { - QString path; - QString filter; + QString path, filter; QByteArray pathArray; - struct video_shader *menu_shader = NULL; + struct video_shader *menu_shader = NULL; struct video_shader *video_shader = NULL; - const char *pathData = NULL; - settings_t *settings = config_get_ptr(); - enum rarch_shader_type type = RARCH_SHADER_NONE; - bool is_preset = false; + const char *pathData = NULL; + settings_t *settings = config_get_ptr(); + enum rarch_shader_type type = RARCH_SHADER_NONE; if (!settings) return; @@ -515,20 +513,23 @@ void ShaderParamsDialog::onShaderLoadPresetClicked() filter = "Shader Preset ("; /* NOTE: Maybe we should have a way to get a list of all shader types instead of hard-coding this? */ - if (video_shader_is_supported(RARCH_SHADER_CG) && - video_shader_get_type_from_ext(file_path_str(FILE_PATH_CGP_EXTENSION), &is_preset) - != RARCH_SHADER_NONE) - filter += QLatin1Literal("*") + file_path_str(FILE_PATH_CGP_EXTENSION); + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_CG)) + filter += QLatin1Literal("*") + file_path_str(FILE_PATH_CGP_EXTENSION); + } - if (video_shader_is_supported(RARCH_SHADER_GLSL) && - video_shader_get_type_from_ext(file_path_str(FILE_PATH_GLSLP_EXTENSION), &is_preset) - != RARCH_SHADER_NONE) - filter += QLatin1Literal(" *") + file_path_str(FILE_PATH_GLSLP_EXTENSION); + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_GLSL)) + filter += QLatin1Literal("*") + file_path_str(FILE_PATH_GLSLP_EXTENSION); + } - if (video_shader_is_supported(RARCH_SHADER_SLANG) && - video_shader_get_type_from_ext(file_path_str(FILE_PATH_SLANGP_EXTENSION), &is_preset) - != RARCH_SHADER_NONE) - filter += QLatin1Literal(" *") + file_path_str(FILE_PATH_SLANGP_EXTENSION); + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_SLANG)) + filter += QLatin1Literal("*") + file_path_str(FILE_PATH_SLANGP_EXTENSION); + } filter += ")"; @@ -635,15 +636,13 @@ void ShaderParamsDialog::onShaderResetAllPasses() void ShaderParamsDialog::onShaderAddPassClicked() { - QString path; - QString filter; + QString path, filter; QByteArray pathArray; - struct video_shader *menu_shader = NULL; - struct video_shader *video_shader = NULL; + struct video_shader *menu_shader = NULL; + struct video_shader *video_shader = NULL; struct video_shader_pass *shader_pass = NULL; - const char *pathData = NULL; - settings_t *settings = config_get_ptr(); - bool is_preset = false; + const char *pathData = NULL; + settings_t *settings = config_get_ptr(); if (!settings) return; @@ -656,20 +655,23 @@ void ShaderParamsDialog::onShaderAddPassClicked() filter = "Shader ("; /* NOTE: Maybe we should have a way to get a list of all shader types instead of hard-coding this? */ - if (video_shader_is_supported(RARCH_SHADER_CG) && - video_shader_get_type_from_ext(".cg", &is_preset) - != RARCH_SHADER_NONE) - filter += QLatin1Literal("*.cg"); + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_CG)) + filter += QLatin1Literal("*.cg"); + } - if (video_shader_is_supported(RARCH_SHADER_GLSL) && - video_shader_get_type_from_ext(".glsl", &is_preset) - != RARCH_SHADER_NONE) - filter += QLatin1Literal(" *.glsl"); + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_GLSL)) + filter += QLatin1Literal("*.glsl"); + } - if (video_shader_is_supported(RARCH_SHADER_SLANG) && - video_shader_get_type_from_ext(".slang", &is_preset) - != RARCH_SHADER_NONE) - filter += QLatin1Literal(" *.slang"); + { + gfx_ctx_flags_t flags; + if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SHADERS_SLANG)) + filter += QLatin1Literal("*.slang"); + } filter += ")";