diff --git a/gfx/common/gl_common.h b/gfx/common/gl_common.h index 44c7837c89..4099cd205e 100644 --- a/gfx/common/gl_common.h +++ b/gfx/common/gl_common.h @@ -415,6 +415,10 @@ bool gl_add_lut( enum gfx_wrap_type lut_wrap_type, unsigned i, void *textures_data); +bool gl_load_luts( + const void *shader_data, + GLuint *textures_lut); + RETRO_END_DECLS #endif diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index eb95f6589c..3c382214c7 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -128,6 +128,35 @@ void context_bind_hw_render(void *data, bool enable) gl_context_bind_hw_render(gl, enable); } +bool gl_load_luts( + const void *shader_data, + GLuint *textures_lut) +{ + unsigned i; + const struct video_shader *shader = + (const struct video_shader*)shader_data; + unsigned num_luts = MIN(shader->luts, GFX_MAX_TEXTURES); + + if (!shader->luts) + return true; + + glGenTextures(num_luts, textures_lut); + + for (i = 0; i < num_luts; i++) + { + if (!gl_add_lut( + shader->lut[i].path, + shader->lut[i].mipmap, + shader->lut[i].filter, + shader->lut[i].wrap, + i, textures_lut)) + return false; + } + + glBindTexture(GL_TEXTURE_2D, 0); + return true; +} + #ifdef HAVE_OVERLAY static void gl_free_overlay(gl_t *gl) { diff --git a/gfx/drivers_shader/shader_gl_cg.c b/gfx/drivers_shader/shader_gl_cg.c index e2591ff5cc..5695ec77c0 100644 --- a/gfx/drivers_shader/shader_gl_cg.c +++ b/gfx/drivers_shader/shader_gl_cg.c @@ -761,33 +761,6 @@ static bool gl_cg_load_shader(void *data, unsigned i) return true; } -static bool gl_cg_load_luts( - const struct video_shader *shader, - GLuint *textures_lut) -{ - unsigned i; - unsigned num_luts = MIN(shader->luts, GFX_MAX_TEXTURES); - - if (!shader->luts) - return true; - - glGenTextures(num_luts, textures_lut); - - for (i = 0; i < num_luts; i++) - { - if (!gl_add_lut( - shader->lut[i].path, - shader->lut[i].mipmap, - shader->lut[i].filter, - shader->lut[i].wrap, - i, textures_lut)) - return false; - } - - glBindTexture(GL_TEXTURE_2D, 0); - return true; -} - static bool gl_cg_load_preset(void *data, const char *path) { unsigned i; @@ -848,7 +821,7 @@ static bool gl_cg_load_preset(void *data, const char *path) } } - if (!gl_cg_load_luts(cg->shader, cg->lut_textures)) + if (!gl_load_luts(cg->shader, cg->lut_textures)) { RARCH_ERR("Failed to load lookup textures ...\n"); return false; diff --git a/gfx/drivers_shader/shader_glsl.c b/gfx/drivers_shader/shader_glsl.c index 523886e099..76cceee6f7 100644 --- a/gfx/drivers_shader/shader_glsl.c +++ b/gfx/drivers_shader/shader_glsl.c @@ -158,33 +158,6 @@ static bool glsl_core; static unsigned glsl_major; static unsigned glsl_minor; -static bool gl_glsl_load_luts( - const struct video_shader *shader, - GLuint *textures_lut) -{ - unsigned i; - unsigned num_luts = MIN(shader->luts, GFX_MAX_TEXTURES); - - if (!shader->luts) - return true; - - glGenTextures(num_luts, textures_lut); - - for (i = 0; i < num_luts; i++) - { - if (!gl_add_lut( - shader->lut[i].path, - shader->lut[i].mipmap, - shader->lut[i].filter, - shader->lut[i].wrap, - i, textures_lut)) - return false; - } - - glBindTexture(GL_TEXTURE_2D, 0); - return true; -} - static GLint gl_glsl_get_uniform(glsl_shader_data_t *glsl, GLuint prog, const char *base) { @@ -1020,7 +993,7 @@ static void *gl_glsl_init(void *data, const char *path) if (!gl_glsl_compile_programs(glsl, &glsl->prg[1])) goto error; - if (!gl_glsl_load_luts(glsl->shader, glsl->lut_textures)) + if (!gl_load_luts(glsl->shader, glsl->lut_textures)) { RARCH_ERR("[GL]: Failed to load LUTs.\n"); goto error;