Index: mesa-7.4.4-1.cygport =================================================================== --- mesa-7.4.4-1.cygport (revision 7247) +++ mesa-7.4.4-1.cygport (working copy) @@ -2,13 +2,22 @@ HOMEPAGE="http://www.mesa3d.org/" SRC_URI="mirror://sourceforge/mesa3d/MesaLib-${PV}.tar.bz2 mirror://sourceforge/mesa3d/MesaDemos-${PV}.tar.bz2" -PATCH_URI="7.2-mklib.patch" +PATCH_URI="7.2-mklib.patch + 0002-PTHREADS-should-be-defined-on-cygwin-also.patch + 0004-Move-initialization-of-ext_list_first_time-out-of-DR.patch + 0005-External-texture-compressor-names-are-same-on-Cygwin.patch + 0006-Bodge-for-cygwin-link-swrast.so-with-ligGL.dll.a-as-.patch + 0007-Install-final_bins-as-well.patch + 0008-Cygwin-Various-changes-to-enable-mesa-to-be-built-fo.patch + 0009-Fix-building-of-couple-of-GLSL-demos.patch" SRC_DIR=Mesa-${PV} PKG_NAMES="mesa libGL1 libGL-devel libGLU1 libGLU-devel libGLw1 libGLw-devel - libOSMesa7 libOSMesa-devel" -mesa_CONTENTS="usr/bin/*.exe usr/share/doc/" + libOSMesa7 libOSMesa-devel mesademos" + +mesa_CONTENTS="usr/bin/glxdemo.exe usr/bin/glxgears.exe usr/bin/glxinfo.exe + usr/bin/glxheads.exe usr/share/doc/" libGL1_CONTENTS='usr/bin/cygGL-1.dll usr/lib/dri/' libGL_devel_CONTENTS="--exclude=glu* usr/include/GL/gl*.h usr/include/GL/internal usr/lib/libGL.* usr/lib/pkgconfig/gl.pc" @@ -18,10 +27,15 @@ libGLw1_CONTENTS='usr/bin/cygGLw-1.dll' libGLw_devel_CONTENTS="usr/include/GL/GLw*.h usr/lib/libGLw.* usr/lib/pkgconfig/glw.pc" -libOSMesa7_CONTENTS='usr/bin/cygOSMesa-7.dll' -libOSMesa_devel_CONTENTS="usr/include/GL/*mesa*.h usr/lib/libOSMesa.*" +#libOSMesa7_CONTENTS='usr/bin/cygOSMesa-7.dll' +#libOSMesa_devel_CONTENTS="usr/include/GL/*mesa*.h usr/lib/libOSMesa.*" +mesademos_CONTENTS="--exclude=glxdemo.exe --exclude=glxgears.exe + --exclude=glxheads.exe --exclude=glxinfo.exe usr/bin/*.exe" src_compile() { + cd ${S} + cygautoreconf + lndirs cd ${B} # --enable-xcb: only for DRI driver? @@ -29,19 +43,14 @@ --enable-shared --disable-static \ --disable-glut \ --enable-motif \ - --with-driver=xlib + --with-driver=dri --with-dri-drivers=swrast \ + --with-demos=xdemos,glsl,samples,redbook,demos cygmake -j1 APP_LIB_DEPS="-lX11" cygmake -C src/mesa gl.pc cygmake -C src/glu glu.pc cygmake -C src/glw glw.pc - - cd ${B}/src/mesa/drivers/dri/swrast - # _glapi_Dispatch/_glapi_Context are supposed to be defined by - # the implementor (i.e. XWin). The problem is that if there is no - # single implementor, then what to resolve against? - cygmake DEFINES="-DUSE_XSHM -DIN_DRI_DRIVER" MESA_MODULES="\$(TOP)/lib/libGL.dll.a" } src_test() { @@ -50,7 +59,7 @@ src_install() { cd ${B} - dobin $(find src -name '*.dll') progs/xdemos/glx{demo,gears,heads,info}.exe + dobin $(find lib -name '*.dll') progs/*/*.exe dolib lib/*.dll.a exeinto /usr/lib/dri @@ -58,7 +67,7 @@ insinto /usr/include/GL doins include/GL/gl{,ext,u,x,xext,*_mangle}.h - doins include/GL/osmesa.h +# doins include/GL/osmesa.h doins src/glw/GLw*A.h # for building xorg-server Index: 0008-Cygwin-Various-changes-to-enable-mesa-to-be-built-fo.patch =================================================================== --- 0008-Cygwin-Various-changes-to-enable-mesa-to-be-built-fo.patch (revision 0) +++ 0008-Cygwin-Various-changes-to-enable-mesa-to-be-built-fo.patch (revision 0) @@ -0,0 +1,205 @@ +From 849c5a06462e59646ec7dcba40a6dee784862d80 Mon Sep 17 00:00:00 2001 +From: Jon TURNEY +Date: Thu, 23 Jul 2009 19:28:24 +0100 +Subject: [PATCH 8/9] Cygwin: Various changes to enable mesa to be built for Cygwin -with-driver=dri -with-dri-driver=swrast rather than -with-driver=x11 + +This allows DRI driver to be built with only the swrast driver, and not +requiring the platform to have DRM support + +In configure.ac, no_drm_is_fatal is introduced to try to make behaviour on platforms which +expect to have DRM available the same as before + +Signed-off-by: Jon TURNEY +--- + configure.ac | 51 ++++++++++++++++++++++++++++++++++++++++++++---- + src/glx/x11/Makefile | 19 +++++++++++++---- + src/glx/x11/glxcmds.c | 4 ++- + src/glx/x11/glxext.c | 3 ++ + src/glx/x11/xf86dri.h | 5 ++++ + 5 files changed, 71 insertions(+), 11 deletions(-) + +diff --git a/configure.ac b/configure.ac +index b10f8b3..2c74e9f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -538,6 +538,22 @@ else + enable_xcb=no + fi + ++dnl is DRM expected on the target platform? ++case "$host_os" in ++linux*|*-gnu*|gnu*) ++ no_drm_is_fatal=yes ++ ;; ++solaris*) ++ no_drm_is_fatal=yes ++ ;; ++cygwin*) ++ no_drm_is_fatal=no ++ ;; ++darwin* ) ++ no_drm_is_fatal=no ++ ;; ++esac ++ + dnl + dnl libGL configuration per driver + dnl +@@ -572,10 +588,18 @@ dri) + fi + + # Check for libdrm +- PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED]) +- PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED]) +- GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED" +- DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED" ++ PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED], HAVE_LIBDRM=yes, HAVE_LIBDRM=no) ++ PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED], HAVE_DRI2PROTO=yes, HAVE_DRI2PROTO=no) ++ ++ if test "$HAVE_LIBDRM" = no; then ++ if test "$no_drm_is_fatal" = yes; then ++ AC_MSG_ERROR([LIBDRM $LIBDRM_REQUIRED is required by DRI driver]) ++ fi ++ LIBDRM_CFLAGS=-DNO_LIBDRM ++ else ++ GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED" ++ DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED" ++ fi + + PKG_CHECK_MODULES([LIBDRM_RADEON], [libdrm_radeon], HAVE_LIBDRM_RADEON=yes, HAVE_LIBDRM_RADEON=no) + +@@ -586,8 +610,15 @@ dri) + + # find the DRI deps for libGL + if test "$x11_pkgconfig" = yes; then ++ dri_modules="x11 xext xdamage xfixes" ++ ++ # add xf86vidmode if available ++ PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no) ++ if test "$HAVE_XF86VIDMODE" = yes ; then ++ dri_modules="$dri_modules xxf86vm" ++ fi ++ + # add xcb modules if necessary +- dri_modules="x11 xext xxf86vm xdamage xfixes" + if test "$enable_xcb" = yes; then + dri_modules="$dri_modules x11-xcb xcb-glx" + fi +@@ -764,6 +795,16 @@ if test "$mesa_driver" = dri; then + DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" + fi + ;; ++ cygwin*) ++ DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" ++ if test "x$driglx_direct" = xyes; then ++ DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" ++ fi ++ DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING" ++ if test "x$DRI_DIRS" = "xyes"; then ++ DRI_DIRS="swrast" ++ fi ++ ;; + esac + + # default drivers +diff --git a/src/glx/x11/Makefile b/src/glx/x11/Makefile +index 86d84d4..906eb95 100644 +--- a/src/glx/x11/Makefile ++++ b/src/glx/x11/Makefile +@@ -1,9 +1,21 @@ + TOP = ../../.. + include $(TOP)/configs/current + +-EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT -UIN_DRI_DRIVER \ ++EXTRA_DEFINES = -D_REENTRANT -UIN_DRI_DRIVER \ + -DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\" + ++ifdef HAVE_XF86VIDMODE ++EXTRA_DEFINES = $(EXTRA_DEFINES) -DXF86VIDMODE ++endif ++ ++ifdef HAVE_LIBDRM ++DRI_SOURCES = \ ++ dri_glx.c \ ++ XF86dri.c \ ++ dri2_glx.c \ ++ dri2.c ++endif ++ + SOURCES = \ + glcontextmodes.c \ + clientattrib.c \ +@@ -33,11 +45,8 @@ SOURCES = \ + glx_query.c \ + drisw_glx.c \ + dri_common.c \ +- dri_glx.c \ +- XF86dri.c \ + glxhash.c \ +- dri2_glx.c \ +- dri2.c ++ $(DRI_SOURCES) + + include $(TOP)/src/mesa/sources.mak + +diff --git a/src/glx/x11/glxcmds.c b/src/glx/x11/glxcmds.c +index 820d8b9..dddf535 100644 +--- a/src/glx/x11/glxcmds.c ++++ b/src/glx/x11/glxcmds.c +@@ -40,7 +40,9 @@ + + #ifdef GLX_DIRECT_RENDERING + #include ++#ifdef XF86VIDMODE + #include ++#endif + #include "xf86dri.h" + #endif + +@@ -2895,7 +2897,7 @@ static const struct name_address_pair GLX_functions[] = { + GLX_FUNCTION2( glXBindTexImageEXT, __glXBindTexImageEXT ), + GLX_FUNCTION2( glXReleaseTexImageEXT, __glXReleaseTexImageEXT ), + +-#ifdef GLX_DIRECT_RENDERING ++#if defined(GLX_DIRECT_RENDERING) && !defined(NO_LIBDRM) + /*** DRI configuration ***/ + GLX_FUNCTION( glXGetScreenDriver ), + GLX_FUNCTION( glXGetDriverConfig ), +diff --git a/src/glx/x11/glxext.c b/src/glx/x11/glxext.c +index fb2dfe4..74af9eb 100644 +--- a/src/glx/x11/glxext.c ++++ b/src/glx/x11/glxext.c +@@ -722,10 +722,13 @@ __glXInitialize(Display * dpy) + ** Note: This _must_ be done before calling any other DRI routines + ** (e.g., those called in AllocAndFetchScreenConfigs). + */ ++#ifndef NO_LIBDRM + if (glx_direct && glx_accel) { + dpyPriv->dri2Display = dri2CreateDisplay(dpy); + dpyPriv->driDisplay = driCreateDisplay(dpy); + } ++#endif ++ + if (glx_direct) + dpyPriv->driswDisplay = driswCreateDisplay(dpy); + #endif +diff --git a/src/glx/x11/xf86dri.h b/src/glx/x11/xf86dri.h +index f2d0dd5..a4388aa 100644 +--- a/src/glx/x11/xf86dri.h ++++ b/src/glx/x11/xf86dri.h +@@ -39,7 +39,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + #define _XF86DRI_H_ + + #include ++#ifndef NO_LIBDRM + #include ++#else ++typedef unsigned int drm_handle_t; ++typedef unsigned int drm_magic_t; ++#endif + + #define X_XF86DRIQueryVersion 0 + #define X_XF86DRIQueryDirectRenderingCapable 1 +-- +1.6.3.2 + Index: 0005-External-texture-compressor-names-are-same-on-Cygwin.patch =================================================================== --- 0005-External-texture-compressor-names-are-same-on-Cygwin.patch (revision 0) +++ 0005-External-texture-compressor-names-are-same-on-Cygwin.patch (revision 0) @@ -0,0 +1,27 @@ +From 0a418262979b1bd3c98621047cc6a27b755d9602 Mon Sep 17 00:00:00 2001 +From: Jon TURNEY +Date: Thu, 23 Jul 2009 19:30:02 +0100 +Subject: [PATCH 5/9] External texture compressor names are same on Cygwin as Mingw + + +Signed-off-by: Jon TURNEY +--- + src/mesa/main/texcompress_s3tc.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/src/mesa/main/texcompress_s3tc.c b/src/mesa/main/texcompress_s3tc.c +index a1c0f18..a52f714 100644 +--- a/src/mesa/main/texcompress_s3tc.c ++++ b/src/mesa/main/texcompress_s3tc.c +@@ -44,7 +44,7 @@ + #include "texformat.h" + #include "texstore.h" + +-#ifdef __MINGW32__ ++#if defined (__MINGW32__) || defined (__CYGWIN__) + #define DXTN_LIBNAME "dxtn.dll" + #define RTLD_LAZY 0 + #define RTLD_GLOBAL 0 +-- +1.6.3.2 + Index: 0006-Bodge-for-cygwin-link-swrast.so-with-ligGL.dll.a-as-.patch =================================================================== --- 0006-Bodge-for-cygwin-link-swrast.so-with-ligGL.dll.a-as-.patch (revision 0) +++ 0006-Bodge-for-cygwin-link-swrast.so-with-ligGL.dll.a-as-.patch (revision 0) @@ -0,0 +1,32 @@ +From d495840a287fba024861157fa4c6381fcac5be8c Mon Sep 17 00:00:00 2001 +From: Jon TURNEY +Date: Thu, 23 Jul 2009 19:31:07 +0100 +Subject: [PATCH 9/9] Bodge for cygwin: link swrast.so with libGL.dll.a to resolve all symbols + +_glapi_Dispatch/_glapi_Context are supposed to be defined by +the implementor (i.e. XWin). The problem is that if there is no +single implementor, then what to resolve against? + +We link again libGL.dll.a to provide those symbols (and take other +steps in XWin to avoid duplicating symbols there) + +Signed-off-by: Jon TURNEY +--- + src/mesa/drivers/dri/Makefile.template | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/src/mesa/drivers/dri/Makefile.template b/src/mesa/drivers/dri/Makefile.template +index 18dbeba..0b7ec3f 100644 +--- a/src/mesa/drivers/dri/Makefile.template ++++ b/src/mesa/drivers/dri/Makefile.template +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/src/mesa/libmesa.a $(TOP)/lib/libGL.dll.a + + COMMON_GALLIUM_SOURCES = \ + ../common/utils.c \ +-- +1.6.3.2 + Index: 0007-Install-final_bins-as-well.patch =================================================================== --- 0007-Install-final_bins-as-well.patch (revision 0) +++ 0007-Install-final_bins-as-well.patch (revision 0) @@ -0,0 +1,27 @@ +From 29d25499f01d820a7e25e42d75f58cb57123676a Mon Sep 17 00:00:00 2001 +From: Jon TURNEY +Date: Thu, 23 Jul 2009 19:31:20 +0100 +Subject: [PATCH 7/9] Install final_bins as well + + +Signed-off-by: Jon TURNEY +--- + bin/mklib | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/bin/mklib b/bin/mklib +index 2444945..42db31d 100755 +--- a/bin/mklib ++++ b/bin/mklib +@@ -972,4 +972,8 @@ esac + if [ ${INSTALLDIR} != "." ] ; then + echo "mklib: Installing" ${FINAL_LIBS} "in" ${INSTALLDIR} + mv ${FINAL_LIBS} ${INSTALLDIR}/ ++ if [ "x${FINAL_BINS}" != "x" ] ; then ++ echo "mklib: Installing" ${FINAL_BINS} "in" ${INSTALLDIR} ++ mv ${FINAL_BINS} ${INSTALLDIR} ++ fi + fi +-- +1.6.3.2 + Index: 0009-Fix-building-of-couple-of-GLSL-demos.patch =================================================================== --- 0009-Fix-building-of-couple-of-GLSL-demos.patch (revision 0) +++ 0009-Fix-building-of-couple-of-GLSL-demos.patch (revision 0) @@ -0,0 +1,43 @@ +From 26fb482e6ad23c89b5112e41412d0133749e3057 Mon Sep 17 00:00:00 2001 +From: Jon TURNEY +Date: Fri, 24 Jul 2009 20:33:25 +0100 +Subject: [PATCH 9/9] Fix building of couple of GLSL demos + + +Signed-off-by: Jon TURNEY +--- + progs/glsl/skinning.c | 3 +++ + progs/glsl/twoside.c | 3 +++ + 2 files changed, 6 insertions(+), 0 deletions(-) + +diff --git a/progs/glsl/skinning.c b/progs/glsl/skinning.c +index 65ba983..2b96f31 100644 +--- a/progs/glsl/skinning.c ++++ b/progs/glsl/skinning.c +@@ -16,6 +16,9 @@ + #include + #include "shaderutil.h" + ++#ifndef M_PI ++#define M_PI 3.1415926535 ++#endif + + static char *FragProgFile = "skinning.frag"; + static char *VertProgFile = "skinning.vert"; +diff --git a/progs/glsl/twoside.c b/progs/glsl/twoside.c +index b6c1b47..1747e62 100644 +--- a/progs/glsl/twoside.c ++++ b/progs/glsl/twoside.c +@@ -16,6 +16,9 @@ + #include + #include "shaderutil.h" + ++#ifndef M_PI ++#define M_PI 3.1415926535 ++#endif + + static GLint WinWidth = 300, WinHeight = 300; + static char *FragProgFile = NULL; +-- +1.6.3.2 + Index: 0004-Move-initialization-of-ext_list_first_time-out-of-DR.patch =================================================================== --- 0004-Move-initialization-of-ext_list_first_time-out-of-DR.patch (revision 0) +++ 0004-Move-initialization-of-ext_list_first_time-out-of-DR.patch (revision 0) @@ -0,0 +1,76 @@ +From f13537d1a9108b78a899946490d3a101ecfc4b4c Mon Sep 17 00:00:00 2001 +From: Jon TURNEY +Date: Wed, 1 Jul 2009 21:18:13 +0100 +Subject: [PATCH 4/9] Move initialization of ext_list_first_time out of DRI driver + +It needs to get set when the psc is created even if DRI is forced off, +so psc->direct_support is initialized correctly, otherwise +__glXExtensionBitIsEnabled() always returns FALSE + +Signed-off-by: Jon TURNEY +--- + src/glx/x11/dri2_glx.c | 3 --- + src/glx/x11/dri_glx.c | 3 --- + src/glx/x11/drisw_glx.c | 3 --- + src/glx/x11/glxext.c | 3 +++ + 4 files changed, 3 insertions(+), 9 deletions(-) + +diff --git a/src/glx/x11/dri2_glx.c b/src/glx/x11/dri2_glx.c +index f4865ae..084b6a8 100644 +--- a/src/glx/x11/dri2_glx.c ++++ b/src/glx/x11/dri2_glx.c +@@ -421,9 +421,6 @@ static __GLXDRIscreen *dri2CreateScreen(__GLXscreenConfigs *psc, int screen, + if (psp == NULL) + return NULL; + +- /* Initialize per screen dynamic client GLX extensions */ +- psc->ext_list_first_time = GL_TRUE; +- + if (!DRI2Connect(psc->dpy, RootWindow(psc->dpy, screen), + &driverName, &deviceName)) + return NULL; +diff --git a/src/glx/x11/dri_glx.c b/src/glx/x11/dri_glx.c +index ac2eb05..93c9ee1 100644 +--- a/src/glx/x11/dri_glx.c ++++ b/src/glx/x11/dri_glx.c +@@ -641,9 +641,6 @@ static __GLXDRIscreen *driCreateScreen(__GLXscreenConfigs *psc, int screen, + if (psp == NULL) + return NULL; + +- /* Initialize per screen dynamic client GLX extensions */ +- psc->ext_list_first_time = GL_TRUE; +- + if (!driGetDriverName(priv->dpy, screen, &driverName)) { + Xfree(psp); + return NULL; +diff --git a/src/glx/x11/drisw_glx.c b/src/glx/x11/drisw_glx.c +index 1c229dd..dc9feb4 100644 +--- a/src/glx/x11/drisw_glx.c ++++ b/src/glx/x11/drisw_glx.c +@@ -363,9 +363,6 @@ driCreateScreen(__GLXscreenConfigs * psc, int screen, + if (psp == NULL) + return NULL; + +- /* Initialize per screen dynamic client GLX extensions */ +- psc->ext_list_first_time = GL_TRUE; +- + psc->driver = driOpenDriver(driverName); + if (psc->driver == NULL) + goto handle_error; +diff --git a/src/glx/x11/glxext.c b/src/glx/x11/glxext.c +index b296b7c..fb2dfe4 100644 +--- a/src/glx/x11/glxext.c ++++ b/src/glx/x11/glxext.c +@@ -612,6 +612,9 @@ AllocAndFetchScreenConfigs(Display * dpy, __GLXdisplayPrivate * priv) + if (psc->drawHash == NULL) + continue; + ++ /* Initialize per screen dynamic client GLX extensions */ ++ psc->ext_list_first_time = GL_TRUE; ++ + if (priv->dri2Display) + psc->driScreen = (*priv->dri2Display->createScreen) (psc, i, priv); + +-- +1.6.3.2 + Index: 0002-PTHREADS-should-be-defined-on-cygwin-also.patch =================================================================== --- 0002-PTHREADS-should-be-defined-on-cygwin-also.patch (revision 0) +++ 0002-PTHREADS-should-be-defined-on-cygwin-also.patch (revision 0) @@ -0,0 +1,27 @@ +From fb31cf724a6ab274a0fe93026533b7a72e3323d2 Mon Sep 17 00:00:00 2001 +From: Jon TURNEY +Date: Tue, 23 Jun 2009 00:16:19 +0100 +Subject: [PATCH 2/9] PTHREADS should be defined on cygwin, also + +Signed-off-by: Jon TURNEY +--- + configure.ac | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 9b65d96..b10f8b3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -90,6 +90,9 @@ linux*|*-gnu*|gnu*) + solaris*) + DEFINES="$DEFINES -DPTHREADS -DSVR4" + ;; ++cygwin*) ++ DEFINES="$DEFINES -DPTHREADS" ++ ;; + esac + + dnl Add flags for gcc and g++ +-- +1.6.3.2 + Index: mesademos.hint =================================================================== --- mesademos.hint (revision 0) +++ mesademos.hint (revision 0) @@ -0,0 +1,5 @@ +category: X11 +requires: libgcc1 libGL1 libX11_6 mesa +external-source: mesa +sdesc: "X11 OpenGL libraries (demos)" +ldesc: "X11 OpenGL libraries "