From patchwork Thu Sep 26 23:21:54 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Spenser Gilliland X-Patchwork-Id: 278305 X-Patchwork-Delegate: patrickdepinguin+buildroot@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ozlabs.org (Postfix) with ESMTP id B75D12C00D1 for ; Fri, 27 Sep 2013 09:23:12 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id C5EDC8BF61; Thu, 26 Sep 2013 23:23:11 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id j8fge684w-Rq; Thu, 26 Sep 2013 23:23:04 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 9EFB38C099; Thu, 26 Sep 2013 23:22:33 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 574D81BF98C for ; Thu, 26 Sep 2013 23:22:27 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 4E8EE8C071 for ; Thu, 26 Sep 2013 23:22:27 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QA-mOVuWE1Vu for ; Thu, 26 Sep 2013 23:22:15 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail-ie0-f173.google.com (mail-ie0-f173.google.com [209.85.223.173]) by whitealder.osuosl.org (Postfix) with ESMTPS id D19BB81487 for ; Thu, 26 Sep 2013 23:22:13 +0000 (UTC) Received: by mail-ie0-f173.google.com with SMTP id ar20so2387989iec.4 for ; Thu, 26 Sep 2013 16:22:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=LsPcQnhtEJHdc6qeco6FBmHFkqzFN/7eF/B/C4CBbeo=; b=f3T8S0NWqO9XHXGBURfhqF8IUWY8ZV6ZtKbRkDpOV2kIB5698jD5Nqvdalw/NytGnu 0QMu6I+4fR4Ulo2Bif8Pv1kz1HNBDsKSvsuV/9aZsaMn6oZIqKjnNs3v0YtSFJKvOekQ FKmcYT+3C5t3/MbweufqQDZqp868A9nS/XOSdJX9Hpok2oCcMjEsxEyOUc2371zLwdhj fwVNN8SwawAcmgyXVfgGsimGo3IpT6qlrFOhkCdCBNm3oDG4hmWcd+NnWghUAmAlAlvS 9hx19MH8ssDDoBb51LxESqEExKTsy21nVMevjMfQ9bWouqKy61DTkHjqFDI7IozboqjG pW0A== X-Gm-Message-State: ALoCoQmGi52Db9YwFt8fMtSJOhUigYB2TvY9ESpVSb/HmoSeNrvdXPAqcAzDO4WLo+1UrGci6Kgm X-Received: by 10.42.142.129 with SMTP id s1mr4375575icu.30.1380237733231; Thu, 26 Sep 2013 16:22:13 -0700 (PDT) Received: from localhost.localdomain (dhcp138.ece.iit.edu. [216.47.144.138]) by mx.google.com with ESMTPSA id yt10sm1006232igb.9.1969.12.31.16.00.00 (version=TLSv1 cipher=RC4-SHA bits=128/128); Thu, 26 Sep 2013 16:22:12 -0700 (PDT) From: Spenser Gilliland To: buildroot@busybox.net Date: Thu, 26 Sep 2013 18:21:54 -0500 Message-Id: <1380237714-2470-12-git-send-email-spenser@gillilanding.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1380237714-2470-1-git-send-email-spenser@gillilanding.com> References: <1380237714-2470-1-git-send-email-spenser@gillilanding.com> Subject: [Buildroot] [PATCH v3 11/11] mesa3d-demos: new package X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net Signed-off-by: Spenser Gilliland --- package/Config.in | 1 + package/mesa3d-demos/Config.in | 8 + .../mesa3d-demos/mesa3d-demos-non-mesa-impl.patch | 244 ++++++++++++++++++++ .../mesa3d-demos/mesa3d-demos-optional-gl.patch | 75 ++++++ package/mesa3d-demos/mesa3d-demos-x11-fix.patch | 30 +++ package/mesa3d-demos/mesa3d-demos.mk | 63 +++++ 6 files changed, 421 insertions(+), 0 deletions(-) create mode 100644 package/mesa3d-demos/Config.in create mode 100644 package/mesa3d-demos/mesa3d-demos-non-mesa-impl.patch create mode 100644 package/mesa3d-demos/mesa3d-demos-optional-gl.patch create mode 100644 package/mesa3d-demos/mesa3d-demos-x11-fix.patch create mode 100644 package/mesa3d-demos/mesa3d-demos.mk diff --git a/package/Config.in b/package/Config.in index cf79ea0..e14265b 100644 --- a/package/Config.in +++ b/package/Config.in @@ -140,6 +140,7 @@ endmenu menu "Graphic libraries and applications (graphic/text)" comment "Graphic applications" +source "package/mesa3d-demos/Config.in" source "package/gnuplot/Config.in" source "package/jhead/Config.in" source "package/rrdtool/Config.in" diff --git a/package/mesa3d-demos/Config.in b/package/mesa3d-demos/Config.in new file mode 100644 index 0000000..24c29e0 --- /dev/null +++ b/package/mesa3d-demos/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MESA3D_DEMOS + bool "mesa3d-demos" + depends on BR2_PACKAGE_HAS_OPENGL || BR2_PACKAGE_HAS_OPENGL_ES \ + || BR2_PACKAGE_HAS_OPENGL_EGL || BR2_PACKAGE_HAS_OPENVG + help + OpenGL demos from the Mesa 3D project. + + http://mesa3d.org diff --git a/package/mesa3d-demos/mesa3d-demos-non-mesa-impl.patch b/package/mesa3d-demos/mesa3d-demos-non-mesa-impl.patch new file mode 100644 index 0000000..d370929 --- /dev/null +++ b/package/mesa3d-demos/mesa3d-demos-non-mesa-impl.patch @@ -0,0 +1,244 @@ +This makes it possible to build the demos against opengl +implementations other than Mesa + +Signed-off-by: Spenser Gilliland +--- +Index: mesa3d-demos-8.1.0/src/egl/eglut/eglut.c +=================================================================== +--- mesa3d-demos-8.1.0.orig/src/egl/eglut/eglut.c ++++ mesa3d-demos-8.1.0/src/egl/eglut/eglut.c +@@ -76,8 +76,9 @@ _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_WINDOW_BIT || ++ _eglut->surface_type == EGL_PIXMAP_BIT) + eglDestroySurface(_eglut->dpy, win->surface); + + _eglutNativeFiniWindow(win); +@@ -175,7 +176,9 @@ _eglutCreateWindow(const char *title, in + 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: +@@ -289,8 +292,10 @@ 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); + + _eglutDestroyWindow(_eglut->current); +Index: mesa3d-demos-8.1.0/src/egl/eglut/eglut_screen.c +=================================================================== +--- mesa3d-demos-8.1.0.orig/src/egl/eglut/eglut_screen.c ++++ mesa3d-demos-8.1.0/src/egl/eglut/eglut_screen.c +@@ -35,26 +35,33 @@ + + #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) + { +@@ -94,19 +101,23 @@ init_kms(void) + 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; +@@ -128,14 +139,17 @@ _eglutNativeInitWindow(struct eglut_wind + + 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 +Index: mesa3d-demos-8.1.0/src/egl/opengl/demo1.c +=================================================================== +--- mesa3d-demos-8.1.0.orig/src/egl/opengl/demo1.c ++++ mesa3d-demos-8.1.0/src/egl/opengl/demo1.c +@@ -18,6 +18,7 @@ + static void + TestScreens(EGLDisplay dpy) + { ++#ifdef EGL_MESA_screen_surface + #define MAX 8 + EGLScreenMESA screens[MAX]; + EGLint numScreens; +@@ -28,6 +29,7 @@ TestScreens(EGLDisplay dpy) + for (i = 0; i < numScreens; i++) { + printf(" Screen %d handle: %d\n", i, (int) screens[i]); + } ++#endif + } + + /** +Index: mesa3d-demos-8.1.0/src/egl/opengl/demo2.c +=================================================================== +--- mesa3d-demos-8.1.0.orig/src/egl/opengl/demo2.c ++++ mesa3d-demos-8.1.0/src/egl/opengl/demo2.c +@@ -16,6 +16,7 @@ + + /*#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) + { +@@ -95,12 +96,13 @@ TestScreens(EGLDisplay dpy) + 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]; +@@ -115,6 +117,7 @@ main(int argc, char *argv[]) + EGLModeMESA mode; + EGLScreenMESA screen; + EGLint count; ++#endif + + EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY); + assert(d); +@@ -132,6 +135,7 @@ main(int argc, char *argv[]) + 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++) { +@@ -211,6 +215,7 @@ main(int argc, char *argv[]) + eglDestroySurface(d, pbuffer); + eglDestroyContext(d, ctx); + eglTerminate(d); ++#endif + + return 0; + } +Index: mesa3d-demos-8.1.0/src/egl/opengl/demo3.c +=================================================================== +--- mesa3d-demos-8.1.0.orig/src/egl/opengl/demo3.c ++++ mesa3d-demos-8.1.0/src/egl/opengl/demo3.c +@@ -46,7 +46,7 @@ GLubyte OpenGL_bits[] = { + 0x3e, 0x00, 0x00, 0xf8, 0x0c, 0x00, + }; + +- ++#ifdef EGL_MESA_screen_surface + static void Init(void) + { + +@@ -551,11 +551,13 @@ write_ppm(const char *filename, const GL + 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]; +@@ -566,6 +568,7 @@ main(int argc, char *argv[]) + const GLubyte *bitmap; + EGLint screenAttribs[32]; + EGLint i; ++#endif + + EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY); + assert(d); +@@ -583,6 +586,7 @@ main(int argc, char *argv[]) + exit(1); + } + ++#ifdef EGL_MESA_screen_surface + eglGetConfigs(d, configs, 10, &numConfigs); + eglGetScreensMESA(d, &screen, 1, &count); + eglGetModesMESA(d, screen, &mode, 1, &count); +@@ -642,6 +646,7 @@ main(int argc, char *argv[]) + eglDestroySurface(d, screen_surf); + eglDestroyContext(d, ctx); + eglTerminate(d); ++#endif + + return 0; + } diff --git a/package/mesa3d-demos/mesa3d-demos-optional-gl.patch b/package/mesa3d-demos/mesa3d-demos-optional-gl.patch new file mode 100644 index 0000000..b198531 --- /dev/null +++ b/package/mesa3d-demos/mesa3d-demos-optional-gl.patch @@ -0,0 +1,75 @@ +This patches makes opengl an optional component. + +Signed-off-by: Spenser Gilliland +--- +Index: mesa3d-demos-8.1.0/configure.ac +=================================================================== +--- mesa3d-demos-8.1.0.orig/configure.ac ++++ mesa3d-demos-8.1.0/configure.ac +@@ -51,6 +51,14 @@ m4_ifndef([PKG_PROG_PKG_CONFIG], + ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])]) + PKG_PROG_PKG_CONFIG() + ++AC_ARG_ENABLE([gl], ++ [AS_HELP_STRING([--enable-gl], ++ [enable GL library @<:@default=no@:>@])], ++ [gl_enabled="$enableval"], ++ [gl_enabled=auto]) ++ ++if test "x$gl_enabled" != "xno"; then ++ + dnl Get the pkg-config definitions for libGL. We include a fallback + dnl path for GL implementation that don't provide a .pc file + PKG_CHECK_MODULES(GL, [gl], [], [ +@@ -103,6 +111,8 @@ PKG_CHECK_MODULES(GLU, [glu], [], + DEMO_CFLAGS="$DEMO_CFLAGS $GLU_CFLAGS" + DEMO_LIBS="$DEMO_LIBS $GLU_LIBS" + ++fi ++ + AC_ARG_ENABLE([egl], + [AS_HELP_STRING([--enable-egl], + [enable EGL library @<:@default=no@:>@])], +@@ -287,7 +297,7 @@ AC_SUBST([MESA_GLAPI]) + AC_SUBST([WAYLAND_CFLAGS]) + AC_SUBST([WAYLAND_LIBS]) + +- ++AM_CONDITIONAL(HAVE_GL, test "x$gl_enabled" = "xyes") + AM_CONDITIONAL(HAVE_EGL, test "x$egl_enabled" = "xyes") + AM_CONDITIONAL(HAVE_GLESV1, test "x$glesv1_enabled" = "xyes") + AM_CONDITIONAL(HAVE_GLESV2, test "x$glesv2_enabled" = "xyes") +Index: mesa3d-demos-8.1.0/src/egl/opengl/Makefile.am +=================================================================== +--- mesa3d-demos-8.1.0.orig/src/egl/opengl/Makefile.am ++++ mesa3d-demos-8.1.0/src/egl/opengl/Makefile.am +@@ -50,6 +50,7 @@ endif + endif + + if HAVE_EGL ++if HAVE_GL + noinst_PROGRAMS = \ + demo1 \ + demo2 \ +@@ -61,6 +62,7 @@ noinst_PROGRAMS = \ + $(EGL_DRM_DEMOS) \ + $(EGL_X11_DEMOS) + endif ++endif + + egltri_screen_SOURCES = egltri.c + eglgears_screen_SOURCES = eglgears.c +Index: mesa3d-demos-8.1.0/src/util/Makefile.am +=================================================================== +--- mesa3d-demos-8.1.0.orig/src/util/Makefile.am ++++ mesa3d-demos-8.1.0/src/util/Makefile.am +@@ -27,7 +27,9 @@ AM_CFLAGS = \ + AM_LDFLAGS = \ + $(DEMO_LIBS) + ++if HAVE_GL + noinst_LTLIBRARIES = libutil.la ++endif + + if HAVE_GLUT + AM_CFLAGS += \ diff --git a/package/mesa3d-demos/mesa3d-demos-x11-fix.patch b/package/mesa3d-demos/mesa3d-demos-x11-fix.patch new file mode 100644 index 0000000..f6b3b0c --- /dev/null +++ b/package/mesa3d-demos/mesa3d-demos-x11-fix.patch @@ -0,0 +1,30 @@ +This patch ensures that programs which depend on x11 are not build if x11 +is not available. + +Signed-off-by: Spenser Gilliland +--- +Index: mesa3d-demos-8.1.0/src/egl/opengles2/Makefile.am +=================================================================== +--- mesa3d-demos-8.1.0.orig/src/egl/opengles2/Makefile.am ++++ mesa3d-demos-8.1.0/src/egl/opengles2/Makefile.am +@@ -35,9 +35,10 @@ AM_LDFLAGS = \ + + if HAVE_EGL + if HAVE_GLESV2 +-bin_PROGRAMS = \ ++bin_PROGRAMS = es2gears_screen ++if HAVE_X11 ++bin_PROGRAMS += \ + es2_info \ +- es2gears_screen \ + es2gears_x11 \ + es2tri + if HAVE_WAYLAND +@@ -45,6 +46,7 @@ bin_PROGRAMS += es2gears_wayland + endif + endif + endif ++endif + + es2_info_LDADD = $(X11_LIBS) + es2tri_LDADD = $(X11_LIBS) diff --git a/package/mesa3d-demos/mesa3d-demos.mk b/package/mesa3d-demos/mesa3d-demos.mk new file mode 100644 index 0000000..2cb7cd8 --- /dev/null +++ b/package/mesa3d-demos/mesa3d-demos.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# mesa3d-demos +# +################################################################################ + +MESA3D_DEMOS_VERSION = 8.1.0 +MESA3D_DEMOS_SOURCE = mesa-demos-$(MESA3D_DEMOS_VERSION).tar.bz2 +MESA3D_DEMOS_SITE = ftp://ftp.freedesktop.org/pub/mesa/demos/$(MESA3D_DEMOS_VERSION) +MESA3D_DEMOS_INSTALL_STAGING = YES +MESA3D_DEMOS_AUTORECONF = YES +MESA3D_DEMOS_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_HAS_OPENGL),y) +MESA3D_DEMOS_DEPENDENCIES += libgl +MESA3D_DEMOS_CONF_OPT += --enable-gl +else +MESA3D_DEMOS_CONF_OPT += --disable-gl +endif + +ifeq ($(BR2_PACKAGE_HAS_OPENGL_EGL),y) +MESA3D_DEMOS_DEPENDENCIES += libegl +MESA3D_DEMOS_CONF_OPT += --enable-egl +else +MESA3D_DEMOS_CONF_OPT += --disable-egl +endif + +ifeq ($(BR2_PACKAGE_HAS_OPENGL_ES),y) +MESA3D_DEMOS_DEPENDENCIES += libgles +MESA3D_DEMOS_CONF_OPT += --enable-gles1 --enable-gles2 +else +MESA3D_DEMOS_CONF_OPT += --disable-gles1 --disable-gles2 +endif + +ifeq ($(BR2_PACKAGE_HAS_OPENVG),y) +MESA3D_DEMOS_DEPENDENCIES += libopenvg +MESA3D_DEMOS_CONF_OPT += --enable-vg +else +MESA3D_DEMOS_CONF_OPT += --disable-vg +endif + +ifeq ($(BR2_PACKAGE_MESA3D_GBM),y) +MESA3D_DEMOS_DEPENDENCIES += mesa3d +MESA3D_DEMOS_CONF_OPT += --enable-gbm +else +MESA3D_DEMOS_CONF_OPT += --disable-gbm +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +MESA3D_DEMOS_DEPENDENCIES += freetype +MESA3D_DEMOS_CONF_OPT += --enable-freetype2 +else +MESA3D_DEMOS_CONF_OPT += --disable-freetype2 +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +MESA3D_DEMOS_DEPENDENCIES += wayland +MESA3D_DEMOS_CONF_OPT += --enable-wayland +else +MESA3D_DEMOS_CONF_OPT += --disable-wayland +endif + +$(eval $(autotools-package))