diff --git a/legacy/evas/src/modules/engines/gl_common/evas_gl_common.h b/legacy/evas/src/modules/engines/gl_common/evas_gl_common.h index 5410c2b85a..bd2abe41ed 100644 --- a/legacy/evas/src/modules/engines/gl_common/evas_gl_common.h +++ b/legacy/evas/src/modules/engines/gl_common/evas_gl_common.h @@ -448,6 +448,7 @@ int evas_gl_common_shader_program_init(Evas_GL_Program *p, Evas_GL_Program_Source *vert, Evas_GL_Program_Source *frag, const char *name); +void evas_gl_common_shader_program_init_done(void); void evas_gl_common_shader_program_shutdown(Evas_GL_Program *p); void evas_gl_common_rect_draw(Evas_Engine_GL_Context *gc, int x, int y, int w, int h); diff --git a/legacy/evas/src/modules/engines/gl_common/evas_gl_context.c b/legacy/evas/src/modules/engines/gl_common/evas_gl_context.c index 156462b57e..2e7e79e6b8 100644 --- a/legacy/evas/src/modules/engines/gl_common/evas_gl_context.c +++ b/legacy/evas/src/modules/engines/gl_common/evas_gl_context.c @@ -733,6 +733,8 @@ evas_gl_common_context_new(void) glUseProgram(gc->pipe[0].shader.cur_prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); + + evas_gl_common_shader_program_init_done(); // in shader: // uniform sampler2D tex[8]; // diff --git a/legacy/evas/src/modules/engines/gl_common/evas_gl_shader.c b/legacy/evas/src/modules/engines/gl_common/evas_gl_shader.c index 221fca86c7..0736e65d6f 100644 --- a/legacy/evas/src/modules/engines/gl_common/evas_gl_shader.c +++ b/legacy/evas/src/modules/engines/gl_common/evas_gl_shader.c @@ -511,6 +511,14 @@ evas_gl_common_shader_program_init(Evas_GL_Program *p, return 1; } +void +evas_gl_common_shader_program_init_done(void) +{ +#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) + glReleaseShaderCompiler(); +#endif +} + void evas_gl_common_shader_program_shutdown(Evas_GL_Program *p) {