forked from enlightenment/efl
Evas GL: Wrap glGetString() for gles1.x.
Summary: - Implement glGetString() wrapper func in the same way as gles2.x. - Small bug fix glGetString() for gles2.x. Reviewers: cedric, raster, jpeg Subscribers: cedric, mythri, wonsik, spacegrapher Differential Revision: https://phab.enlightenment.org/D2033
This commit is contained in:
parent
93d167ac87
commit
9a0f591314
|
@ -689,7 +689,7 @@ _evgl_glGetString(GLenum name)
|
|||
ret = glGetString(GL_SHADING_LANGUAGE_VERSION);
|
||||
if (!ret) return NULL;
|
||||
#ifdef GL_GLES
|
||||
if (ret[15] != (GLubyte) '1')
|
||||
if (ret[18] != (GLubyte) '1')
|
||||
{
|
||||
// We try not to remove the vendor fluff
|
||||
snprintf(_glsl, sizeof(_glsl), "OpenGL ES GLSL ES 1.00 Evas GL (%s)", ((char *) ret) + 18);
|
||||
|
@ -708,7 +708,7 @@ _evgl_glGetString(GLenum name)
|
|||
ret = glGetString(GL_VERSION);
|
||||
if (!ret) return NULL;
|
||||
#ifdef GL_GLES
|
||||
if (ret[11] != (GLubyte) '2')
|
||||
if (ret[10] != (GLubyte) '2')
|
||||
{
|
||||
// We try not to remove the vendor fluff
|
||||
snprintf(_version, sizeof(_version), "OpenGL ES 2.0 Evas GL (%s)", ((char *) ret) + 10);
|
||||
|
|
|
@ -1016,11 +1016,62 @@ _evgl_gles1_glGetPointerv(GLenum pname, GLvoid **params)
|
|||
static const GLubyte *
|
||||
_evgl_gles1_glGetString(GLenum name)
|
||||
{
|
||||
const GLubyte * ret;
|
||||
static char _version[128] = {0};
|
||||
EVGL_Resource *rsc;
|
||||
const GLubyte *ret;
|
||||
|
||||
if (!_gles1_api.glGetString)
|
||||
return NULL;
|
||||
ret = _gles1_api.glGetString(name);
|
||||
return ret;
|
||||
|
||||
if ((!(rsc = _evgl_tls_resource_get())) || !rsc->current_ctx)
|
||||
{
|
||||
ERR("Current context is NULL, not calling glGetString");
|
||||
// This sets evas_gl_error_get instead of glGetError...
|
||||
evas_gl_common_error_set(NULL, EVAS_GL_BAD_CONTEXT);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (rsc->current_ctx->version != EVAS_GL_GLES_1_X)
|
||||
{
|
||||
ERR("Invalid context version %d", (int) rsc->current_ctx->version);
|
||||
evas_gl_common_error_set(NULL, EVAS_GL_BAD_MATCH);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
switch (name)
|
||||
{
|
||||
case GL_VENDOR:
|
||||
case GL_RENDERER:
|
||||
case GL_SHADING_LANGUAGE_VERSION:
|
||||
break;
|
||||
case GL_VERSION:
|
||||
ret = glGetString(GL_VERSION);
|
||||
if (!ret) return NULL;
|
||||
#ifdef GL_GLES
|
||||
if (ret[13] != (GLubyte) '1')
|
||||
{
|
||||
// We try not to remove the vendor fluff
|
||||
snprintf(_version, sizeof(_version), "OpenGL ES-CM 1.1 Evas GL (%s)", ((char *) ret) + 10);
|
||||
_version[sizeof(_version) - 1] = '\0';
|
||||
return (const GLubyte *) _version;
|
||||
}
|
||||
return ret;
|
||||
#else
|
||||
// Desktop GL, we still keep the official name
|
||||
snprintf(_version, sizeof(_version), "OpenGL ES-CM 1.1 Evas GL (%s)", (char *) ret);
|
||||
_version[sizeof(_version) - 1] = '\0';
|
||||
return (const GLubyte *) _version;
|
||||
#endif
|
||||
|
||||
case GL_EXTENSIONS:
|
||||
return (GLubyte *) evgl_api_ext_string_get(EINA_TRUE, EINA_TRUE);
|
||||
|
||||
default:
|
||||
WRN("Unknown string requested: %x", (unsigned int) name);
|
||||
break;
|
||||
}
|
||||
|
||||
return _gles1_api.glGetString(name);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue