[OE-core] [[PATCH v2 1/2] mesa-demos: remove demos using obsolete screen surface

Burton, Ross ross.burton at intel.com
Wed May 4 14:40:19 UTC 2016


Can you push these patches to a branch?  For some reason git-am isn't able
to parse the patch.

Ross

On 4 May 2016 at 10:11, Awais Belal <awais_belal at mentor.com> wrote:

> The mesa surface EGL_MESA_screen_surface was obsoleted
> and then dropped from mesa some time ago. Drop demos
> depending on this.
>
> Signed-off-by: Awais Belal <awais_belal at mentor.com>
> ---
>  ...dependant-on-obsolete-MESA_screen_surface.patch | 1592
> ++++++++++++++++++++
>  meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb     |    1 +
>  2 files changed, 1593 insertions(+)
>  create mode 100644
> meta/recipes-graphics/mesa/mesa-demos/0011-drop-demos-dependant-on-obsolete-MESA_screen_surface.patch
>
> diff --git
> a/meta/recipes-graphics/mesa/mesa-demos/0011-drop-demos-dependant-on-obsolete-MESA_screen_surface.patch
> b/meta/recipes-graphics/mesa/mesa-demos/0011-drop-demos-dependant-on-obsolete-MESA_screen_surface.patch
> new file mode 100644
> index 0000000..a2621ce
> --- /dev/null
> +++
> b/meta/recipes-graphics/mesa/mesa-demos/0011-drop-demos-dependant-on-obsolete-MESA_screen_surface.patch
> @@ -0,0 +1,1592 @@
> +commit 74443c6ee79f3251f643ea05e94df58183e37d0d
> +Author: Matt Turner <mattst88 at gmail.com>
> +Date:   Fri Aug 28 15:57:38 2015 -0700
> +
> +    egl: Remove demos using EGL_MESA_screen_surface.
> +
> +    The remnants of the extension were removed from Mesa in commit
> 7a58262e.
> +
> +    Reviewed-by: Andreas Boll <andreas.boll.dev at gmail.com>
> +    Tested-by: Andreas Boll <andreas.boll.dev at gmail.com>
> +    Reviewed-by: Marek Olšák <marek.olsak at amd.com>
> +
> +Upstream-Status: Backport
> +
> +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 f6a2ad4..58b354a 100644
> +--- a/src/egl/eglut/eglut.c
> ++++ b/src/egl/eglut/eglut.c
> +@@ -176,9 +176,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:
> +-#ifdef EGL_MESA_screen_surface
> +-   case EGL_SCREEN_BIT_MESA:
> +-#endif
> +       win->surface = win->native.u.surface;
> +       break;
> +    default:
> +@@ -292,11 +289,7 @@ eglutDestroyWindow(int win)
> +    if (window->index != win)
> +       return;
> +
> +-#ifdef EGL_MESA_screen_surface
> +-   /* XXX it causes some bug in st/egl KMS backend */
> +-   if ( _eglut->surface_type != EGL_SCREEN_BIT_MESA)
> +-#endif
> +-      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 094a4e2..0000000
> +--- a/src/egl/eglut/eglut_screen.c
> ++++ /dev/null
> +@@ -1,194 +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 at 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
> +-
> +-#ifdef EGL_MESA_screen_surface
> +-static EGLScreenMESA kms_screen;
> +-static EGLModeMESA kms_mode;
> +-static EGLint kms_width, kms_height;
> +-#endif
> +-
> +-void
> +-_eglutNativeInitDisplay(void)
> +-{
> +-#ifdef EGL_MESA_screen_surface
> +-   _eglut->native_dpy = EGL_DEFAULT_DISPLAY;
> +-   _eglut->surface_type = EGL_SCREEN_BIT_MESA;
> +-#endif
> +-}
> +-
> +-void
> +-_eglutNativeFiniDisplay(void)
> +-{
> +-#ifdef EGL_MESA_screen_surface
> +-   kms_screen = 0;
> +-   kms_mode = 0;
> +-   kms_width = 0;
> +-   kms_height = 0;
> +-#endif
> +-}
> +-
> +-#ifdef EGL_MESA_screen_surface
> +-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;
> +-}
> +-#endif
> +-
> +-void
> +-_eglutNativeInitWindow(struct eglut_window *win, const char *title,
> +-                       int x, int y, int w, int h)
> +-{
> +-#ifdef EGL_MESA_screen_surface
> +-   EGLint surf_attribs[16];
> +-   EGLint i;
> +-#endif
> +-   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");
> +-
> +-#ifdef EGL_MESA_screen_surface
> +-   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;
> +-#endif
> +-}
> +-
> +-void
> +-_eglutNativeFiniWindow(struct eglut_window *win)
> +-{
> +-#ifdef EGL_MESA_screen_surface
> +-   eglShowScreenSurfaceMESA(_eglut->dpy,
> +-         kms_screen, EGL_NO_SURFACE, 0);
> +-   eglDestroySurface(_eglut->dpy, win->native.u.surface);
> +-#endif
> +-}
> +-
> +-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 87b2f1a..3e48141 100644
> +--- a/src/egl/opengl/Makefile.am
> ++++ b/src/egl/opengl/Makefile.am
> +@@ -51,20 +51,12 @@ endif
> +
> + if HAVE_EGL
> + bin_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 06e2138..0000000
> +--- a/src/egl/opengl/demo1.c
> ++++ /dev/null
> +@@ -1,155 +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)
> +-{
> +-#ifdef EGL_MESA_screen_surface
> +-#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]);
> +-   }
> +-#endif
> +-}
> +-
> +-/**
> +- * 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));
> +-
> +-   if (!strstr(eglQueryString(d, EGL_EXTENSIONS),
> +-               "EGL_MESA_screen_surface")) {
> +-      printf("EGL_MESA_screen_surface is not supported\n");
> +-      exit(1);
> +-   }
> +-
> +-   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 bfef59e..0000000
> +--- a/src/egl/opengl/demo2.c
> ++++ /dev/null
> +@@ -1,221 +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*/
> +-
> +-#ifdef EGL_MESA_screen_surface
> +-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]);
> +-   }
> +-}
> +-#endif
> +-
> +-int
> +-main(int argc, char *argv[])
> +-{
> +-   int maj, min;
> +-#ifdef EGL_MESA_screen_surface
> +-   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;
> +-#endif
> +-
> +-   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);
> +-   }
> +-
> +-#ifdef EGL_MESA_screen_surface
> +-   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);
> +-#endif
> +-
> +-   return 0;
> +-}
> +diff --git a/src/egl/opengl/demo3.c b/src/egl/opengl/demo3.c
> +deleted file mode 100644
> +index 31b5d8b..0000000
> +--- a/src/egl/opengl/demo3.c
> ++++ /dev/null
> +@@ -1,652 +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,
> +-};
> +-
> +-#ifdef EGL_MESA_screen_surface
> +-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);
> +-   }
> +-}
> +-#endif
> +-
> +-int
> +-main(int argc, char *argv[])
> +-{
> +-   int maj, min;
> +-#ifdef EGL_MESA_screen_surface
> +-   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;
> +-#endif
> +-
> +-   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);
> +-   }
> +-
> +-#ifdef EGL_MESA_screen_surface
> +-   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);
> +-#endif
> +-
> +-   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)
> + {
> +@@ -215,8 +172,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 516e516..1cc2e1f 100644
> +--- a/src/egl/opengles1/Makefile.am
> ++++ b/src/egl/opengles1/Makefile.am
> +@@ -38,24 +38,6 @@ AM_LDFLAGS = \
> +
> + bin_PROGRAMS =
> +
> +-if HAVE_EGL
> +-if HAVE_GLESV1
> +-bin_PROGRAMS += \
> +-      drawtex_screen \
> +-      gears_screen \
> +-      torus_screen \
> +-      tri_screen
> +-
> +-drawtex_screen_SOURCES = drawtex.c
> +-gears_screen_SOURCES = gears.c
> +-torus_screen_SOURCES = torus.c
> +-tri_screen_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
> +-
> + if HAVE_X11
> + bin_PROGRAMS += \
> +       clear \
> +@@ -94,5 +76,3 @@ gears_x11_LDADD = ../eglut/libeglut_x11.la
> + torus_x11_LDADD = ../eglut/libeglut_x11.la
> + tri_x11_LDADD = ../eglut/libeglut_x11.la
> + endif
> +-endif
> +-endif
> +diff --git a/src/egl/opengles2/Makefile.am b/src/egl/opengles2/Makefile.am
> +index 74af460..422cb03 100644
> +--- a/src/egl/opengles2/Makefile.am
> ++++ b/src/egl/opengles2/Makefile.am
> +@@ -33,13 +33,7 @@ AM_LDFLAGS = \
> +       $(EGL_LIBS) \
> +       -lm
> +
> +-if HAVE_EGL
> +-if HAVE_GLESV2
> +-bin_PROGRAMS = \
> +-      es2gears_screen
> +-
> +-es2gears_screen_SOURCES = es2gears.c
> +-es2gears_screen_LDADD = ../eglut/libeglut_screen.la
> ++bin_PROGRAMS =
> +
> + if HAVE_WAYLAND
> + bin_PROGRAMS += es2gears_wayland
> +@@ -59,6 +53,4 @@ es2gears_x11_SOURCES = es2gears.c
> + es2gears_x11_LDADD = ../eglut/libeglut_x11.la
> + es2tri_LDADD = $(X11_LIBS)
> + endif
> +-endif
> +-endif
> +
> +diff --git a/src/egl/openvg/Makefile.am b/src/egl/openvg/Makefile.am
> +index b545225..5fd1cf8 100644
> +--- a/src/egl/openvg/Makefile.am
> ++++ b/src/egl/openvg/Makefile.am
> +@@ -50,21 +50,13 @@ endif
> + if HAVE_EGL
> + if HAVE_VG
> + bin_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
> +
> +diff --git a/src/egl/openvg/Makefile.in b/src/egl/openvg/Makefile.in
> +index 99e9288..3652fbb 100644
> +--- a/src/egl/openvg/Makefile.in
> ++++ b/src/egl/openvg/Makefile.in
> +@@ -108,8 +108,6 @@ host_triplet = @host@
> + @HAVE_FREETYPE2_TRUE@@HAVE_X11_TRUE at am__append_1 = \
> + @HAVE_FREETYPE2_TRUE@@HAVE_X11_TRUE@  text
> +
> +- at HAVE_EGL_TRUE@@HAVE_VG_TRUE at noinst_PROGRAMS = lion_screen$(EXEEXT) \
> +- at HAVE_EGL_TRUE@@HAVE_VG_TRUE@ sp_screen$(EXEEXT) \
> + @HAVE_EGL_TRUE@@HAVE_VG_TRUE@ $(am__EXEEXT_2)
> + subdir = src/egl/openvg
> + DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
> +@@ -128,9 +126,6 @@ CONFIG_CLEAN_VPATH_FILES =
> + @HAVE_X11_TRUE at am__EXEEXT_2 = lion_x11$(EXEEXT) sp_x11$(EXEEXT) \
> + @HAVE_X11_TRUE@       $(am__EXEEXT_1)
> + PROGRAMS = $(noinst_PROGRAMS)
> +-am_lion_screen_OBJECTS = lion.$(OBJEXT) lion-render.$(OBJEXT)
> +-lion_screen_OBJECTS = $(am_lion_screen_OBJECTS)
> +-lion_screen_DEPENDENCIES = ../eglut/libeglut_screen.la
> + AM_V_lt = $(am__v_lt_ at AM_V@)
> + am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
> + am__v_lt_0 = --silent
> +@@ -138,9 +133,6 @@ am__v_lt_1 =
> + am_lion_x11_OBJECTS = lion.$(OBJEXT) lion-render.$(OBJEXT)
> + lion_x11_OBJECTS = $(am_lion_x11_OBJECTS)
> + lion_x11_DEPENDENCIES = ../eglut/libeglut_x11.la
> +-am_sp_screen_OBJECTS = sp.$(OBJEXT)
> +-sp_screen_OBJECTS = $(am_sp_screen_OBJECTS)
> +-sp_screen_DEPENDENCIES = ../eglut/libeglut_screen.la
> + am_sp_x11_OBJECTS = sp.$(OBJEXT)
> + sp_x11_OBJECTS = $(am_sp_x11_OBJECTS)
> + sp_x11_DEPENDENCIES = ../eglut/libeglut_x11.la
> +@@ -184,10 +176,10 @@ AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
> + am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
> + am__v_CCLD_0 = @echo "  CCLD    " $@;
> + am__v_CCLD_1 =
> +-SOURCES = $(lion_screen_SOURCES) $(lion_x11_SOURCES) \
> +-      $(sp_screen_SOURCES) $(sp_x11_SOURCES) $(text_SOURCES)
> +-DIST_SOURCES = $(lion_screen_SOURCES) $(lion_x11_SOURCES) \
> +-      $(sp_screen_SOURCES) $(sp_x11_SOURCES) $(text_SOURCES)
> ++SOURCES = $(lion_x11_SOURCES) \
> ++      $(sp_x11_SOURCES) $(text_SOURCES)
> ++DIST_SOURCES = $(lion_x11_SOURCES) \
> ++      $(sp_x11_SOURCES) $(text_SOURCES)
> + RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
> +       ctags-recursive dvi-recursive html-recursive info-recursive \
> +       install-data-recursive install-dvi-recursive \
> +@@ -423,12 +415,8 @@ AM_LDFLAGS = \
> +       -lm
> +
> + @HAVE_X11_TRUE at EGL_X11_DEMOS = lion_x11 sp_x11 $(am__append_1)
> +-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
> + text_SOURCES = text.c
> +@@ -481,18 +469,10 @@ clean-noinstPROGRAMS:
> +       echo " rm -f" $$list; \
> +       rm -f $$list
> +
> +-lion_screen$(EXEEXT): $(lion_screen_OBJECTS) $(lion_screen_DEPENDENCIES)
> $(EXTRA_lion_screen_DEPENDENCIES)
> +-      @rm -f lion_screen$(EXEEXT)
> +-      $(AM_V_CCLD)$(LINK) $(lion_screen_OBJECTS) $(lion_screen_LDADD)
> $(LIBS)
> +-
> + lion_x11$(EXEEXT): $(lion_x11_OBJECTS) $(lion_x11_DEPENDENCIES)
> $(EXTRA_lion_x11_DEPENDENCIES)
> +       @rm -f lion_x11$(EXEEXT)
> +       $(AM_V_CCLD)$(LINK) $(lion_x11_OBJECTS) $(lion_x11_LDADD) $(LIBS)
> +
> +-sp_screen$(EXEEXT): $(sp_screen_OBJECTS) $(sp_screen_DEPENDENCIES)
> $(EXTRA_sp_screen_DEPENDENCIES)
> +-      @rm -f sp_screen$(EXEEXT)
> +-      $(AM_V_CCLD)$(LINK) $(sp_screen_OBJECTS) $(sp_screen_LDADD) $(LIBS)
> +-
> + sp_x11$(EXEEXT): $(sp_x11_OBJECTS) $(sp_x11_DEPENDENCIES)
> $(EXTRA_sp_x11_DEPENDENCIES)
> +       @rm -f sp_x11$(EXEEXT)
> +       $(AM_V_CCLD)$(LINK) $(sp_x11_OBJECTS) $(sp_x11_LDADD) $(LIBS)
> +
> diff --git a/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb
> b/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb
> index 557b8c6..2df9bba 100644
> --- a/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb
> +++ b/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb
> @@ -20,6 +20,7 @@ SRC_URI = "
> ftp://ftp.freedesktop.org/pub/mesa/demos/${PV}/${BPN}-${PV}.tar.bz2 \
>
>  file://0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch \
>      file://0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch \
>      file://0010-sharedtex_mt-fix-rendering-thread-hang.patch \
> +
> file://0011-drop-demos-dependant-on-obsolete-MESA_screen_surface.patch \
>  "
>  SRC_URI[md5sum] = "72613a2c8c013716db02e3ff59d29061"
>  SRC_URI[sha256sum] =
> "e4bfecb5816ddd4b7b37c1bc876b63f1f7f06fda5879221a9774d0952f90ba92"
> --
> 1.9.1
>
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20160504/3f2c6404/attachment-0002.html>


More information about the Openembedded-core mailing list