From a56306e9127a0550c308b49f4ea58c6f4351724f Mon Sep 17 00:00:00 2001 From: Pacho Ramos Date: Sat, 23 Jan 2016 14:28:10 +0100 Subject: 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 --- media-libs/cogl/cogl-1.22.0-r1.ebuild | 144 +++++++++++++++++++++ media-libs/cogl/files/cogl-1.22.0-fglrx.patch | 10 ++ .../cogl/files/cogl-1.22.0-initial-output.patch | 46 +++++++ media-libs/cogl/files/cogl-1.22.0-wait-flip.patch | 42 ++++++ 4 files changed, 242 insertions(+) create mode 100644 media-libs/cogl/cogl-1.22.0-r1.ebuild create mode 100644 media-libs/cogl/files/cogl-1.22.0-fglrx.patch create mode 100644 media-libs/cogl/files/cogl-1.22.0-initial-output.patch create mode 100644 media-libs/cogl/files/cogl-1.22.0-wait-flip.patch (limited to 'media-libs/cogl') 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} + !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 +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 +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 + -- cgit v1.2.1