diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index 9da9b90041..d8b3f48a97 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -737,12 +737,6 @@ bool video_shader_read_conf_cgp(config_file_t *conf, return false; } - if (!shaders) - { - RARCH_ERR("Need to define at least 1 shader.\n"); - return false; - } - if (!config_get_int(conf, "feedback_pass", &shader->feedback_pass)) shader->feedback_pass = -1; diff --git a/menu/menu_shader.c b/menu/menu_shader.c index 82c946e0f1..0f7293d3fa 100644 --- a/menu/menu_shader.c +++ b/menu/menu_shader.c @@ -451,7 +451,7 @@ void menu_shader_manager_clear_pass_path(unsigned i) **/ unsigned menu_shader_manager_get_type(const void *data) { - unsigned type = RARCH_SHADER_NONE; + enum rarch_shader_type type; const struct video_shader *shader = (const struct video_shader*)data; /* All shader types must be the same, or we cannot use it. */ uint8_t i = 0; @@ -459,6 +459,9 @@ unsigned menu_shader_manager_get_type(const void *data) if (!shader) return RARCH_SHADER_NONE; + type = video_shader_parse_type(shader->path, + RARCH_SHADER_NONE); + for (i = 0; i < shader->passes; i++) { enum rarch_shader_type pass_type = @@ -470,9 +473,7 @@ unsigned menu_shader_manager_get_type(const void *data) case RARCH_SHADER_CG: case RARCH_SHADER_GLSL: case RARCH_SHADER_SLANG: - if (type == RARCH_SHADER_NONE) - type = pass_type; - else if (type != pass_type) + if (type != pass_type) return RARCH_SHADER_NONE; break; default: @@ -498,7 +499,7 @@ void menu_shader_manager_apply_changes(void) shader_type = menu_shader_manager_get_type(shader); - if (shader->passes && shader_type != RARCH_SHADER_NONE) + if (shader_type != RARCH_SHADER_NONE) { menu_shader_manager_save_preset(NULL, true, false); return;