From b9f605cc9da524c0b064a64feee7e5cdb65c4104 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 15 Sep 2012 15:37:08 +0200 Subject: [PATCH] Fall back to default shader in GLES2. --- gfx/gl.c | 17 +++++++++++++++-- gfx/shader_glsl.c | 31 ++++++++++++++++++------------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index 5ba0fa7a22..551f38d9e4 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -166,6 +166,18 @@ static inline bool load_gl_proc_win32(void) #endif ////////////////// Shaders + +#ifdef HAVE_OPENGLES2 +static bool gl_shader_init(void) // We always need a shader alive in GLES2. +{ + const char *shader_path = NULL; + if ((g_settings.video.shader_type == RARCH_SHADER_AUTO || g_settings.video.shader_type == RARCH_SHADER_BSNES) + && *g_settings.video.bsnes_shader_path) + shader_path = g_settings.video.bsnes_shader_path; + + return gl_glsl_init(shader_path); +} +#else static bool gl_shader_init(void) { switch (g_settings.video.shader_type) @@ -203,6 +215,7 @@ static bool gl_shader_init(void) return true; } +#endif void gl_shader_use(unsigned index) { @@ -1316,8 +1329,8 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo gl->tex_filter = video->smooth ? GL_LINEAR : GL_NEAREST; gl->texture_type = RARCH_GL_TEXTURE_TYPE; - gl->texture_fmt = video->rgb32 ? RARCH_GL_FORMAT32 : RARCH_GL_FORMAT16; - gl->base_size = video->rgb32 ? sizeof(uint32_t) : sizeof(uint16_t); + gl->texture_fmt = video->rgb32 ? RARCH_GL_FORMAT32 : RARCH_GL_FORMAT16; + gl->base_size = video->rgb32 ? sizeof(uint32_t) : sizeof(uint16_t); #ifndef HAVE_OPENGLES glEnable(GL_TEXTURE_2D); diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index 033f1b886c..a7c1708013 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -981,23 +981,28 @@ bool gl_glsl_init(const char *path) } #endif + unsigned num_progs = 0; + struct shader_program progs[MAX_PROGRAMS] = {{0}}; #ifdef HAVE_XML - struct shader_program progs[MAX_PROGRAMS]; - unsigned num_progs = get_xml_shaders(path, progs, MAX_PROGRAMS - 1); - - if (num_progs == 0) + if (path) { - RARCH_ERR("Couldn't find any valid shaders in XML file.\n"); - return false; + num_progs = get_xml_shaders(path, progs, MAX_PROGRAMS - 1); + + if (num_progs == 0) + { + RARCH_ERR("Couldn't find any valid shaders in XML file.\n"); + return false; + } } -#else - RARCH_WARN("[GL]: HAVE_XML is not defined. Stock GLSL shaders will be used instead.\n"); - unsigned num_progs = 1; - struct shader_program progs[1] = {{0}}; - progs[0].vertex = strdup(stock_vertex_modern); - progs[0].fragment = strdup(stock_fragment_modern); - glsl_modern = true; + else #endif + { + RARCH_WARN("[GL]: Stock GLSL shaders will be used.\n"); + num_progs = 1; + progs[0].vertex = strdup(stock_vertex_modern); + progs[0].fragment = strdup(stock_fragment_modern); + glsl_modern = true; + } struct shader_program stock_prog = {0}; stock_prog.vertex = strdup(glsl_modern ? stock_vertex_modern : stock_vertex_legacy);