diff --git a/gfx/drivers_shader/shader_glsl.c b/gfx/drivers_shader/shader_glsl.c index cc0e93a5cb..831cc669a8 100644 --- a/gfx/drivers_shader/shader_glsl.c +++ b/gfx/drivers_shader/shader_glsl.c @@ -932,8 +932,21 @@ static void *gl_glsl_init(void *data, const char *path) } #ifdef HAVE_SHADERPIPELINE - shader_prog_info.vertex = glsl_core ? stock_vertex_xmb_ribbon_modern : stock_vertex_xmb_ribbon_legacy; - shader_prog_info.fragment = stock_fragment_xmb; +#ifdef HAVE_OPENGLES + if (gl_query_extension("GL_OES_standard_derivatives")) + { + shader_prog_info.vertex = glsl_core ? stock_vertex_xmb_ribbon_modern : stock_vertex_xmb_ribbon_legacy; + shader_prog_info.fragment = stock_fragment_xmb; + } + else + { + shader_prog_info.vertex = stock_vertex_xmb_ribbon_simple_legacy; + shader_prog_info.fragment = stock_fragment_xmb_ribbon_simple; + } +#else + shader_prog_info.vertex = glsl_core ? stock_vertex_xmb_ribbon_modern : stock_vertex_xmb_ribbon_legacy; + shader_prog_info.fragment = stock_fragment_xmb; +#endif shader_prog_info.is_file = false; gl_glsl_compile_program( diff --git a/libretro-common/gfx/gl_capabilities.c b/libretro-common/gfx/gl_capabilities.c index 6b65a78563..d89fff5a8e 100644 --- a/libretro-common/gfx/gl_capabilities.c +++ b/libretro-common/gfx/gl_capabilities.c @@ -48,7 +48,7 @@ void gl_query_core_context_unset(void) gl_core_context = false; } -static bool gl_query_extension(const char *ext) +bool gl_query_extension(const char *ext) { bool ret = false; diff --git a/libretro-common/include/gfx/gl_capabilities.h b/libretro-common/include/gfx/gl_capabilities.h index 46d7b2ed29..2c72593bc9 100644 --- a/libretro-common/include/gfx/gl_capabilities.h +++ b/libretro-common/include/gfx/gl_capabilities.h @@ -58,4 +58,6 @@ void gl_query_core_context_unset(void); bool gl_check_capability(enum gl_capability_enum enum_idx); +bool gl_query_extension(const char *ext); + #endif