Demos (master): es1/t-f-p: use GL_OES_EGL_image_external when available
Chia-I Wu
olv at kemper.freedesktop.org
Thu Nov 3 08:11:23 UTC 2011
Module: Demos
Branch: master
Commit: 0b1348000e1cedc6d87005df690c1758ba59aba6
URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=0b1348000e1cedc6d87005df690c1758ba59aba6
Author: Chia-I Wu <olvaffe at gmail.com>
Date: Thu Nov 3 15:49:07 2011 +0800
es1/t-f-p: use GL_OES_EGL_image_external when available
---
src/egl/opengles1/texture_from_pixmap.c | 27 +++++++++++++++++++--------
1 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/src/egl/opengles1/texture_from_pixmap.c b/src/egl/opengles1/texture_from_pixmap.c
index cecf4fe..eeb6ee7 100644
--- a/src/egl/opengles1/texture_from_pixmap.c
+++ b/src/egl/opengles1/texture_from_pixmap.c
@@ -60,6 +60,7 @@ struct app_data {
EGLImageKHR img;
/* OpenGL ES */
+ GLenum target;
GLuint texture;
PFNEGLCREATEIMAGEKHRPROC eglCreateImageKHR;
@@ -167,7 +168,7 @@ app_redraw(struct app_data *data)
* must be re-attached.
*/
eglWaitNative(EGL_CORE_NATIVE_ENGINE);
- data->glEGLImageTargetTexture2DOES(GL_TEXTURE_2D,
+ data->glEGLImageTargetTexture2DOES(data->target,
(GLeglImageOES) data->img);
}
@@ -319,11 +320,11 @@ app_init_gl(struct app_data *data)
glGenTextures(1, &data->texture);
- glBindTexture(GL_TEXTURE_2D, data->texture);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glBindTexture(data->target, data->texture);
+ glTexParameteri(data->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(data->target, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glEnable(GL_TEXTURE_2D);
+ glEnable(data->target);
glEnable(GL_DEPTH_TEST);
}
@@ -343,12 +344,22 @@ app_init_exts(struct app_data *data)
return False;
}
+ data->target = 0;
exts = (const char *) glGetString(GL_EXTENSIONS);
data->glEGLImageTargetTexture2DOES = (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)
eglGetProcAddress("glEGLImageTargetTexture2DOES");
- if (!exts || !strstr(exts, "GL_OES_EGL_image") ||
- !data->glEGLImageTargetTexture2DOES) {
- printf("OpenGL ES does not support GL_OES_EGL_image\n");
+ if (exts && data->glEGLImageTargetTexture2DOES) {
+ if (strstr(exts, "GL_OES_EGL_image"))
+ data->target = GL_TEXTURE_2D;
+#ifdef GL_OES_EGL_image_external
+ /* prefer external texture */
+ if (strstr(exts, "GL_OES_EGL_image_external"))
+ data->target = GL_TEXTURE_EXTERNAL_OES;
+#endif
+ }
+
+ if (!data->target) {
+ printf("OpenGL ES does not support sampling from an EGLImage\n");
return False;
}
More information about the mesa-commit
mailing list