From 2094e8fb2f2d76b0f473e95a74f8258eedf8fdc1 Mon Sep 17 00:00:00 2001 From: Themaister Date: Thu, 5 Jun 2014 15:17:29 +0200 Subject: [PATCH] Auto-enable some extensions if GLES3. --- gfx/gl.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index ba54a3eb3b..8be87c786e 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1858,14 +1858,26 @@ static bool resolve_extensions(gl_t *gl) "32-bit path will require conversion.\n"); } - gl->support_unpack_row_length = false; - if (gl_query_extension(gl, "GL_EXT_unpack_subimage")) + bool gles3 = false; + const char *version = (const char*)glGetString(GL_VERSION); + unsigned gles_major = 0, gles_minor = 0; + // This format is mandated by GLES. + if (version && sscanf(version, "OpenGL ES %u.%u", &gles_major, &gles_minor) == 2 && gles_major >= 3) + { + RARCH_LOG("[GL]: GLES3 or newer detected. Auto-enabling some extensions.\n"); + gles3 = true; + } + + // GLES3 has unpack_subimage and sRGB in core. + + gl->support_unpack_row_length = gles3; + if (!gles3 && gl_query_extension(gl, "GL_EXT_unpack_subimage")) { RARCH_LOG("[GL]: Extension GL_EXT_unpack_subimage, can copy textures faster using UNPACK_ROW_LENGTH.\n"); gl->support_unpack_row_length = true; } // No extensions for float FBO currently. - gl->has_srgb_fbo = gl_query_extension(gl, "EXT_sRGB"); + gl->has_srgb_fbo = gles3 || gl_query_extension(gl, "EXT_sRGB"); #else #ifdef HAVE_FBO // Float FBO is core in 3.2.