diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index eda8f87152..845abf6310 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -275,15 +275,12 @@ static bool gl_shader_init(gl_t *gl) gl->shader = backend; - if (gl->shader && gl->shader->init) - { - ret = gl->shader->init(gl, shader_path); + ret = video_shader_init(gl->shader, gl, shader_path); - if (!ret) - { - RARCH_ERR("[GL]: Failed to initialize shader, falling back to stock.\n"); - ret = gl->shader->init(gl, NULL); - } + if (!ret) + { + RARCH_ERR("[GL]: Failed to initialize shader, falling back to stock.\n"); + ret = video_shader_init(gl->shader, gl, NULL); } return ret; diff --git a/gfx/video_shader_driver.c b/gfx/video_shader_driver.c index 3da806774b..7dbedbe569 100644 --- a/gfx/video_shader_driver.c +++ b/gfx/video_shader_driver.c @@ -92,3 +92,10 @@ void video_shader_scale(unsigned idx, if (shader->shader_scale) shader->shader_scale(idx, scale); } + +bool video_shader_init(const shader_backend_t *shader, void *data, const char *path) +{ + if (!shader || !shader->init) + return false; + return shader->init(data, path); +} diff --git a/gfx/video_shader_driver.h b/gfx/video_shader_driver.h index 5e550749d1..10429d2627 100644 --- a/gfx/video_shader_driver.h +++ b/gfx/video_shader_driver.h @@ -116,6 +116,8 @@ const shader_backend_t *shader_ctx_init_first(void); struct video_shader *video_shader_driver_get_current_shader(void); +bool video_shader_init(const shader_backend_t *shader, void *data, const char *path); + #ifdef __cplusplus } #endif