Date: Sunday, March 8, 2020 @ 01:37:07 Author: heftig Revision: 376942
3.36.0 Modified: mutter/trunk/PKGBUILD Deleted: mutter/trunk/0001-EGL-Include-EGL-eglmesaext.h.patch mutter/trunk/0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch mutter/trunk/0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch mutter/trunk/0004-background-Scale-monitor_area-after-texture-creation.patch -----------------------------------------------------------------+ 0001-EGL-Include-EGL-eglmesaext.h.patch | 68 -------- 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch | 33 --- 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch | 64 ------- 0004-background-Scale-monitor_area-after-texture-creation.patch | 85 ---------- PKGBUILD | 30 --- 5 files changed, 6 insertions(+), 274 deletions(-) Deleted: 0001-EGL-Include-EGL-eglmesaext.h.patch =================================================================== --- 0001-EGL-Include-EGL-eglmesaext.h.patch 2020-03-08 01:34:59 UTC (rev 376941) +++ 0001-EGL-Include-EGL-eglmesaext.h.patch 2020-03-08 01:37:07 UTC (rev 376942) @@ -1,68 +0,0 @@ -From 8a521c28a7d38e75478527dffb4fbeef975ea429 Mon Sep 17 00:00:00 2001 -From: "Jan Alexander Steffens (heftig)" <[email protected]> -Date: Sun, 20 Oct 2019 12:04:31 +0200 -Subject: [PATCH 1/4] EGL: Include EGL/eglmesaext.h - -The eglext.h shipped by libglvnd does not include the Mesa extensions, -unlike the header shipped in Mesa. - -Fixes https://gitlab.gnome.org/GNOME/mutter/issues/876 ---- - cogl/cogl/meson.build | 2 +- - src/backends/meta-egl-ext.h | 1 + - src/backends/meta-egl.c | 1 + - src/backends/meta-egl.h | 1 + - 4 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/cogl/cogl/meson.build b/cogl/cogl/meson.build -index 1057ef955..9a642947d 100644 ---- a/cogl/cogl/meson.build -+++ b/cogl/cogl/meson.build -@@ -48,7 +48,7 @@ cogl_gl_header_h = configure_file( - built_headers += [cogl_gl_header_h] - - if have_egl -- cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>' -+ cogl_egl_includes_string = '#include <EGL/egl.h>\n#include <EGL/eglext.h>\n#include <EGL/eglmesaext.h>' - else - cogl_egl_includes_string = '' - endif -diff --git a/src/backends/meta-egl-ext.h b/src/backends/meta-egl-ext.h -index 8705e7d5b..db0b74f76 100644 ---- a/src/backends/meta-egl-ext.h -+++ b/src/backends/meta-egl-ext.h -@@ -29,6 +29,7 @@ - - #include <EGL/egl.h> - #include <EGL/eglext.h> -+#include <EGL/eglmesaext.h> - - /* - * This is a little different to the tests shipped with EGL implementations, -diff --git a/src/backends/meta-egl.c b/src/backends/meta-egl.c -index 6554be935..fdeff4f77 100644 ---- a/src/backends/meta-egl.c -+++ b/src/backends/meta-egl.c -@@ -27,6 +27,7 @@ - - #include <EGL/egl.h> - #include <EGL/eglext.h> -+#include <EGL/eglmesaext.h> - #include <gio/gio.h> - #include <glib.h> - #include <glib-object.h> -diff --git a/src/backends/meta-egl.h b/src/backends/meta-egl.h -index f2a816445..4591e7d85 100644 ---- a/src/backends/meta-egl.h -+++ b/src/backends/meta-egl.h -@@ -28,6 +28,7 @@ - - #include <EGL/egl.h> - #include <EGL/eglext.h> -+#include <EGL/eglmesaext.h> - #include <glib-object.h> - - #define META_EGL_ERROR meta_egl_error_quark () --- -2.25.0 - Deleted: 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch =================================================================== --- 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch 2020-03-08 01:34:59 UTC (rev 376941) +++ 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch 2020-03-08 01:37:07 UTC (rev 376942) @@ -1,33 +0,0 @@ -From 228e0cb9b15ac014e1e33a0c41fdeca8d988664a Mon Sep 17 00:00:00 2001 -From: Robert Mader <[email protected]> -Date: Mon, 4 Nov 2019 11:45:13 +0100 -Subject: [PATCH 2/4] surface-actor-wayland: Do not send frame callbacks if the - actor is obscured - -`meta_surface_actor_is_obscured` implies that the actor got successfully culled -out and nothing of it will get painted. This includes that there are no clones, -no effects etc. In this cases we don't want to send frame callbacks, thus avoiding -unnecessary client work. - -https://gitlab.gnome.org/GNOME/mutter/merge_requests/918 ---- - src/compositor/meta-surface-actor-wayland.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/compositor/meta-surface-actor-wayland.c b/src/compositor/meta-surface-actor-wayland.c -index 1c933d554..e16f53ff2 100644 ---- a/src/compositor/meta-surface-actor-wayland.c -+++ b/src/compositor/meta-surface-actor-wayland.c -@@ -115,7 +115,8 @@ meta_surface_actor_wayland_paint (ClutterActor *actor) - { - MetaSurfaceActorWayland *self = META_SURFACE_ACTOR_WAYLAND (actor); - -- if (self->surface) -+ if (self->surface && -+ !meta_surface_actor_is_obscured (META_SURFACE_ACTOR (actor))) - { - MetaWaylandCompositor *compositor = self->surface->compositor; - --- -2.25.0 - Deleted: 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch =================================================================== --- 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch 2020-03-08 01:34:59 UTC (rev 376941) +++ 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch 2020-03-08 01:37:07 UTC (rev 376942) @@ -1,64 +0,0 @@ -From b063e2ceff469f7e086fe09113acbce8962899eb Mon Sep 17 00:00:00 2001 -From: Robert Mader <[email protected]> -Date: Wed, 4 Dec 2019 18:54:42 +0100 -Subject: [PATCH 3/4] xwayland: Do not queue frame callbacks unconditionally - -The removed comment is not longer true: XWayland schedules its VSYNC -from frame callbacks nowadays. Only sending callbacks when the surface -actor is unobscured makes XWayland throttle its VSYNC to 1/sec, -reducing repaints in many cases. - -Follow up of https://gitlab.gnome.org/GNOME/mutter/merge_requests/918 - -https://gitlab.gnome.org/GNOME/mutter/merge_requests/956 ---- - src/wayland/meta-xwayland.c | 26 -------------------------- - 1 file changed, 26 deletions(-) - -diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c -index f1ad12aa3..17d7a4b20 100644 ---- a/src/wayland/meta-xwayland.c -+++ b/src/wayland/meta-xwayland.c -@@ -876,31 +876,6 @@ xwayland_surface_assigned (MetaWaylandSurfaceRole *surface_role) - surface_role_class->assigned (surface_role); - } - --static void --xwayland_surface_commit (MetaWaylandSurfaceRole *surface_role, -- MetaWaylandPendingState *pending) --{ -- MetaWaylandSurface *surface = -- meta_wayland_surface_role_get_surface (surface_role); -- MetaWaylandSurfaceRoleClass *surface_role_class = -- META_WAYLAND_SURFACE_ROLE_CLASS (meta_wayland_surface_role_xwayland_parent_class); -- -- /* For Xwayland windows, throttling frames when the window isn't actually -- * drawn is less useful, because Xwayland still has to do the drawing sent -- * from the application - the throttling would only be of sending us damage -- * messages, so we simplify and send frame callbacks after the next paint of -- * the screen, whether the window was drawn or not. -- * -- * Currently it may take a few frames before we draw the window, for not -- * completely understood reasons, and in that case, not thottling frame -- * callbacks to drawing has the happy side effect that we avoid showing the -- * user the initial black frame from when the window is mapped empty. -- */ -- meta_wayland_surface_queue_pending_state_frame_callbacks (surface, pending); -- -- surface_role_class->commit (surface_role, pending); --} -- - static MetaWaylandSurface * - xwayland_surface_get_toplevel (MetaWaylandSurfaceRole *surface_role) - { -@@ -965,7 +940,6 @@ meta_wayland_surface_role_xwayland_class_init (MetaWaylandSurfaceRoleXWaylandCla - object_class->finalize = xwayland_surface_finalize; - - surface_role_class->assigned = xwayland_surface_assigned; -- surface_role_class->commit = xwayland_surface_commit; - surface_role_class->get_toplevel = xwayland_surface_get_toplevel; - - actor_surface_class->get_geometry_scale = xwayland_surface_get_geometry_scale; --- -2.25.0 - Deleted: 0004-background-Scale-monitor_area-after-texture-creation.patch =================================================================== --- 0004-background-Scale-monitor_area-after-texture-creation.patch 2020-03-08 01:34:59 UTC (rev 376941) +++ 0004-background-Scale-monitor_area-after-texture-creation.patch 2020-03-08 01:37:07 UTC (rev 376942) @@ -1,85 +0,0 @@ -From a55610509dfd2f4371985678b252090fc0408548 Mon Sep 17 00:00:00 2001 -From: Daniel van Vugt <[email protected]> -Date: Mon, 13 Jan 2020 21:02:39 +0800 -Subject: [PATCH 4/4] background: Scale monitor_area after texture creation - -Scaling the `monitor_area` before texture creation was just wasting -megabytes of memory on resolution that the monitor can't display. This -was also hurting runtime performance. - -Example: - - Monitor is natively 1920x1080 and scale set to 3. - - Before: The monitor texture allocated was 5760x3250x4 = 74.6 MB - After: The monitor texture allocated is 1920x1080x4 = 8.3 MB - -Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/2118 - -https://gitlab.gnome.org/GNOME/mutter/merge_requests/1004 ---- - src/compositor/meta-background.c | 32 +++++++++++++++++++++----------- - 1 file changed, 21 insertions(+), 11 deletions(-) - -diff --git a/src/compositor/meta-background.c b/src/compositor/meta-background.c -index 4a1ce0396..886ae3f67 100644 ---- a/src/compositor/meta-background.c -+++ b/src/compositor/meta-background.c -@@ -20,6 +20,7 @@ - #include "config.h" - - #include "compositor/meta-background-private.h" -+#include "backends/meta-backend-private.h" - - #include <string.h> - -@@ -799,26 +800,35 @@ meta_background_get_texture (MetaBackground *self, - { - GError *catch_error = NULL; - gboolean bare_region_visible = FALSE; -+ int native_width = monitor_area.width; -+ int native_height = monitor_area.height; -+ -+ if (meta_is_stage_views_scaled ()) -+ { -+ native_width *= monitor_scale; -+ native_height *= monitor_scale; -+ } -+ -+ if (monitor->texture == NULL) -+ { -+ CoglOffscreen *offscreen; -+ -+ monitor->texture = meta_create_texture (native_width, -+ native_height, -+ COGL_TEXTURE_COMPONENTS_RGBA, -+ META_TEXTURE_FLAGS_NONE); -+ offscreen = cogl_offscreen_new_with_texture (monitor->texture); -+ monitor->fbo = COGL_FRAMEBUFFER (offscreen); -+ } - - if (self->style != G_DESKTOP_BACKGROUND_STYLE_WALLPAPER) - { - monitor_area.x *= monitor_scale; - monitor_area.y *= monitor_scale; - monitor_area.width *= monitor_scale; - monitor_area.height *= monitor_scale; - } - -- if (monitor->texture == NULL) -- { -- CoglOffscreen *offscreen; -- -- monitor->texture = meta_create_texture (monitor_area.width, monitor_area.height, -- COGL_TEXTURE_COMPONENTS_RGBA, -- META_TEXTURE_FLAGS_NONE); -- offscreen = cogl_offscreen_new_with_texture (monitor->texture); -- monitor->fbo = COGL_FRAMEBUFFER (offscreen); -- } -- - if (!cogl_framebuffer_allocate (monitor->fbo, &catch_error)) - { - /* Texture or framebuffer allocation failed; it's unclear why this happened; --- -2.25.0 - Modified: PKGBUILD =================================================================== --- PKGBUILD 2020-03-08 01:34:59 UTC (rev 376941) +++ PKGBUILD 2020-03-08 01:37:07 UTC (rev 376942) @@ -3,7 +3,7 @@ # Contributor: Michael Kanis <mkanis_at_gmx_dot_de> pkgname=mutter -pkgver=3.34.4 +pkgver=3.36.0 pkgrel=1 pkgdesc="A window manager for GNOME" url="https://gitlab.gnome.org/GNOME/mutter" @@ -14,19 +14,12 @@ gnome-settings-daemon libgudev libinput pipewire xorg-server-xwayland) makedepends=(gobject-introspection git egl-wayland meson xorg-server sysprof) checkdepends=(xorg-server-xvfb) +provides=(libmutter-6.so) groups=(gnome) install=mutter.install -_commit=0bce4323c7054794a0c7ec8442335f19bba4e239 # tags/3.34.4^0 -source=("git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit" - 0001-EGL-Include-EGL-eglmesaext.h.patch - 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch - 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch - 0004-background-Scale-monitor_area-after-texture-creation.patch) -sha256sums=('SKIP' - 'fb91e659093f14fa08a0ccb61c913d4a929ab2a175179137bc118c17425a2208' - '010d19f500e95dd45bc2420cb88b00f48f23c5496320d9ca3d4ddb5ff5b42938' - 'd797497380f1d7cc8bc691935ada3c6d48dc772daaa035d8271c5f5c097eeaf1' - '7a8db66713c2a448c131f558ec741ebfda3c85d14b857ea0bb55a5fc7d5be480') +_commit=6b852e6cb30559b2ab56bb29ccc2e8f95aa89f89 # tags/3.36.0^0 +source=("git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit") +sha256sums=('SKIP') pkgver() { cd $pkgname @@ -35,18 +28,6 @@ prepare() { cd $pkgname - - # fix build with libglvnd's EGL headers - git apply -3 ../0001-EGL-Include-EGL-eglmesaext.h.patch - - # https://gitlab.gnome.org/GNOME/mutter/merge_requests/918 - git apply -3 ../0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch - - # https://gitlab.gnome.org/GNOME/mutter/merge_requests/956 - git apply -3 ../0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch - - # https://gitlab.gnome.org/GNOME/mutter/merge_requests/1004 - git apply -3 ../0004-background-Scale-monitor_area-after-texture-creation.patch } build() { @@ -55,6 +36,7 @@ arch-meson $pkgname build \ -D egl_device=true \ -D wayland_eglstream=true \ + -D xwayland_initfd=disabled \ -D installed_tests=false ninja -C build }
