summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacho Ramos <pacho@gentoo.org>2016-01-23 14:28:10 +0100
committerPacho Ramos <pacho@gentoo.org>2016-01-23 14:28:10 +0100
commita56306e9127a0550c308b49f4ea58c6f4351724f (patch)
treeb5e4ad3701e07571c89f8809ba1e035d805fadfe /media-libs/cogl
parentmedia-plugins/live: bump to 2016.01.20 (diff)
downloadgentoo-a56306e9127a0550c308b49f4ea58c6f4351724f.tar.gz
gentoo-a56306e9127a0550c308b49f4ea58c6f4351724f.tar.bz2
gentoo-a56306e9127a0550c308b49f4ea58c6f4351724f.zip
media-libs/cogl: Apply upstream fixes, also fix cogl not working at all with fglrx drivers, we need to apply the fix conditionally until someone figures out how to properly check for fglrx presence for the patch (#567168, upstream bug #756306, thanks to Olcay for reporting and testing this).
Package-Manager: portage-2.2.26
Diffstat (limited to 'media-libs/cogl')
-rw-r--r--media-libs/cogl/cogl-1.22.0-r1.ebuild144
-rw-r--r--media-libs/cogl/files/cogl-1.22.0-fglrx.patch10
-rw-r--r--media-libs/cogl/files/cogl-1.22.0-initial-output.patch46
-rw-r--r--media-libs/cogl/files/cogl-1.22.0-wait-flip.patch42
4 files changed, 242 insertions, 0 deletions
diff --git a/media-libs/cogl/cogl-1.22.0-r1.ebuild b/media-libs/cogl/cogl-1.22.0-r1.ebuild
new file mode 100644
index 000000000000..6252c25820ab
--- /dev/null
+++ b/media-libs/cogl/cogl-1.22.0-r1.ebuild
@@ -0,0 +1,144 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+GCONF_DEBUG="yes"
+
+inherit eutils gnome2 multilib virtualx
+
+DESCRIPTION="A library for using 3D graphics hardware to draw pretty pictures"
+HOMEPAGE="http://www.cogl3d.org/"
+
+LICENSE="MIT BSD"
+SLOT="1.0/20" # subslot = .so version
+
+# doc and profile disable for now due to bugs #484750 and #483332
+IUSE="examples gles2 gstreamer +introspection +kms +opengl +pango test video_cards_fglrx wayland" # doc profile
+REQUIRED_USE="
+ wayland? ( gles2 )
+ || ( gles2 opengl )
+"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86"
+
+COMMON_DEPEND="
+ >=dev-libs/glib-2.32:2
+ x11-libs/cairo:=
+ >=x11-libs/gdk-pixbuf-2:2
+ x11-libs/libX11
+ >=x11-libs/libXcomposite-0.4
+ x11-libs/libXdamage
+ x11-libs/libXext
+ >=x11-libs/libXfixes-3
+ >=x11-libs/libXrandr-1.2
+ virtual/opengl
+ gles2? ( media-libs/mesa[gles2] )
+ gstreamer? (
+ media-libs/gstreamer:1.0
+ media-libs/gst-plugins-base:1.0 )
+ introspection? ( >=dev-libs/gobject-introspection-1.34.2:= )
+ kms? (
+ media-libs/mesa[gbm]
+ x11-libs/libdrm:= )
+ pango? ( >=x11-libs/pango-1.20.0[introspection?] )
+ wayland? (
+ >=dev-libs/wayland-1.1.90
+ media-libs/mesa[egl,wayland] )
+"
+# before clutter-1.7, cogl was part of clutter
+RDEPEND="${COMMON_DEPEND}
+ !<media-libs/clutter-1.7
+"
+DEPEND="${COMMON_DEPEND}
+ >=dev-util/gtk-doc-am-1.13
+ sys-devel/gettext
+ virtual/pkgconfig
+ test? (
+ app-eselect/eselect-opengl
+ media-libs/mesa[classic] )
+"
+
+# Need classic mesa swrast for tests, llvmpipe causes a test failure
+# For some reason GL3 conformance test all fails again...
+RESTRICT="test"
+
+src_prepare() {
+ # Upstream fixes from 1.22 branch
+ # winsys-egl-kms: bypass initial output setup if kms fd passed in
+ epatch "${FILESDIR}"/${P}-initial-output.patch
+
+ # kms-winsys: don't wait for a flip when page flipping fails
+ epatch "${FILESDIR}"/${P}-wait-flip.patch
+
+ # Let cogl work with fglrx driver, bug #567168
+ # https://bugzilla.gnome.org/show_bug.cgi?id=756306
+ use video_cards_fglrx && epatch "${FILESDIR}"/${PN}-1.22.0-fglrx.patch
+
+ # Do not build examples
+ sed -e "s/^\(SUBDIRS +=.*\)examples\(.*\)$/\1\2/" \
+ -i Makefile.am Makefile.in || die
+
+ if ! use test ; then
+ # For some reason the configure switch will not completely disable
+ # tests being built
+ sed -e "s/^\(SUBDIRS =.*\)test-fixtures\(.*\)$/\1\2/" \
+ -e "s/^\(SUBDIRS +=.*\)tests\(.*\)$/\1\2/" \
+ -e "s/^\(.*am__append.* \)tests\(.*\)$/\1\2/" \
+ -i Makefile.am Makefile.in || die
+ fi
+
+ gnome2_src_prepare
+}
+
+src_configure() {
+ # TODO: think about quartz, sdl
+ # Prefer gl over gles2 if both are selected
+ # Profiling needs uprof, which is not available in portage yet, bug #484750
+ # FIXME: Doesn't provide prebuilt docs, but they can neither be rebuilt, bug #483332
+ gnome2_src_configure \
+ --disable-examples-install \
+ --disable-maintainer-flags \
+ --enable-cairo \
+ --enable-deprecated \
+ --enable-gdk-pixbuf \
+ --enable-glib \
+ $(use_enable opengl glx) \
+ $(use_enable opengl gl) \
+ $(use_enable gles2) \
+ $(use_enable gles2 cogl-gles2) \
+ $(use_enable gles2 xlib-egl-platform) \
+ $(usex gles2 --with-default-driver=$(usex opengl gl gles2)) \
+ $(use_enable gstreamer cogl-gst) \
+ $(use_enable introspection) \
+ $(use_enable kms kms-egl-platform) \
+ $(use_enable pango cogl-pango) \
+ $(use_enable test unit-tests) \
+ $(use_enable wayland wayland-egl-platform) \
+ $(use_enable wayland wayland-egl-server) \
+ --disable-profile
+# $(use_enable profile)
+}
+
+src_test() {
+ # Use swrast for tests, llvmpipe is incomplete and "test_sub_texture" fails
+ # NOTE: recheck if this is needed after every mesa bump
+ if [[ "$(eselect opengl show)" != "xorg-x11" ]]; then
+ ewarn "Skipping tests because a binary OpenGL library is enabled. To"
+ ewarn "run tests for ${PN}, you need to enable the Mesa library:"
+ ewarn "# eselect opengl set xorg-x11"
+ return
+ fi
+ LIBGL_DRIVERS_PATH="${EROOT}/usr/$(get_libdir)/mesa" Xemake check
+}
+
+src_install() {
+ if use examples; then
+ insinto /usr/share/doc/${PF}/examples
+ doins examples/{*.c,*.jpg}
+ fi
+
+ gnome2_src_install
+
+ # Remove silly examples-data directory
+ rm -rvf "${ED}/usr/share/cogl/examples-data/" || die
+}
diff --git a/media-libs/cogl/files/cogl-1.22.0-fglrx.patch b/media-libs/cogl/files/cogl-1.22.0-fglrx.patch
new file mode 100644
index 000000000000..e213d584d2f6
--- /dev/null
+++ b/media-libs/cogl/files/cogl-1.22.0-fglrx.patch
@@ -0,0 +1,10 @@
+--- 122/cogl/driver/gl/gl/cogl-driver-gl.c 2015-09-02 18:39:02.000000000 +0200
++++ 122b/cogl/driver/gl/gl/cogl-driver-gl.c 2015-10-18 10:37:14.052350142 +0200
+@@ -419,7 +419,7 @@
+ if (COGL_CHECK_GL_VERSION (ctx->glsl_major, ctx->glsl_minor, 1, 2))
+ /* We want to use version 120 if it is available so that the
+ * gl_PointCoord can be used. */
+- ctx->glsl_version_to_use = 120;
++ ctx->glsl_version_to_use = 150;
+ else
+ ctx->glsl_version_to_use = 110;
diff --git a/media-libs/cogl/files/cogl-1.22.0-initial-output.patch b/media-libs/cogl/files/cogl-1.22.0-initial-output.patch
new file mode 100644
index 000000000000..d7f9d0ff99f4
--- /dev/null
+++ b/media-libs/cogl/files/cogl-1.22.0-initial-output.patch
@@ -0,0 +1,46 @@
+From 188752158701e3a406e7fd5850b3eaf9c4798cd7 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 13 Nov 2015 13:35:05 -0500
+Subject: winsys-egl-kms: bypass initial output setup if kms fd passed in
+
+if mutter is handling the output setup, then we shouldn't do it,
+too.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=758073
+---
+ cogl/winsys/cogl-winsys-egl-kms.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/cogl/winsys/cogl-winsys-egl-kms.c b/cogl/winsys/cogl-winsys-egl-kms.c
+index b460907..6d7049d 100644
+--- a/cogl/winsys/cogl-winsys-egl-kms.c
++++ b/cogl/winsys/cogl-winsys-egl-kms.c
+@@ -663,6 +663,14 @@ _cogl_winsys_egl_display_setup (CoglDisplay *display,
+ return FALSE;
+ }
+
++ /* Force a full modeset / drmModeSetCrtc on
++ * the first swap buffers call.
++ */
++ kms_display->pending_set_crtc = TRUE;
++
++ if (kms_renderer->opened_fd < 0)
++ return TRUE;
++
+ output0 = find_output (0,
+ kms_renderer->fd,
+ resources,
+@@ -736,10 +744,6 @@ _cogl_winsys_egl_display_setup (CoglDisplay *display,
+ kms_display->width = output0->mode.hdisplay;
+ kms_display->height = output0->mode.vdisplay;
+
+- /* We defer setting the crtc modes until the first swap_buffers request of a
+- * CoglOnscreen framebuffer. */
+- kms_display->pending_set_crtc = TRUE;
+-
+ return TRUE;
+ }
+
+--
+cgit v0.11.2
+
diff --git a/media-libs/cogl/files/cogl-1.22.0-wait-flip.patch b/media-libs/cogl/files/cogl-1.22.0-wait-flip.patch
new file mode 100644
index 000000000000..b7c4d99a2812
--- /dev/null
+++ b/media-libs/cogl/files/cogl-1.22.0-wait-flip.patch
@@ -0,0 +1,42 @@
+From a583492ea2aa3ea8e78c269bd5db3f52f82aa79c Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Wed, 21 Oct 2015 15:47:01 -0400
+Subject: kms-winsys: don't wait for a flip when page flipping fails
+
+If we get EACCES from drmPageFlip we're not going to get
+a flip event and shouldn't wait for one.
+
+This commit changes the EACCES path to silently ignore the
+failed flip request and just clean up the fb.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=756926
+---
+ cogl/winsys/cogl-winsys-egl-kms.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/cogl/winsys/cogl-winsys-egl-kms.c b/cogl/winsys/cogl-winsys-egl-kms.c
+index 20c325c..b460907 100644
+--- a/cogl/winsys/cogl-winsys-egl-kms.c
++++ b/cogl/winsys/cogl-winsys-egl-kms.c
+@@ -590,7 +590,7 @@ flip_all_crtcs (CoglDisplay *display, CoglFlipKMS *flip, int fb_id)
+ for (l = kms_display->crtcs; l; l = l->next)
+ {
+ CoglKmsCrtc *crtc = l->data;
+- int ret;
++ int ret = 0;
+
+ if (crtc->count == 0 || crtc->ignore)
+ continue;
+@@ -610,7 +610,8 @@ flip_all_crtcs (CoglDisplay *display, CoglFlipKMS *flip, int fb_id)
+ }
+ }
+
+- flip->pending++;
++ if (ret == 0)
++ flip->pending++;
+ }
+
+ if (kms_renderer->page_flips_not_supported && needs_flip)
+--
+cgit v0.11.2
+