mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-10-10 23:11:17 +02:00
1496 lines
36 KiB
Diff
1496 lines
36 KiB
Diff
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
|
|
|