From b6585c2d8b1531766b814201130c96da9070211f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=B6glund?= Date: Wed, 26 Sep 2012 23:27:18 +0200 Subject: [PATCH] kwin/es: Resolve functions for GL_OES_mapbuffer --- libkwineffects/kwinglutils_funcs.cpp | 24 ++++++++++++++++++++++-- libkwineffects/kwinglutils_funcs.h | 14 ++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/libkwineffects/kwinglutils_funcs.cpp b/libkwineffects/kwinglutils_funcs.cpp index 26d44340ea..13dc17509e 100644 --- a/libkwineffects/kwinglutils_funcs.cpp +++ b/libkwineffects/kwinglutils_funcs.cpp @@ -243,9 +243,15 @@ void glxResolveFunctions() else glXCreateContextAttribsARB = NULL; } -#endif +#else +// GL_OES_mapbuffer +glMapBuffer_func glMapBuffer; +glUnmapBuffer_func glUnmapBuffer; +glGetBufferPointerv_func glGetBufferPointerv; + +#endif // KWIN_HAVE_OPENGLES #ifdef KWIN_HAVE_EGL @@ -656,7 +662,21 @@ void glResolveFunctions(OpenGLPlatformInterface platformInterface) glMapBufferRange = NULL; glFlushMappedBufferRange = NULL; } -#endif + +#else + + if (hasGLExtension("GL_OES_mapbuffer")) { + // See http://www.khronos.org/registry/gles/extensions/OES/OES_mapbuffer.txt + glMapBuffer = (glMapBuffer_func) eglGetProcAddress("glMapBufferOES"); + glUnmapBuffer = (glUnmapBuffer_func) eglGetProcAddress("glUnmapBufferOES"); + glGetBufferPointerv = (glGetBufferPointerv_func) eglGetProcAddress("glGetBufferPointervOES"); + } else { + glMapBuffer = NULL; + glUnmapBuffer = NULL; + glGetBufferPointerv = NULL; + } + +#endif // KWIN_HAVE_OPENGLES #ifdef KWIN_HAVE_EGL if (platformInterface == EglPlatformInterface) { diff --git a/libkwineffects/kwinglutils_funcs.h b/libkwineffects/kwinglutils_funcs.h index 68d7468541..02d7da8510 100644 --- a/libkwineffects/kwinglutils_funcs.h +++ b/libkwineffects/kwinglutils_funcs.h @@ -509,6 +509,20 @@ extern KWIN_EXPORT eglPostSubBufferNV_func eglPostSubBufferNV; typedef GLvoid(*glEGLImageTargetTexture2DOES_func)(GLenum, GLeglImageOES); extern KWIN_EXPORT glEGLImageTargetTexture2DOES_func glEGLImageTargetTexture2DOES; + +#ifdef KWIN_HAVE_OPENGLES + +// GL_OES_mapbuffer +typedef GLvoid *(*glMapBuffer_func)(GLenum target, GLenum access); +typedef GLboolean (*glUnmapBuffer_func)(GLenum target); +typedef void (*glGetBufferPointerv_func)(GLenum target, GLenum pname, GLvoid **params); + +extern KWIN_EXPORT glMapBuffer_func glMapBuffer; +extern KWIN_EXPORT glUnmapBuffer_func glUnmapBuffer; +extern KWIN_EXPORT glGetBufferPointerv_func glGetBufferPointerv; + +#endif // KWIN_HAVE_OPENGLES + } // namespace #endif // KWIN_HAVE_EGL