From ee17bb21370ab7e908dad1df8e70e5ffd067a4f9 Mon Sep 17 00:00:00 2001 From: Jonas Kulla Date: Tue, 23 Dec 2014 19:23:08 +0100 Subject: [PATCH] Call glReleaseShaderCompiler on GLES --- src/gl-fun.cpp | 5 +++++ src/gl-fun.h | 7 +++++++ src/sharedstate.cpp | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/src/gl-fun.cpp b/src/gl-fun.cpp index 09174db..15a4802 100644 --- a/src/gl-fun.cpp +++ b/src/gl-fun.cpp @@ -101,6 +101,11 @@ void initGLFunctions() if (glMajor < 2) throw EXC("At least OpenGL (ES) 2.0 is required"); + if (gles) + { + GL_ES_FUN; + } + BoostSet ext; if (glMajor >= 3) diff --git a/src/gl-fun.h b/src/gl-fun.h index 7d5d96e..b989ba9 100644 --- a/src/gl-fun.h +++ b/src/gl-fun.h @@ -110,6 +110,9 @@ typedef void (APIENTRYP _PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint* arrays); typedef void (APIENTRYP _PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint* arrays); typedef void (APIENTRYP _PFNGLBINDVERTEXARRAYPROC) (GLuint array); +/* GLES only */ +typedef void (APIENTRYP _PFNGLRELEASESHADERCOMPILERPROC) (void); + #ifdef GLES2_HEADER #define GL_NUM_EXTENSIONS 0x821D #define GL_READ_FRAMEBUFFER 0x8CA8 @@ -178,6 +181,9 @@ typedef void (APIENTRYP _PFNGLBINDVERTEXARRAYPROC) (GLuint array); GL_FUN(DisableVertexAttribArray, _PFNGLDISABLEVERTEXATTRIBARRAYPROC) \ GL_FUN(VertexAttribPointer, _PFNGLVERTEXATTRIBPOINTERPROC) +#define GL_ES_FUN \ + GL_FUN(ReleaseShaderCompiler, _PFNGLRELEASESHADERCOMPILERPROC) + #define GL_FBO_FUN \ /* Framebuffer object */ \ GL_FUN(GenFramebuffers, _PFNGLGENFRAMEBUFFERSPROC) \ @@ -206,6 +212,7 @@ struct GLFunctions #define GL_FUN(name, type) type name; GL_20_FUN + GL_ES_FUN GL_FBO_FUN GL_FBO_BLIT_FUN GL_VAO_FUN diff --git a/src/sharedstate.cpp b/src/sharedstate.cpp index fb201e2..9e77f25 100644 --- a/src/sharedstate.cpp +++ b/src/sharedstate.cpp @@ -111,6 +111,10 @@ struct SharedStatePrivate fontState(threadData->config), stampCounter(0) { + /* Shaders have been compiled in ShaderSet's constructor */ + if (gl.ReleaseShaderCompiler) + gl.ReleaseShaderCompiler(); + // FIXME find out correct archive filename std::string archPath = defGameArchive();