diff options
-rw-r--r-- | media-libs/cogl/cogl-1.22.0-r1.ebuild | 144 | ||||
-rw-r--r-- | media-libs/cogl/files/cogl-1.22.0-fglrx.patch | 10 | ||||
-rw-r--r-- | media-libs/cogl/files/cogl-1.22.0-initial-output.patch | 46 | ||||
-rw-r--r-- | media-libs/cogl/files/cogl-1.22.0-wait-flip.patch | 42 |
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 00000000000..6252c25820a --- /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 00000000000..e213d584d2f --- /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 00000000000..d7f9d0ff99f --- /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 00000000000..b7c4d99a281 --- /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 + |