summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-I Wu <olvaffe@gmail.com>2010-01-11 14:00:39 +0800
committerChia-I Wu <olvaffe@gmail.com>2010-01-12 11:25:09 +0800
commit76e726515aedab426a55a389d0a1132456932856 (patch)
treea08d0bd572fcc6928162445df8b4f07262bc8d4a
parent43f67b61fd1020e7ec847c21e1dbae9544d463ec (diff)
progs/es2: Correctly set renderable type and client version.
Correctly set EGL_RENDERABLE_TYPE and EGL_CONTEXT_CLIENT_VERSION for OpenGL ES 2.0. Because es2_info is copied from es1_info, the fix for it actually goes to es1_info. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
-rw-r--r--progs/es1/xegl/es1_info.c25
-rw-r--r--progs/es2/xegl/Makefile4
-rw-r--r--progs/es2/xegl/tri.c1
3 files changed, 23 insertions, 7 deletions
diff --git a/progs/es1/xegl/es1_info.c b/progs/es1/xegl/es1_info.c
index 963304de133..93816b52150 100644
--- a/progs/es1/xegl/es1_info.c
+++ b/progs/es1/xegl/es1_info.c
@@ -106,17 +106,22 @@ info(EGLDisplay egl_dpy)
static void
make_x_window(Display *x_dpy, EGLDisplay egl_dpy,
const char *name,
- int x, int y, int width, int height,
+ int x, int y, int width, int height, int es_ver,
Window *winRet,
EGLContext *ctxRet,
EGLSurface *surfRet)
{
- static const EGLint attribs[] = {
+ EGLint attribs[] = {
+ EGL_RENDERABLE_TYPE, 0x0,
EGL_RED_SIZE, 1,
EGL_GREEN_SIZE, 1,
EGL_BLUE_SIZE, 1,
EGL_NONE
};
+ EGLint ctx_attribs[] = {
+ EGL_CONTEXT_CLIENT_VERSION, 0,
+ EGL_NONE
+ };
int scrnum;
XSetWindowAttributes attr;
@@ -133,6 +138,12 @@ make_x_window(Display *x_dpy, EGLDisplay egl_dpy,
scrnum = DefaultScreen( x_dpy );
root = RootWindow( x_dpy, scrnum );
+ if (es_ver == 1)
+ attribs[1] = EGL_OPENGL_ES_BIT;
+ else
+ attribs[1] = EGL_OPENGL_ES2_BIT;
+ ctx_attribs[1] = es_ver;
+
if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs)) {
printf("Error: couldn't get an EGL visual config\n");
exit(1);
@@ -180,7 +191,7 @@ make_x_window(Display *x_dpy, EGLDisplay egl_dpy,
eglBindAPI(EGL_OPENGL_ES_API);
- ctx = eglCreateContext(egl_dpy, config, EGL_NO_CONTEXT, NULL );
+ ctx = eglCreateContext(egl_dpy, config, EGL_NO_CONTEXT, ctx_attribs );
if (!ctx) {
printf("Error: eglCreateContext failed\n");
exit(1);
@@ -218,7 +229,7 @@ main(int argc, char *argv[])
EGLContext egl_ctx;
EGLDisplay egl_dpy;
char *dpyName = NULL;
- EGLint egl_major, egl_minor;
+ EGLint egl_major, egl_minor, es_ver;
int i;
for (i = 1; i < argc; i++) {
@@ -250,8 +261,12 @@ main(int argc, char *argv[])
return -1;
}
+ es_ver = 1;
+ /* decide the version from the executable's name */
+ if (argc > 0 && argv[0] && strstr(argv[0], "es2"))
+ es_ver = 2;
make_x_window(x_dpy, egl_dpy,
- "ES info", 0, 0, winWidth, winHeight,
+ "ES info", 0, 0, winWidth, winHeight, es_ver,
&win, &egl_ctx, &egl_surf);
/*XMapWindow(x_dpy, win);*/
diff --git a/progs/es2/xegl/Makefile b/progs/es2/xegl/Makefile
index 88bb0127f83..5bb167c1c63 100644
--- a/progs/es2/xegl/Makefile
+++ b/progs/es2/xegl/Makefile
@@ -33,8 +33,8 @@ default: $(PROGRAMS)
-es2_info.c:
- cp ../../es1/xegl/es1_info.c es2_info.c
+es2_info.c: ../../es1/xegl/es1_info.c
+ cp -f $^ $@
es2_info: es2_info.o $(ES2_LIB_DEPS)
$(CC) $(CFLAGS) es2_info.o $(ES2_LIBS) -o $@
diff --git a/progs/es2/xegl/tri.c b/progs/es2/xegl/tri.c
index eb52b106200..7729a099578 100644
--- a/progs/es2/xegl/tri.c
+++ b/progs/es2/xegl/tri.c
@@ -242,6 +242,7 @@ make_x_window(Display *x_dpy, EGLDisplay egl_dpy,
EGL_GREEN_SIZE, 1,
EGL_BLUE_SIZE, 1,
EGL_DEPTH_SIZE, 1,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_NONE
};
static const EGLint ctx_attribs[] = {