progs/egl: Fix screen surface demos.
authorChia-I Wu <olvaffe@gmail.com>
Mon, 4 Jan 2010 05:32:50 +0000 (13:32 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Tue, 12 Jan 2010 02:55:35 +0000 (10:55 +0800)
Set the screen surface size to the mode size, as the spec requires the
screen surface size to be larger than the mode size.  Besides, bind the
API to OpenGL as they are written in it.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
progs/egl/demo1.c
progs/egl/demo2.c
progs/egl/demo3.c
progs/egl/eglgears.c
progs/egl/egltri.c

index 34a516e72fcfe2876b60467eedd928d0cb357640..d892734ee55f49de55995e8dcdebbd79265e6b3b 100644 (file)
@@ -114,6 +114,7 @@ main(int argc, char *argv[])
 
    PrintConfigs(d, configs, numConfigs);
 
+   eglBindAPI(EGL_OPENGL_API);
    ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL);
    if (ctx == EGL_NO_CONTEXT) {
       printf("failed to create context\n");
index 3994656721fdbdc8c92b8ed143844f621bd1977d..b9e92f62ac2eba822a0533d92c638aabef2369cb 100644 (file)
@@ -111,11 +111,7 @@ main(int argc, char *argv[])
       EGL_HEIGHT, 500,
       EGL_NONE
    };
-   const EGLint screenAttribs[] = {
-      EGL_WIDTH, 1024,
-      EGL_HEIGHT, 768,
-      EGL_NONE
-   };
+   EGLint screenAttribs[32];
    EGLModeMESA mode;
    EGLScreenMESA screen;
    EGLint count;
@@ -149,6 +145,7 @@ main(int argc, char *argv[])
    eglGetScreensMESA(d, &screen, 1, &count);
    eglGetModesMESA(d, screen, &mode, 1, &count);
 
+   eglBindAPI(EGL_OPENGL_API);
    ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL);
    if (ctx == EGL_NO_CONTEXT) {
       printf("failed to create context\n");
@@ -169,6 +166,13 @@ main(int argc, char *argv[])
 
    b = eglMakeCurrent(d, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
 
+   i = 0;
+   screenAttribs[i++] = EGL_WIDTH;
+   eglGetModeAttribMESA(d, mode, EGL_WIDTH, &screenAttribs[i++]);
+   screenAttribs[i++] = EGL_HEIGHT;
+   eglGetModeAttribMESA(d, mode, EGL_HEIGHT, &screenAttribs[i++]);
+   screenAttribs[i] = EGL_NONE;
+
    screen_surf = eglCreateScreenSurfaceMESA(d, configs[0], screenAttribs);
    if (screen_surf == EGL_NO_SURFACE) {
       printf("failed to create screen surface\n");
index 0665fd0516ed5ce40dd3cc079a5dda63ca4c6953..64b9ee652cde18f8539925cc4da0e041aabed71b 100644 (file)
@@ -564,11 +564,8 @@ main(int argc, char *argv[])
    EGLint numConfigs, count;
    EGLBoolean b;
    const GLubyte *bitmap;
-   const EGLint screenAttribs[] = {
-      EGL_WIDTH, 1024,
-      EGL_HEIGHT, 768,
-      EGL_NONE
-   };
+   EGLint screenAttribs[32];
+   EGLint i;
 
    EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY);
    assert(d);
@@ -590,12 +587,20 @@ main(int argc, char *argv[])
    eglGetScreensMESA(d, &screen, 1, &count);
    eglGetModesMESA(d, screen, &mode, 1, &count);
 
+   eglBindAPI(EGL_OPENGL_API);
    ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL);
    if (ctx == EGL_NO_CONTEXT) {
       printf("failed to create context\n");
       return 0;
    }
 
+   i = 0;
+   screenAttribs[i++] = EGL_WIDTH;
+   eglGetModeAttribMESA(d, mode, EGL_WIDTH, &screenAttribs[i++]);
+   screenAttribs[i++] = EGL_HEIGHT;
+   eglGetModeAttribMESA(d, mode, EGL_HEIGHT, &screenAttribs[i++]);
+   screenAttribs[i] = EGL_NONE;
+
    screen_surf = eglCreateScreenSurfaceMESA(d, configs[0], screenAttribs);
    if (screen_surf == EGL_NO_SURFACE) {
       printf("failed to create screen surface\n");
index 2d9b8cac7f712902824673338eb0a1e3c36c8944..63490953aee1b11f785359d419c5484bb5bae53e 100644 (file)
@@ -426,6 +426,7 @@ main(int argc, char *argv[])
        }
        printf("eglgears: Using screen mode/size %d: %d x %d\n", chosenMode, width, height);
 
+       eglBindAPI(EGL_OPENGL_API);
        ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL);
        if (ctx == EGL_NO_CONTEXT) {
                printf("eglgears: failed to create context\n");
index 9bbc3cddaf1a351930d68e278ffaff5a00f88b4e..006e06eb03e32499c2910f9c6ac5764f7ff26fe3 100644 (file)
@@ -208,6 +208,7 @@ int main(int argc, char *argv[])
        }
        printf("egltri: Using screen mode/size %d: %d x %d\n", chosenMode, width, height);
 
+       eglBindAPI(EGL_OPENGL_API);
        ctx = eglCreateContext(d, configs[0], EGL_NO_CONTEXT, NULL);
        if (ctx == EGL_NO_CONTEXT) {
                printf("egltri: failed to create context\n");