aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/mesa-demos/APKBUILD11
-rw-r--r--main/mesa-demos/egl-EGL_MESA_screen_surface.patch1495
2 files changed, 1503 insertions, 3 deletions
diff --git a/main/mesa-demos/APKBUILD b/main/mesa-demos/APKBUILD
index 3e600da67d..f7add3e846 100644
--- a/main/mesa-demos/APKBUILD
+++ b/main/mesa-demos/APKBUILD
@@ -14,6 +14,7 @@ makedepends="$depends_dev mesa-dev glew-dev glu-dev freeglut-dev
install=""
subpackages=
source="ftp://ftp.freedesktop.org/pub/mesa/demos/$pkgver/$pkgname-$pkgver.tar.bz2
+ egl-EGL_MESA_screen_surface.patch
"
_builddir="$srcdir/$pkgname-$pkgver"
@@ -25,6 +26,7 @@ prepare() {
*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1
esac
done
+ autoreconf -vif
}
build() {
@@ -43,6 +45,9 @@ package() {
make -j1 DESTDIR="$pkgdir" install || return 1
}
-md5sums="72613a2c8c013716db02e3ff59d29061 mesa-demos-8.2.0.tar.bz2"
-sha256sums="e4bfecb5816ddd4b7b37c1bc876b63f1f7f06fda5879221a9774d0952f90ba92 mesa-demos-8.2.0.tar.bz2"
-sha512sums="590e9fb66e23c0ad526754e9084858eb3e1fa906be55ee6121089325254b970e135e04d53c634cabd13d59c572ea39a4a877bce14b120d73850aafd159a5c8de mesa-demos-8.2.0.tar.bz2"
+md5sums="72613a2c8c013716db02e3ff59d29061 mesa-demos-8.2.0.tar.bz2
+f61c4cd817aa046516d0670490439a02 egl-EGL_MESA_screen_surface.patch"
+sha256sums="e4bfecb5816ddd4b7b37c1bc876b63f1f7f06fda5879221a9774d0952f90ba92 mesa-demos-8.2.0.tar.bz2
+42310cd105dc3cb9d509d8cb71efce5d91c5f9ad5f99317d3b6b3aa900272d40 egl-EGL_MESA_screen_surface.patch"
+sha512sums="590e9fb66e23c0ad526754e9084858eb3e1fa906be55ee6121089325254b970e135e04d53c634cabd13d59c572ea39a4a877bce14b120d73850aafd159a5c8de mesa-demos-8.2.0.tar.bz2
+5a4614d37ce5507048b8a4a670091c3708fb908d78bf1203cb760bc50639930dfe60e980972b2c46d7999c758d9bbd4bcf12f350cde4e008910d7a5d0e6d83b5 egl-EGL_MESA_screen_surface.patch"
diff --git a/main/mesa-demos/egl-EGL_MESA_screen_surface.patch b/main/mesa-demos/egl-EGL_MESA_screen_surface.patch
new file mode 100644
index 0000000000..0cf47ff2ec
--- /dev/null
+++ b/main/mesa-demos/egl-EGL_MESA_screen_surface.patch
@@ -0,0 +1,1495 @@
+From 74443c6ee79f3251f643ea05e94df58183e37d0d Mon Sep 17 00:00:00 2001
+From: Matt Turner <mattst88@gmail.com>
+Date: Fri, 28 Aug 2015 15:57:38 -0700
+Subject: egl: Remove demos using EGL_MESA_screen_surface.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The remnants of the extension were removed from Mesa in commit 7a58262e.
+
+Reviewed-by: Andreas Boll <andreas.boll.dev@gmail.com>
+Tested-by: Andreas Boll <andreas.boll.dev@gmail.com>
+Reviewed-by: Marek Olšák <marek.olsak@amd.com>
+
+diff --git a/src/egl/eglut/Makefile.am b/src/egl/eglut/Makefile.am
+index 2d2f2af..b765069 100644
+--- a/src/egl/eglut/Makefile.am
++++ b/src/egl/eglut/Makefile.am
+@@ -33,17 +33,12 @@ if HAVE_WAYLAND
+ eglut_wayland = libeglut_wayland.la
+ endif
+
+-noinst_LTLIBRARIES = libeglut_screen.la $(eglut_x11) $(eglut_wayland)
++noinst_LTLIBRARIES = $(eglut_x11) $(eglut_wayland)
+ endif
+
+-libeglut_screen_la_SOURCES = \
+- eglut.c \
+- eglut.h \
+- eglutint.h \
+- eglut_screen.c
+-
+ libeglut_x11_la_SOURCES = \
+ eglut.c \
++ eglut.h \
+ eglutint.h \
+ eglut_x11.c
+ libeglut_x11_la_CFLAGS = $(X11_CFLAGS) $(EGL_CFLAGS)
+@@ -52,6 +47,7 @@ libeglut_x11_la_LIBADD = $(X11_LIBS) $(EGL_LIBS)
+
+ libeglut_wayland_la_SOURCES = \
+ eglut.c \
++ eglut.h \
+ eglutint.h \
+ eglut_wayland.c
+
+diff --git a/src/egl/eglut/eglut.c b/src/egl/eglut/eglut.c
+index 2ee6f15..9921746 100644
+--- a/src/egl/eglut/eglut.c
++++ b/src/egl/eglut/eglut.c
+@@ -76,8 +76,7 @@ _eglutNow(void)
+ static void
+ _eglutDestroyWindow(struct eglut_window *win)
+ {
+- if (_eglut->surface_type != EGL_PBUFFER_BIT &&
+- _eglut->surface_type != EGL_SCREEN_BIT_MESA)
++ if (_eglut->surface_type != EGL_PBUFFER_BIT)
+ eglDestroySurface(_eglut->dpy, win->surface);
+
+ _eglutNativeFiniWindow(win);
+@@ -175,7 +174,6 @@ _eglutCreateWindow(const char *title, int x, int y, int w, int h)
+ win->config, win->native.u.pixmap, NULL);
+ break;
+ case EGL_PBUFFER_BIT:
+- case EGL_SCREEN_BIT_MESA:
+ win->surface = win->native.u.surface;
+ break;
+ default:
+@@ -289,9 +287,7 @@ eglutDestroyWindow(int win)
+ if (window->index != win)
+ return;
+
+- /* XXX it causes some bug in st/egl KMS backend */
+- if ( _eglut->surface_type != EGL_SCREEN_BIT_MESA)
+- eglMakeCurrent(_eglut->dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
++ eglMakeCurrent(_eglut->dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+
+ _eglutDestroyWindow(_eglut->current);
+ }
+diff --git a/src/egl/eglut/eglut_screen.c b/src/egl/eglut/eglut_screen.c
+deleted file mode 100644
+index 021a8f1..0000000
+--- a/src/egl/eglut/eglut_screen.c
++++ /dev/null
+@@ -1,180 +0,0 @@
+-/*
+- * Copyright (C) 2010 LunarG Inc.
+- *
+- * Permission is hereby granted, free of charge, to any person obtaining a
+- * copy of this software and associated documentation files (the "Software"),
+- * to deal in the Software without restriction, including without limitation
+- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+- * and/or sell copies of the Software, and to permit persons to whom the
+- * Software is furnished to do so, subject to the following conditions:
+- *
+- * The above copyright notice and this permission notice shall be included
+- * in all copies or substantial portions of the Software.
+- *
+- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+- * DEALINGS IN THE SOFTWARE.
+- *
+- * Authors:
+- * Chia-I Wu <olv@lunarg.com>
+- */
+-
+-#include <stdio.h>
+-#include <string.h>
+-#include <sys/time.h>
+-
+-#define EGL_EGLEXT_PROTOTYPES
+-#include "EGL/egl.h"
+-#include "EGL/eglext.h"
+-
+-#include "eglutint.h"
+-
+-#define MAX_MODES 100
+-
+-static EGLScreenMESA kms_screen;
+-static EGLModeMESA kms_mode;
+-static EGLint kms_width, kms_height;
+-
+-void
+-_eglutNativeInitDisplay(void)
+-{
+- _eglut->native_dpy = EGL_DEFAULT_DISPLAY;
+- _eglut->surface_type = EGL_SCREEN_BIT_MESA;
+-}
+-
+-void
+-_eglutNativeFiniDisplay(void)
+-{
+- kms_screen = 0;
+- kms_mode = 0;
+- kms_width = 0;
+- kms_height = 0;
+-}
+-
+-static void
+-init_kms(void)
+-{
+- EGLModeMESA modes[MAX_MODES];
+- EGLint num_screens, num_modes;
+- EGLint width, height, best_mode;
+- EGLint i;
+-
+- if (!eglGetScreensMESA(_eglut->dpy, &kms_screen, 1, &num_screens) ||
+- !num_screens)
+- _eglutFatal("eglGetScreensMESA failed\n");
+-
+- if (!eglGetModesMESA(_eglut->dpy, kms_screen,
+- modes, MAX_MODES, &num_modes) || !num_modes)
+- _eglutFatal("eglGetModesMESA failed!\n");
+-
+- printf("Found %d modes:\n", num_modes);
+-
+- best_mode = 0;
+- width = 0;
+- height = 0;
+- for (i = 0; i < num_modes; i++) {
+- EGLint w, h;
+- eglGetModeAttribMESA(_eglut->dpy, modes[i], EGL_WIDTH, &w);
+- eglGetModeAttribMESA(_eglut->dpy, modes[i], EGL_HEIGHT, &h);
+- printf("%3d: %d x %d\n", i, w, h);
+- if (w > width && h > height) {
+- width = w;
+- height = h;
+- best_mode = i;
+- }
+- }
+-
+- printf("Will use screen size: %d x %d\n", width, height);
+-
+- kms_mode = modes[best_mode];
+- kms_width = width;
+- kms_height = height;
+-}
+-
+-void
+-_eglutNativeInitWindow(struct eglut_window *win, const char *title,
+- int x, int y, int w, int h)
+-{
+- EGLint surf_attribs[16];
+- EGLint i;
+- const char *exts;
+-
+- exts = eglQueryString(_eglut->dpy, EGL_EXTENSIONS);
+- if (!exts || !strstr(exts, "EGL_MESA_screen_surface"))
+- _eglutFatal("EGL_MESA_screen_surface is not supported\n");
+-
+- init_kms();
+-
+- i = 0;
+- surf_attribs[i++] = EGL_WIDTH;
+- surf_attribs[i++] = kms_width;
+- surf_attribs[i++] = EGL_HEIGHT;
+- surf_attribs[i++] = kms_height;
+- surf_attribs[i++] = EGL_NONE;
+-
+- /* create surface */
+- win->native.u.surface = eglCreateScreenSurfaceMESA(_eglut->dpy,
+- win->config, surf_attribs);
+- if (win->native.u.surface == EGL_NO_SURFACE)
+- _eglutFatal("eglCreateScreenSurfaceMESA failed\n");
+-
+- if (!eglShowScreenSurfaceMESA(_eglut->dpy, kms_screen,
+- win->native.u.surface, kms_mode))
+- _eglutFatal("eglShowScreenSurfaceMESA failed\n");
+-
+- win->native.width = kms_width;
+- win->native.height = kms_height;
+-}
+-
+-void
+-_eglutNativeFiniWindow(struct eglut_window *win)
+-{
+- eglShowScreenSurfaceMESA(_eglut->dpy,
+- kms_screen, EGL_NO_SURFACE, 0);
+- eglDestroySurface(_eglut->dpy, win->native.u.surface);
+-}
+-
+-void
+-_eglutNativeEventLoop(void)
+-{
+- int start = _eglutNow();
+- int frames = 0;
+-
+- _eglut->redisplay = 1;
+-
+- while (1) {
+- struct eglut_window *win = _eglut->current;
+- int now = _eglutNow();
+-
+- if (now - start > 5000) {
+- double elapsed = (double) (now - start) / 1000.0;
+-
+- printf("%d frames in %3.1f seconds = %6.3f FPS\n",
+- frames, elapsed, frames / elapsed);
+- fflush(stdout);
+-
+- start = now;
+- frames = 0;
+-
+- /* send escape */
+- if (win->keyboard_cb)
+- win->keyboard_cb(27);
+- }
+-
+- if (_eglut->idle_cb)
+- _eglut->idle_cb();
+-
+- if (_eglut->redisplay) {
+- _eglut->redisplay = 0;
+-
+- if (win->display_cb)
+- win->display_cb();
+- eglSwapBuffers(_eglut->dpy, win->surface);
+- frames++;
+- }
+- }
+-}
+diff --git a/src/egl/opengl/Makefile.am b/src/egl/opengl/Makefile.am
+index 0c7228f..fe7faa9 100644
+--- a/src/egl/opengl/Makefile.am
++++ b/src/egl/opengl/Makefile.am
+@@ -51,20 +51,12 @@ endif
+
+ if HAVE_EGL
+ noinst_PROGRAMS = \
+- demo1 \
+- demo2 \
+- demo3 \
+ eglinfo \
+- eglgears_screen \
+- egltri_screen \
+ peglgears \
+ $(EGL_DRM_DEMOS) \
+ $(EGL_X11_DEMOS)
+ endif
+
+-egltri_screen_SOURCES = egltri.c
+-eglgears_screen_SOURCES = eglgears.c
+-
+ egltri_x11_SOURCES = egltri.c
+ eglgears_x11_SOURCES = eglgears.c
+
+@@ -73,9 +65,6 @@ egltri_x11_LDFLAGS = $(AM_LDFLAGS) $(X11_LIBS)
+ xeglgears_LDFLAGS = $(AM_LDFLAGS) $(X11_LIBS)
+ xeglthreads_LDFLAGS = $(AM_LDFLAGS) $(X11_LIBS) -pthread
+
+-eglgears_screen_LDADD = ../eglut/libeglut_screen.la
+-egltri_screen_LDADD = ../eglut/libeglut_screen.la
+-
+ eglgears_x11_LDADD = ../eglut/libeglut_x11.la
+ egltri_x11_LDADD = ../eglut/libeglut_x11.la
+
+diff --git a/src/egl/opengl/demo1.c b/src/egl/opengl/demo1.c
+deleted file mode 100644
+index d892734..0000000
+--- a/src/egl/opengl/demo1.c
++++ /dev/null
+@@ -1,147 +0,0 @@
+-/*
+- * Exercise EGL API functions
+- */
+-
+-#define EGL_EGLEXT_PROTOTYPES
+-
+-#include <EGL/egl.h>
+-#include <EGL/eglext.h>
+-#include <assert.h>
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-
+-
+-/**
+- * Test EGL_MESA_screen_surface functions
+- */
+-static void
+-TestScreens(EGLDisplay dpy)
+-{
+-#define MAX 8
+- EGLScreenMESA screens[MAX];
+- EGLint numScreens;
+- EGLint i;
+-
+- eglGetScreensMESA(dpy, screens, MAX, &numScreens);
+- printf("Found %d screens\n", numScreens);
+- for (i = 0; i < numScreens; i++) {
+- printf(" Screen %d handle: %d\n", i, (int) screens[i]);
+- }
+-}
+-
+-/**
+- * Print table of all available configurations.
+- */
+-static void
+-PrintConfigs(EGLDisplay d, EGLConfig *configs, EGLint numConfigs)
+-{
+- EGLint i;
+-
+- printf("Configurations:\n");
+- printf(" bf lv d st colorbuffer dp st supported \n");
+- printf(" id sz l b ro r g b a th cl surfaces \n");
+- printf("----------------------------------------------\n");
+- for (i = 0; i < numConfigs; i++) {
+- EGLint id, size, level;
+- EGLint red, green, blue, alpha;
+- EGLint depth, stencil;
+- EGLint surfaces;
+- EGLint doubleBuf = 1, stereo = 0;
+- char surfString[100] = "";
+-
+- eglGetConfigAttrib(d, configs[i], EGL_CONFIG_ID, &id);
+- eglGetConfigAttrib(d, configs[i], EGL_BUFFER_SIZE, &size);
+- eglGetConfigAttrib(d, configs[i], EGL_LEVEL, &level);
+-
+- eglGetConfigAttrib(d, configs[i], EGL_RED_SIZE, &red);
+- eglGetConfigAttrib(d, configs[i], EGL_GREEN_SIZE, &green);
+- eglGetConfigAttrib(d, configs[i], EGL_BLUE_SIZE, &blue);
+- eglGetConfigAttrib(d, configs[i], EGL_ALPHA_SIZE, &alpha);
+- eglGetConfigAttrib(d, configs[i], EGL_DEPTH_SIZE, &depth);
+- eglGetConfigAttrib(d, configs[i], EGL_STENCIL_SIZE, &stencil);
+- eglGetConfigAttrib(d, configs[i], EGL_SURFACE_TYPE, &surfaces);
+-
+- if (surfaces & EGL_WINDOW_BIT)
+- strcat(surfString, "win,");
+- if (surfaces & EGL_PBUFFER_BIT)
+- strcat(surfString, "pb,");
+- if (surfaces & EGL_PIXMAP_BIT)
+- strcat(surfString, "pix,");
+- if (strlen(surfString) > 0)
+- surfString[strlen(surfString) - 1] = 0;
+-
+- printf("0x%02x %2d %2d %c %c %2d %2d %2d %2d %2d %2d %-12s\n",
+- id, size, level,
+- doubleBuf ? 'y' : '.',
+- stereo ? 'y' : '.',
+- red, green, blue, alpha,
+- depth, stencil, surfString);
+- }
+-}
+-
+-
+-
+-int
+-main(int argc, char *argv[])
+-{
+- int maj, min;
+- EGLContext ctx;
+- EGLSurface pbuffer;
+- EGLConfig *configs;
+- EGLint numConfigs;
+- EGLBoolean b;
+- const EGLint pbufAttribs[] = {
+- EGL_WIDTH, 500,
+- EGL_HEIGHT, 500,
+- EGL_NONE
+- };
+-
+- EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+- assert(d);
+-
+- if (!eglInitialize(d, &maj, &min)) {
+- printf("demo: eglInitialize failed\n");
+- exit(1);
+- }
+-
+- printf("EGL version = %d.%d\n", maj, min);
+- printf("EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR));
+-
+- eglGetConfigs(d, NULL, 0, &numConfigs);
+- configs = malloc(sizeof(*configs) *numConfigs);
+- eglGetConfigs(d, configs, numConfigs, &numConfigs);
+-
+- 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");
+- return 0;
+- }
+-
+- pbuffer = eglCreatePbufferSurface(d, configs[0], pbufAttribs);
+- if (pbuffer == EGL_NO_SURFACE) {
+- printf("failed to create pbuffer\n");
+- return 0;
+- }
+-
+- free(configs);
+-
+- b = eglMakeCurrent(d, pbuffer, pbuffer, ctx);
+- if (!b) {
+- printf("make current failed\n");
+- return 0;
+- }
+-
+- b = eglMakeCurrent(d, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
+-
+- TestScreens(d);
+-
+- eglDestroySurface(d, pbuffer);
+- eglDestroyContext(d, ctx);
+- eglTerminate(d);
+-
+- return 0;
+-}
+diff --git a/src/egl/opengl/demo2.c b/src/egl/opengl/demo2.c
+deleted file mode 100644
+index 505b474..0000000
+--- a/src/egl/opengl/demo2.c
++++ /dev/null
+@@ -1,216 +0,0 @@
+-/*
+- * Exercise EGL API functions
+- */
+-
+-#define EGL_EGLEXT_PROTOTYPES
+-
+-#include <assert.h>
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <unistd.h>
+-
+-#include <EGL/egl.h>
+-#include <EGL/eglext.h>
+-#include "gl_wrap.h"
+-
+-/*#define FRONTBUFFER*/
+-
+-static void _subset_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2,
+- GLfloat r, GLfloat g, GLfloat b)
+-{
+- GLfloat v[4][2], c[4][4];
+- int i;
+-
+- v[0][0] = x1; v[0][1] = y1;
+- v[1][0] = x2; v[1][1] = y1;
+- v[2][0] = x2; v[2][1] = y2;
+- v[3][0] = x1; v[3][1] = y2;
+-
+- for (i = 0; i < 4; i++) {
+- c[i][0] = r;
+- c[i][1] = g;
+- c[i][2] = b;
+- c[i][3] = 1.0;
+- }
+-
+- glVertexPointer(2, GL_FLOAT, 0, v);
+- glColorPointer(4, GL_FLOAT, 0, c);
+- glEnableClientState(GL_VERTEX_ARRAY);
+- glEnableClientState(GL_COLOR_ARRAY);
+-
+- glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+-
+- glDisableClientState(GL_VERTEX_ARRAY);
+- glDisableClientState(GL_COLOR_ARRAY);
+-}
+-
+-
+-static void redraw(EGLDisplay dpy, EGLSurface surf, int rot)
+-{
+- GLfloat r, g, b;
+-
+- printf("Redraw event\n");
+-
+- glClearColor( rand()/(float)RAND_MAX,
+- rand()/(float)RAND_MAX,
+- rand()/(float)RAND_MAX,
+- 1);
+-
+- glClear( GL_COLOR_BUFFER_BIT );
+-
+- r = rand()/(float)RAND_MAX;
+- g = rand()/(float)RAND_MAX;
+- b = rand()/(float)RAND_MAX;
+-
+- glPushMatrix();
+- glRotatef(rot, 0, 0, 1);
+- glScalef(.5, .5, .5);
+- _subset_Rectf( -1, -1, 1, 1, r, g, b );
+- glPopMatrix();
+-
+-#ifdef FRONTBUFFER
+- glFlush();
+-#else
+- eglSwapBuffers( dpy, surf );
+-#endif
+- glFinish();
+-}
+-
+-
+-/**
+- * Test EGL_MESA_screen_surface functions
+- */
+-static void
+-TestScreens(EGLDisplay dpy)
+-{
+-#define MAX 8
+- EGLScreenMESA screens[MAX];
+- EGLint numScreens;
+- EGLint i;
+-
+- eglGetScreensMESA(dpy, screens, MAX, &numScreens);
+- printf("Found %d screens\n", numScreens);
+- for (i = 0; i < numScreens; i++) {
+- printf(" Screen %d handle: %d\n", i, (int) screens[i]);
+- }
+-}
+-
+-
+-int
+-main(int argc, char *argv[])
+-{
+- int maj, min;
+- EGLContext ctx;
+- EGLSurface pbuffer, screen_surf;
+- EGLConfig configs[10];
+- EGLint numConfigs, i;
+- EGLBoolean b;
+- const EGLint pbufAttribs[] = {
+- EGL_WIDTH, 500,
+- EGL_HEIGHT, 500,
+- EGL_NONE
+- };
+- EGLint screenAttribs[32];
+- EGLModeMESA mode;
+- EGLScreenMESA screen;
+- EGLint count;
+-
+- EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+- assert(d);
+-
+- if (!eglInitialize(d, &maj, &min)) {
+- printf("demo: eglInitialize failed\n");
+- exit(1);
+- }
+-
+- printf("EGL version = %d.%d\n", maj, min);
+- printf("EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR));
+- if (!strstr(eglQueryString(d, EGL_EXTENSIONS),
+- "EGL_MESA_screen_surface")) {
+- printf("EGL_MESA_screen_surface is not supported\n");
+- exit(1);
+- }
+-
+- eglGetConfigs(d, configs, 10, &numConfigs);
+- printf("Got %d EGL configs:\n", numConfigs);
+- for (i = 0; i < numConfigs; i++) {
+- EGLint id, red, depth;
+- eglGetConfigAttrib(d, configs[i], EGL_CONFIG_ID, &id);
+- eglGetConfigAttrib(d, configs[i], EGL_RED_SIZE, &red);
+- eglGetConfigAttrib(d, configs[i], EGL_DEPTH_SIZE, &depth);
+- printf("%2d: Red Size = %d Depth Size = %d\n", id, red, depth);
+- }
+-
+- 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;
+- }
+-
+- pbuffer = eglCreatePbufferSurface(d, configs[0], pbufAttribs);
+- if (pbuffer == EGL_NO_SURFACE) {
+- printf("failed to create pbuffer\n");
+- return 0;
+- }
+-
+- b = eglMakeCurrent(d, pbuffer, pbuffer, ctx);
+- if (!b) {
+- printf("make current failed\n");
+- return 0;
+- }
+-
+- 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");
+- return 0;
+- }
+-
+- eglShowScreenSurfaceMESA(d, screen, screen_surf, mode);
+-
+- b = eglMakeCurrent(d, screen_surf, screen_surf, ctx);
+- if (!b) {
+- printf("make current failed\n");
+- return 0;
+- }
+-
+- glViewport(0, 0, 1024, 768);
+-
+- glClearColor( 0,
+- 1.0,
+- 0,
+- 1);
+-
+- glClear( GL_COLOR_BUFFER_BIT );
+-
+-
+- TestScreens(d);
+-
+- glShadeModel( GL_FLAT );
+-
+- for (i = 0; i < 6; i++) {
+- redraw(d, screen_surf, i*10 );
+-
+- printf("sleep(1)\n");
+- sleep(1);
+- }
+-
+- eglDestroySurface(d, pbuffer);
+- eglDestroyContext(d, ctx);
+- eglTerminate(d);
+-
+- return 0;
+-}
+diff --git a/src/egl/opengl/demo3.c b/src/egl/opengl/demo3.c
+deleted file mode 100644
+index f84ca23..0000000
+--- a/src/egl/opengl/demo3.c
++++ /dev/null
+@@ -1,647 +0,0 @@
+-/*
+- * Exercise EGL API functions
+- */
+-
+-#define EGL_EGLEXT_PROTOTYPES
+-
+-#include <EGL/egl.h>
+-#include <EGL/eglext.h>
+-#include "gl_wrap.h"
+-#include <assert.h>
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <unistd.h>
+-
+-
+-
+-#define PIXEL_CENTER(x) ((long)(x) + 0.5)
+-
+-#define GAP 10
+-#define ROWS 3
+-#define COLS 4
+-
+-#define OPENGL_WIDTH 48
+-#define OPENGL_HEIGHT 13
+-
+-
+-GLenum rgb, doubleBuffer, windType;
+-GLint windW, windH;
+-
+-GLenum mode1, mode2;
+-GLint boxW, boxH;
+-GLubyte OpenGL_bits[] = {
+- 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+- 0x7f, 0xfb, 0xff, 0xff, 0xff, 0x01,
+- 0x7f, 0xfb, 0xff, 0xff, 0xff, 0x01,
+- 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+- 0x3e, 0x8f, 0xb7, 0xf9, 0xfc, 0x01,
+- 0x63, 0xdb, 0xb0, 0x8d, 0x0d, 0x00,
+- 0x63, 0xdb, 0xb7, 0x8d, 0x0d, 0x00,
+- 0x63, 0xdb, 0xb6, 0x8d, 0x0d, 0x00,
+- 0x63, 0x8f, 0xf3, 0xcc, 0x0d, 0x00,
+- 0x63, 0x00, 0x00, 0x0c, 0x4c, 0x0a,
+- 0x63, 0x00, 0x00, 0x0c, 0x4c, 0x0e,
+- 0x63, 0x00, 0x00, 0x8c, 0xed, 0x0e,
+- 0x3e, 0x00, 0x00, 0xf8, 0x0c, 0x00,
+-};
+-
+-
+-static void Init(void)
+-{
+-
+- mode1 = GL_TRUE;
+- mode2 = GL_TRUE;
+-}
+-
+-static void Reshape(int width, int height)
+-{
+-
+- windW = (GLint)width;
+- windH = (GLint)height;
+-}
+-
+-#if 0
+-static void RotateColorMask(void)
+-{
+- static GLint rotation = 0;
+-
+- rotation = (rotation + 1) & 0x3;
+- switch (rotation) {
+- case 0:
+- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+- glIndexMask( 0xff );
+- break;
+- case 1:
+- glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_TRUE);
+- glIndexMask(0xFE);
+- break;
+- case 2:
+- glColorMask(GL_TRUE, GL_FALSE, GL_TRUE, GL_TRUE);
+- glIndexMask(0xFD);
+- break;
+- case 3:
+- glColorMask(GL_TRUE, GL_TRUE, GL_FALSE, GL_TRUE);
+- glIndexMask(0xFB);
+- break;
+- }
+-}
+-#endif
+-
+-static void Viewport(GLint row, GLint column)
+-{
+- GLint x, y;
+-
+- boxW = (windW - (COLS + 1) * GAP) / COLS;
+- boxH = (windH - (ROWS + 1) * GAP) / ROWS;
+-
+- x = GAP + column * (boxW + GAP);
+- y = GAP + row * (boxH + GAP);
+-
+- glViewport(x, y, boxW, boxH);
+-
+- glMatrixMode(GL_PROJECTION);
+- glLoadIdentity();
+- glOrtho(-boxW/2, boxW/2, -boxH/2, boxH/2, 0.0, 1.0);
+- glMatrixMode(GL_MODELVIEW);
+-
+- glEnable(GL_SCISSOR_TEST);
+- glScissor(x, y, boxW, boxH);
+-}
+-
+-enum {
+- COLOR_BLACK = 0,
+- COLOR_RED,
+- COLOR_GREEN,
+- COLOR_YELLOW,
+- COLOR_BLUE,
+- COLOR_MAGENTA,
+- COLOR_CYAN,
+- COLOR_WHITE
+-};
+-
+-static float RGBMap[9][3] = {
+- {0, 0, 0},
+- {1, 0, 0},
+- {0, 1, 0},
+- {1, 1, 0},
+- {0, 0, 1},
+- {1, 0, 1},
+- {0, 1, 1},
+- {1, 1, 1},
+- {0.5, 0.5, 0.5}
+-};
+-
+-static void SetColor(int c)
+-{
+- glColor3fv(RGBMap[c]);
+-}
+-
+-static void Point(void)
+-{
+- GLint i;
+-
+- glBegin(GL_POINTS);
+- SetColor(COLOR_WHITE);
+- glVertex2i(0, 0);
+- for (i = 1; i < 8; i++) {
+- GLint j = i * 2;
+- SetColor(COLOR_BLACK+i);
+- glVertex2i(-j, -j);
+- glVertex2i(-j, 0);
+- glVertex2i(-j, j);
+- glVertex2i(0, j);
+- glVertex2i(j, j);
+- glVertex2i(j, 0);
+- glVertex2i(j, -j);
+- glVertex2i(0, -j);
+- }
+- glEnd();
+-}
+-
+-static void Lines(void)
+-{
+- GLint i;
+-
+- glPushMatrix();
+-
+- glTranslatef(-12, 0, 0);
+- for (i = 1; i < 8; i++) {
+- SetColor(COLOR_BLACK+i);
+- glBegin(GL_LINES);
+- glVertex2i(-boxW/4, -boxH/4);
+- glVertex2i(boxW/4, boxH/4);
+- glEnd();
+- glTranslatef(4, 0, 0);
+- }
+-
+- glPopMatrix();
+-
+- glBegin(GL_LINES);
+- glVertex2i(0, 0);
+- glEnd();
+-}
+-
+-static void LineStrip(void)
+-{
+-
+- glBegin(GL_LINE_STRIP);
+- SetColor(COLOR_RED);
+- glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(-boxH/4));
+- SetColor(COLOR_GREEN);
+- glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(boxH/4));
+- SetColor(COLOR_BLUE);
+- glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(boxH/4));
+- SetColor(COLOR_WHITE);
+- glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(-boxH/4));
+- glEnd();
+-
+- glBegin(GL_LINE_STRIP);
+- glVertex2i(0, 0);
+- glEnd();
+-}
+-
+-static void LineLoop(void)
+-{
+-
+- glBegin(GL_LINE_LOOP);
+- SetColor(COLOR_RED);
+- glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(-boxH/4));
+- SetColor(COLOR_GREEN);
+- glVertex2f(PIXEL_CENTER(-boxW/4), PIXEL_CENTER(boxH/4));
+- SetColor(COLOR_BLUE);
+- glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(boxH/4));
+- SetColor(COLOR_WHITE);
+- glVertex2f(PIXEL_CENTER(boxW/4), PIXEL_CENTER(-boxH/4));
+- glEnd();
+-
+- glEnable(GL_LOGIC_OP);
+- glLogicOp(GL_XOR);
+-
+- glEnable(GL_BLEND);
+- glBlendFunc(GL_ONE, GL_ONE);
+-
+- SetColor(COLOR_MAGENTA);
+- glBegin(GL_LINE_LOOP);
+- glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(-boxH/8));
+- glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(boxH/8));
+- glEnd();
+- glBegin(GL_LINE_LOOP);
+- glVertex2f(PIXEL_CENTER(-boxW/8), PIXEL_CENTER(boxH/8+5));
+- glVertex2f(PIXEL_CENTER(boxW/8), PIXEL_CENTER(boxH/8+5));
+- glEnd();
+- glDisable(GL_LOGIC_OP);
+- glDisable(GL_BLEND);
+-
+- SetColor(COLOR_GREEN);
+- glBegin(GL_POINTS);
+- glVertex2i(0, 0);
+- glEnd();
+-
+- glBegin(GL_LINE_LOOP);
+- glVertex2i(0, 0);
+- glEnd();
+-}
+-
+-static void Bitmap(void)
+-{
+-
+- glBegin(GL_LINES);
+- SetColor(COLOR_GREEN);
+- glVertex2i(-boxW/2, 0);
+- glVertex2i(boxW/2, 0);
+- glVertex2i(0, -boxH/2);
+- glVertex2i(0, boxH/2);
+- SetColor(COLOR_RED);
+- glVertex2i(0, -3);
+- glVertex2i(0, -3+OPENGL_HEIGHT);
+- SetColor(COLOR_BLUE);
+- glVertex2i(0, -3);
+- glVertex2i(OPENGL_WIDTH, -3);
+- glEnd();
+-
+- SetColor(COLOR_GREEN);
+-
+- glPixelStorei(GL_UNPACK_LSB_FIRST, GL_TRUE);
+- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+-
+- glRasterPos2i(0, 0);
+- glBitmap(OPENGL_WIDTH, OPENGL_HEIGHT, 0, 3, 0.0, 0.0, OpenGL_bits);
+-}
+-
+-static void Triangles(void)
+-{
+-
+- glBegin(GL_TRIANGLES);
+- SetColor(COLOR_GREEN);
+- glVertex2i(-boxW/4, -boxH/4);
+- SetColor(COLOR_RED);
+- glVertex2i(-boxW/8, -boxH/16);
+- SetColor(COLOR_BLUE);
+- glVertex2i(boxW/8, -boxH/16);
+-
+- SetColor(COLOR_GREEN);
+- glVertex2i(-boxW/4, boxH/4);
+- SetColor(COLOR_RED);
+- glVertex2i(-boxW/8, boxH/16);
+- SetColor(COLOR_BLUE);
+- glVertex2i(boxW/8, boxH/16);
+- glEnd();
+-
+- glBegin(GL_TRIANGLES);
+- glVertex2i(0, 0);
+- glVertex2i(-100, 100);
+- glEnd();
+-}
+-
+-static void TriangleStrip(void)
+-{
+-
+- glBegin(GL_TRIANGLE_STRIP);
+- SetColor(COLOR_GREEN);
+- glVertex2i(-boxW/4, -boxH/4);
+- SetColor(COLOR_RED);
+- glVertex2i(-boxW/4, boxH/4);
+- SetColor(COLOR_BLUE);
+- glVertex2i(0, -boxH/4);
+- SetColor(COLOR_WHITE);
+- glVertex2i(0, boxH/4);
+- SetColor(COLOR_CYAN);
+- glVertex2i(boxW/4, -boxH/4);
+- SetColor(COLOR_YELLOW);
+- glVertex2i(boxW/4, boxH/4);
+- glEnd();
+-
+- glBegin(GL_TRIANGLE_STRIP);
+- glVertex2i(0, 0);
+- glVertex2i(-100, 100);
+- glEnd();
+-}
+-
+-static void TriangleFan(void)
+-{
+- GLint vx[8][2];
+- GLint x0, y0, x1, y1, x2, y2, x3, y3;
+- GLint i;
+-
+- y0 = -boxH/4;
+- y1 = y0 + boxH/2/3;
+- y2 = y1 + boxH/2/3;
+- y3 = boxH/4;
+- x0 = -boxW/4;
+- x1 = x0 + boxW/2/3;
+- x2 = x1 + boxW/2/3;
+- x3 = boxW/4;
+-
+- vx[0][0] = x0; vx[0][1] = y1;
+- vx[1][0] = x0; vx[1][1] = y2;
+- vx[2][0] = x1; vx[2][1] = y3;
+- vx[3][0] = x2; vx[3][1] = y3;
+- vx[4][0] = x3; vx[4][1] = y2;
+- vx[5][0] = x3; vx[5][1] = y1;
+- vx[6][0] = x2; vx[6][1] = y0;
+- vx[7][0] = x1; vx[7][1] = y0;
+-
+- glBegin(GL_TRIANGLE_FAN);
+- SetColor(COLOR_WHITE);
+- glVertex2i(0, 0);
+- for (i = 0; i < 8; i++) {
+- SetColor(COLOR_WHITE-i);
+- glVertex2iv(vx[i]);
+- }
+- glEnd();
+-
+- glBegin(GL_TRIANGLE_FAN);
+- glVertex2i(0, 0);
+- glVertex2i(-100, 100);
+- glEnd();
+-}
+-
+-static void Rect(void)
+-{
+-
+- SetColor(COLOR_GREEN);
+- glRecti(-boxW/4, -boxH/4, boxW/4, boxH/4);
+-}
+-
+-static void PolygonFunc(void)
+-{
+- GLint vx[8][2];
+- GLint x0, y0, x1, y1, x2, y2, x3, y3;
+- GLint i;
+-
+- y0 = -boxH/4;
+- y1 = y0 + boxH/2/3;
+- y2 = y1 + boxH/2/3;
+- y3 = boxH/4;
+- x0 = -boxW/4;
+- x1 = x0 + boxW/2/3;
+- x2 = x1 + boxW/2/3;
+- x3 = boxW/4;
+-
+- vx[0][0] = x0; vx[0][1] = y1;
+- vx[1][0] = x0; vx[1][1] = y2;
+- vx[2][0] = x1; vx[2][1] = y3;
+- vx[3][0] = x2; vx[3][1] = y3;
+- vx[4][0] = x3; vx[4][1] = y2;
+- vx[5][0] = x3; vx[5][1] = y1;
+- vx[6][0] = x2; vx[6][1] = y0;
+- vx[7][0] = x1; vx[7][1] = y0;
+-
+- glBegin(GL_POLYGON);
+- for (i = 0; i < 8; i++) {
+- SetColor(COLOR_WHITE-i);
+- glVertex2iv(vx[i]);
+- }
+- glEnd();
+-
+- glBegin(GL_POLYGON);
+- glVertex2i(0, 0);
+- glVertex2i(100, 100);
+- glEnd();
+-}
+-
+-static void Quads(void)
+-{
+-
+- glBegin(GL_QUADS);
+- SetColor(COLOR_GREEN);
+- glVertex2i(-boxW/4, -boxH/4);
+- SetColor(COLOR_RED);
+- glVertex2i(-boxW/8, -boxH/16);
+- SetColor(COLOR_BLUE);
+- glVertex2i(boxW/8, -boxH/16);
+- SetColor(COLOR_WHITE);
+- glVertex2i(boxW/4, -boxH/4);
+-
+- SetColor(COLOR_GREEN);
+- glVertex2i(-boxW/4, boxH/4);
+- SetColor(COLOR_RED);
+- glVertex2i(-boxW/8, boxH/16);
+- SetColor(COLOR_BLUE);
+- glVertex2i(boxW/8, boxH/16);
+- SetColor(COLOR_WHITE);
+- glVertex2i(boxW/4, boxH/4);
+- glEnd();
+-
+- glBegin(GL_QUADS);
+- glVertex2i(0, 0);
+- glVertex2i(100, 100);
+- glVertex2i(-100, 100);
+- glEnd();
+-}
+-
+-static void QuadStrip(void)
+-{
+-
+- glBegin(GL_QUAD_STRIP);
+- SetColor(COLOR_GREEN);
+- glVertex2i(-boxW/4, -boxH/4);
+- SetColor(COLOR_RED);
+- glVertex2i(-boxW/4, boxH/4);
+- SetColor(COLOR_BLUE);
+- glVertex2i(0, -boxH/4);
+- SetColor(COLOR_WHITE);
+- glVertex2i(0, boxH/4);
+- SetColor(COLOR_CYAN);
+- glVertex2i(boxW/4, -boxH/4);
+- SetColor(COLOR_YELLOW);
+- glVertex2i(boxW/4, boxH/4);
+- glEnd();
+-
+- glBegin(GL_QUAD_STRIP);
+- glVertex2i(0, 0);
+- glVertex2i(100, 100);
+- glVertex2i(-100, 100);
+- glEnd();
+-}
+-
+-static void Draw(EGLDisplay dpy, EGLSurface surf)
+-{
+-
+- glViewport(0, 0, windW, windH);
+- glDisable(GL_SCISSOR_TEST);
+-
+- glPushAttrib(GL_COLOR_BUFFER_BIT);
+-
+- glColorMask(1, 1, 1, 1);
+- glIndexMask(~0);
+-
+- glClearColor(0.0, 0.0, 0.0, 0.0);
+- glClear(GL_COLOR_BUFFER_BIT);
+-
+- glPopAttrib();
+-
+- if (mode1) {
+- glShadeModel(GL_SMOOTH);
+- } else {
+- glShadeModel(GL_FLAT);
+- }
+-
+- if (mode2) {
+- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+- } else {
+- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+- }
+-
+- Viewport(0, 0); Point();
+- Viewport(0, 1); Lines();
+- Viewport(0, 2); LineStrip();
+- Viewport(0, 3); LineLoop();
+-
+- Viewport(1, 0); Bitmap();
+-
+- Viewport(1, 1); TriangleFan();
+- Viewport(1, 2); Triangles();
+- Viewport(1, 3); TriangleStrip();
+-
+- Viewport(2, 0); Rect();
+- Viewport(2, 1); PolygonFunc();
+- Viewport(2, 2); Quads();
+- Viewport(2, 3); QuadStrip();
+-
+- glFlush();
+-
+- if (doubleBuffer) {
+- eglSwapBuffers(dpy, surf);
+- }
+-}
+-
+-static void
+-write_ppm(const char *filename, const GLubyte *buffer, int width, int height)
+-{
+- const int binary = 0;
+- FILE *f = fopen( filename, "w" );
+- if (f) {
+- int i, x, y;
+- const GLubyte *ptr = buffer;
+- if (binary) {
+- fprintf(f,"P6\n");
+- fprintf(f,"# ppm-file created by osdemo.c\n");
+- fprintf(f,"%i %i\n", width,height);
+- fprintf(f,"255\n");
+- fclose(f);
+- f = fopen( filename, "ab" ); /* reopen in binary append mode */
+- for (y=height-1; y>=0; y--) {
+- for (x=0; x<width; x++) {
+- i = (y*width + x) * 4;
+- fputc(ptr[i], f); /* write red */
+- fputc(ptr[i+1], f); /* write green */
+- fputc(ptr[i+2], f); /* write blue */
+- }
+- }
+- }
+- else {
+- /*ASCII*/
+- int counter = 0;
+- fprintf(f,"P3\n");
+- fprintf(f,"# ascii ppm file created by osdemo.c\n");
+- fprintf(f,"%i %i\n", width, height);
+- fprintf(f,"255\n");
+- for (y=height-1; y>=0; y--) {
+- for (x=0; x<width; x++) {
+- i = (y*width + x) * 4;
+- fprintf(f, " %3d %3d %3d", ptr[i], ptr[i+1], ptr[i+2]);
+- counter++;
+- if (counter % 5 == 0)
+- fprintf(f, "\n");
+- }
+- }
+- }
+- fclose(f);
+- }
+-}
+-
+-int
+-main(int argc, char *argv[])
+-{
+- int maj, min;
+- EGLContext ctx;
+- EGLSurface screen_surf;
+- EGLConfig configs[10];
+- EGLScreenMESA screen;
+- EGLModeMESA mode;
+- EGLint numConfigs, count;
+- EGLBoolean b;
+- const GLubyte *bitmap;
+- EGLint screenAttribs[32];
+- EGLint i;
+-
+- EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+- assert(d);
+-
+- if (!eglInitialize(d, &maj, &min)) {
+- printf("demo: eglInitialize failed\n");
+- exit(1);
+- }
+-
+- printf("EGL version = %d.%d\n", maj, min);
+- printf("EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR));
+- if (!strstr(eglQueryString(d, EGL_EXTENSIONS),
+- "EGL_MESA_screen_surface")) {
+- printf("EGL_MESA_screen_surface is not supported\n");
+- exit(1);
+- }
+-
+- eglGetConfigs(d, configs, 10, &numConfigs);
+- 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");
+- return 0;
+- }
+-
+- eglShowScreenSurfaceMESA(d, screen, screen_surf, mode);
+-
+- b = eglMakeCurrent(d, screen_surf, screen_surf, ctx);
+- if (!b) {
+- printf("make current failed\n");
+- return 0;
+- }
+- glViewport(0, 0, 1024, 768);
+-
+-
+- Init();
+- Reshape(1024, 768);
+-
+- /* some drivers crash when rendering to front buffer */
+-#if 0
+- glDrawBuffer( GL_FRONT );
+- glClearColor( 0, 1.0, 0, 1);
+-
+- glClear( GL_COLOR_BUFFER_BIT );
+-#endif
+-
+- doubleBuffer = 1;
+- glDrawBuffer( GL_BACK );
+-
+- Draw(d, screen_surf);
+- sleep(2);
+-
+- /* TODO EGL_KHR_lock_surface */
+- bitmap = NULL;
+- if (bitmap)
+- write_ppm("dump.ppm", bitmap, 1024, 768);
+-
+- eglDestroySurface(d, screen_surf);
+- eglDestroyContext(d, ctx);
+- eglTerminate(d);
+-
+- return 0;
+-}
+diff --git a/src/egl/opengl/eglinfo.c b/src/egl/opengl/eglinfo.c
+index 8e82e73..1f79fef 100644
+--- a/src/egl/opengl/eglinfo.c
++++ b/src/egl/opengl/eglinfo.c
+@@ -93,10 +93,6 @@ PrintConfigs(EGLDisplay d)
+ strcat(surfString, "pb,");
+ if (surfaces & EGL_PIXMAP_BIT)
+ strcat(surfString, "pix,");
+-#ifdef EGL_MESA_screen_surface
+- if (surfaces & EGL_SCREEN_BIT_MESA)
+- strcat(surfString, "scrn,");
+-#endif
+ if (strlen(surfString) > 0)
+ surfString[strlen(surfString) - 1] = 0;
+
+@@ -117,45 +113,6 @@ PrintConfigs(EGLDisplay d)
+ }
+
+
+-/**
+- * Print table of all available configurations.
+- */
+-static void
+-PrintModes(EGLDisplay d)
+-{
+-#ifdef EGL_MESA_screen_surface
+- const char *extensions = eglQueryString(d, EGL_EXTENSIONS);
+- if (strstr(extensions, "EGL_MESA_screen_surface")) {
+- EGLScreenMESA screens[MAX_SCREENS];
+- EGLint numScreens = 1, scrn;
+- EGLModeMESA modes[MAX_MODES];
+-
+- eglGetScreensMESA(d, screens, MAX_SCREENS, &numScreens);
+- printf("Number of Screens: %d\n\n", numScreens);
+-
+- for (scrn = 0; scrn < numScreens; scrn++) {
+- EGLint numModes, i;
+-
+- eglGetModesMESA(d, screens[scrn], modes, MAX_MODES, &numModes);
+-
+- printf("Screen %d Modes:\n", scrn);
+- printf(" id width height refresh name\n");
+- printf("-----------------------------------------\n");
+- for (i = 0; i < numModes; i++) {
+- EGLint id, w, h, r;
+- const char *str;
+- eglGetModeAttribMESA(d, modes[i], EGL_MODE_ID_MESA, &id);
+- eglGetModeAttribMESA(d, modes[i], EGL_WIDTH, &w);
+- eglGetModeAttribMESA(d, modes[i], EGL_HEIGHT, &h);
+- eglGetModeAttribMESA(d, modes[i], EGL_REFRESH_RATE_MESA, &r);
+- str = eglQueryModeStringMESA(d, modes[i]);
+- printf("0x%02x %5d %5d %.3f %s\n", id, w, h, r / 1000.0, str);
+- }
+- }
+- }
+-#endif
+-}
+-
+ static void
+ PrintExtensions(EGLDisplay d)
+ {
+@@ -219,8 +176,6 @@ main(int argc, char *argv[])
+
+ PrintConfigs(d);
+
+- PrintModes(d);
+-
+ eglTerminate(d);
+
+ return 0;
+diff --git a/src/egl/opengles1/Makefile.am b/src/egl/opengles1/Makefile.am
+index 7a9828d..fa397c2 100644
+--- a/src/egl/opengles1/Makefile.am
++++ b/src/egl/opengles1/Makefile.am
+@@ -41,19 +41,15 @@ if HAVE_GLESV1
+ noinst_PROGRAMS = \
+ bindtex \
+ clear \
+- drawtex_screen \
+ drawtex_x11 \
+ eglfbdev \
+ es1_info \
+- gears_screen \
+ gears_x11 \
+ msaa \
+ pbuffer\
+ render_tex \
+ texture_from_pixmap \
+- torus_screen \
+ torus_x11 \
+- tri_screen \
+ tri_x11 \
+ two_win
+ endif
+@@ -71,21 +67,11 @@ two_win_LDADD = $(X11_LIBS)
+ clear_LDADD = ../eglut/libeglut_x11.la $(EGL_LIBS) $(X11_LIBS)
+ clear_LDFLAGS =
+
+-drawtex_screen_SOURCES = drawtex.c
+-gears_screen_SOURCES = gears.c
+-torus_screen_SOURCES = torus.c
+-tri_screen_SOURCES = tri.c
+-
+ drawtex_x11_SOURCES = drawtex.c
+ gears_x11_SOURCES = gears.c
+ torus_x11_SOURCES = torus.c
+ tri_x11_SOURCES = tri.c
+
+-drawtex_screen_LDADD = ../eglut/libeglut_screen.la
+-gears_screen_LDADD = ../eglut/libeglut_screen.la
+-torus_screen_LDADD = ../eglut/libeglut_screen.la
+-tri_screen_LDADD = ../eglut/libeglut_screen.la
+-
+ drawtex_x11_LDADD = ../eglut/libeglut_x11.la
+ gears_x11_LDADD = ../eglut/libeglut_x11.la
+ torus_x11_LDADD = ../eglut/libeglut_x11.la
+diff --git a/src/egl/openvg/Makefile.am b/src/egl/openvg/Makefile.am
+index 7318a43..b0f1212 100644
+--- a/src/egl/openvg/Makefile.am
++++ b/src/egl/openvg/Makefile.am
+@@ -50,21 +50,13 @@ endif
+ if HAVE_EGL
+ if HAVE_VG
+ noinst_PROGRAMS = \
+- lion_screen \
+- sp_screen \
+ $(EGL_X11_DEMOS)
+ endif
+ endif
+
+-lion_screen_SOURCES = lion.c lion-render.c lion-render.h
+-sp_screen_SOURCES = sp.c
+-
+ lion_x11_SOURCES = lion.c lion-render.c lion-render.h
+ sp_x11_SOURCES = sp.c
+
+-lion_screen_LDADD = ../eglut/libeglut_screen.la
+-sp_screen_LDADD = ../eglut/libeglut_screen.la
+-
+ lion_x11_LDADD = ../eglut/libeglut_x11.la
+ sp_x11_LDADD = ../eglut/libeglut_x11.la
+
+--
+cgit v0.10.2
+
+--- ./src/egl/opengles2/Makefile.am.orig
++++ ./src/egl/opengles2/Makefile.am
+@@ -37,7 +37,6 @@
+ if HAVE_GLESV2
+ bin_PROGRAMS = \
+ es2_info \
+- es2gears_screen \
+ es2gears_x11 \
+ es2tri
+ if HAVE_WAYLAND
+@@ -49,11 +48,7 @@
+ es2_info_LDADD = $(X11_LIBS)
+ es2tri_LDADD = $(X11_LIBS)
+
+-es2gears_screen_SOURCES = es2gears.c
+-
+ es2gears_x11_SOURCES = es2gears.c
+-
+-es2gears_screen_LDADD = ../eglut/libeglut_screen.la
+
+ es2gears_x11_LDADD = ../eglut/libeglut_x11.la
+