Module: Demos Branch: master Commit: 37abe2d093f455b593d113e0c26ff4fe961efd96 URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=37abe2d093f455b593d113e0c26ff4fe961efd96
Author: Brian Paul <bri...@vmware.com> Date: Tue Jan 18 15:33:45 2011 -0700 egl: add compile-time extension checking, use eglGetProcAddress The GL_OES_EGL_image extension is not defined in all gl.h or glext.h files so we need a compile-time check. Also, use eglGetProcAddress() to get the function pointer at runtime in case libGL doesn't define it. --- src/egl/opengl/eglkms.c | 16 ++++++++++++++++ src/egl/opengl/xeglgears.c | 15 ++++++++++++++- 2 files changed, 30 insertions(+), 1 deletions(-) diff --git a/src/egl/opengl/eglkms.c b/src/egl/opengl/eglkms.c index 4e398b7..54936cb 100644 --- a/src/egl/opengl/eglkms.c +++ b/src/egl/opengl/eglkms.c @@ -14,6 +14,10 @@ #include <unistd.h> #include <string.h> +#ifdef GL_OES_EGL_image +static PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC glEGLImageTargetRenderbufferStorageOES_func; +#endif + struct kms { drmModeConnector *connector; drmModeEncoder *encoder; @@ -179,6 +183,14 @@ int main(int argc, char *argv[]) eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, ctx); +#ifdef GL_OES_EGL_image + glEGLImageTargetRenderbufferStorageOES_func = + (PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) + eglGetProcAddress("glEGLImageTargetRenderbufferStorageOES"); +#else + fprintf(stderr, "GL_OES_EGL_image not supported at compile time\n"); +#endif + glGenFramebuffers(1, &fb); glBindFramebuffer(GL_FRAMEBUFFER_EXT, fb); @@ -190,7 +202,11 @@ int main(int argc, char *argv[]) glGenRenderbuffers(1, &color_rb); glBindRenderbuffer(GL_RENDERBUFFER_EXT, color_rb); +#ifdef GL_OES_EGL_image glEGLImageTargetRenderbufferStorageOES(GL_RENDERBUFFER, image); +#else + fprintf(stderr, "GL_OES_EGL_image was not found at compile time\n"); +#endif glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, diff --git a/src/egl/opengl/xeglgears.c b/src/egl/opengl/xeglgears.c index 2401d07..65cf513 100644 --- a/src/egl/opengl/xeglgears.c +++ b/src/egl/opengl/xeglgears.c @@ -47,6 +47,10 @@ #include <EGL/eglext.h> +#ifdef GL_OES_EGL_image +static PFNGLEGLIMAGETARGETTEXTURE2DOESPROC glEGLImageTargetTexture2DOES_func; +#endif + #define BENCHMARK @@ -396,6 +400,11 @@ egl_manager_new(EGLNativeDisplayType xdpy, const EGLint *attrib_list, return NULL; } +#ifdef GL_OES_EGL_image + glEGLImageTargetTexture2DOES_func = (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) + eglGetProcAddress("glEGLImageTargetTexture2DOES"); +#endif + return eman; } @@ -913,7 +922,11 @@ main(int argc, char *argv[]) case GEARS_RENDERBUFFER: glGenTextures(1, &texture); glBindTexture(GL_TEXTURE_2D, texture); - glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, eman->image); +#ifdef GL_OES_EGL_image + glEGLImageTargetTexture2DOES_func(GL_TEXTURE_2D, eman->image); +#else + fprintf(stderr, "GL_OES_EGL_image not found at compile time.\n"); +#endif break; case GEARS_PBUFFER_TEXTURE: glGenTextures(1, &texture); _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit