[arch-commits] Commit in mutter/repos/extra-x86_64 (12 files)

Jan Steffens heftig at archlinux.org
Sun Feb 2 23:12:17 UTC 2020


    Date: Sunday, February 2, 2020 @ 23:12:16
  Author: heftig
Revision: 374517

archrelease: copy trunk to extra-x86_64

Added:
  mutter/repos/extra-x86_64/0001-EGL-Include-EGL-eglmesaext.h.patch
    (from rev 374516, mutter/trunk/0001-EGL-Include-EGL-eglmesaext.h.patch)
  mutter/repos/extra-x86_64/0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch
    (from rev 374516, mutter/trunk/0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch)
  mutter/repos/extra-x86_64/0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch
    (from rev 374516, mutter/trunk/0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch)
  mutter/repos/extra-x86_64/0004-background-Scale-monitor_area-after-texture-creation.patch
    (from rev 374516, mutter/trunk/0004-background-Scale-monitor_area-after-texture-creation.patch)
  mutter/repos/extra-x86_64/PKGBUILD
    (from rev 374516, mutter/trunk/PKGBUILD)
  mutter/repos/extra-x86_64/mutter.install
    (from rev 374516, mutter/trunk/mutter.install)
Deleted:
  mutter/repos/extra-x86_64/0001-EGL-Include-EGL-eglmesaext.h.patch
  mutter/repos/extra-x86_64/0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch
  mutter/repos/extra-x86_64/0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch
  mutter/repos/extra-x86_64/0004-background-Scale-monitor_area-after-texture-creation.patch
  mutter/repos/extra-x86_64/PKGBUILD
  mutter/repos/extra-x86_64/mutter.install

-----------------------------------------------------------------+
 0001-EGL-Include-EGL-eglmesaext.h.patch                         |  136 ++++----
 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch |   66 ++--
 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch |  128 +++----
 0004-background-Scale-monitor_area-after-texture-creation.patch |  165 +++++-----
 PKGBUILD                                                        |  146 ++++----
 mutter.install                                                  |   14 
 6 files changed, 331 insertions(+), 324 deletions(-)

Deleted: 0001-EGL-Include-EGL-eglmesaext.h.patch
===================================================================
--- 0001-EGL-Include-EGL-eglmesaext.h.patch	2020-02-02 23:10:02 UTC (rev 374516)
+++ 0001-EGL-Include-EGL-eglmesaext.h.patch	2020-02-02 23:12:16 UTC (rev 374517)
@@ -1,68 +0,0 @@
-From 3003ab6efa28cf22486bb44f4786316fca91cb7b Mon Sep 17 00:00:00 2001
-From: "Jan Alexander Steffens (heftig)" <jan.steffens at gmail.com>
-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.24.1
-

Copied: mutter/repos/extra-x86_64/0001-EGL-Include-EGL-eglmesaext.h.patch (from rev 374516, mutter/trunk/0001-EGL-Include-EGL-eglmesaext.h.patch)
===================================================================
--- 0001-EGL-Include-EGL-eglmesaext.h.patch	                        (rev 0)
+++ 0001-EGL-Include-EGL-eglmesaext.h.patch	2020-02-02 23:12:16 UTC (rev 374517)
@@ -0,0 +1,68 @@
+From 8a521c28a7d38e75478527dffb4fbeef975ea429 Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens at gmail.com>
+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-02-02 23:10:02 UTC (rev 374516)
+++ 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch	2020-02-02 23:12:16 UTC (rev 374517)
@@ -1,33 +0,0 @@
-From 548db532cd12082c2f98913150a5ab8a198f621d Mon Sep 17 00:00:00 2001
-From: Robert Mader <robert.mader at posteo.de>
-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.24.1
-

Copied: mutter/repos/extra-x86_64/0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch (from rev 374516, mutter/trunk/0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch)
===================================================================
--- 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch	                        (rev 0)
+++ 0002-surface-actor-wayland-Do-not-send-frame-callbacks-if.patch	2020-02-02 23:12:16 UTC (rev 374517)
@@ -0,0 +1,33 @@
+From 228e0cb9b15ac014e1e33a0c41fdeca8d988664a Mon Sep 17 00:00:00 2001
+From: Robert Mader <robert.mader at posteo.de>
+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-02-02 23:10:02 UTC (rev 374516)
+++ 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch	2020-02-02 23:12:16 UTC (rev 374517)
@@ -1,64 +0,0 @@
-From b5188b0032e9dad1e70030039e813273f866ab0f Mon Sep 17 00:00:00 2001
-From: Robert Mader <robert.mader at posteo.de>
-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.24.1
-

Copied: mutter/repos/extra-x86_64/0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch (from rev 374516, mutter/trunk/0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch)
===================================================================
--- 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch	                        (rev 0)
+++ 0003-xwayland-Do-not-queue-frame-callbacks-unconditionall.patch	2020-02-02 23:12:16 UTC (rev 374517)
@@ -0,0 +1,64 @@
+From b063e2ceff469f7e086fe09113acbce8962899eb Mon Sep 17 00:00:00 2001
+From: Robert Mader <robert.mader at posteo.de>
+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-02-02 23:10:02 UTC (rev 374516)
+++ 0004-background-Scale-monitor_area-after-texture-creation.patch	2020-02-02 23:12:16 UTC (rev 374517)
@@ -1,80 +0,0 @@
-From d662630a16b28e623ef3769c7ba9c02347f4775e Mon Sep 17 00:00:00 2001
-From: Daniel van Vugt <daniel.van.vugt at canonical.com>
-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 | 22 ++++++++++++++++------
- 1 file changed, 16 insertions(+), 6 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 (self->style != G_DESKTOP_BACKGROUND_STYLE_WALLPAPER)
-+      if (meta_is_stage_views_scaled ())
-         {
--          monitor_area.x *= monitor_scale;
--          monitor_area.y *= monitor_scale;
--          monitor_area.width *= monitor_scale;
--          monitor_area.height *= monitor_scale;
-+          native_width *= monitor_scale;
-+          native_height *= monitor_scale;
-         }
- 
-       if (monitor->texture == NULL)
-         {
-           CoglOffscreen *offscreen;
- 
--          monitor->texture = meta_create_texture (monitor_area.width, monitor_area.height,
-+          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 (!cogl_framebuffer_allocate (monitor->fbo, &catch_error))
-         {
-           /* Texture or framebuffer allocation failed; it's unclear why this happened;
--- 
-2.24.1
-

Copied: mutter/repos/extra-x86_64/0004-background-Scale-monitor_area-after-texture-creation.patch (from rev 374516, mutter/trunk/0004-background-Scale-monitor_area-after-texture-creation.patch)
===================================================================
--- 0004-background-Scale-monitor_area-after-texture-creation.patch	                        (rev 0)
+++ 0004-background-Scale-monitor_area-after-texture-creation.patch	2020-02-02 23:12:16 UTC (rev 374517)
@@ -0,0 +1,85 @@
+From a55610509dfd2f4371985678b252090fc0408548 Mon Sep 17 00:00:00 2001
+From: Daniel van Vugt <daniel.van.vugt at canonical.com>
+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
+

Deleted: PKGBUILD
===================================================================
--- PKGBUILD	2020-02-02 23:10:02 UTC (rev 374516)
+++ PKGBUILD	2020-02-02 23:12:16 UTC (rev 374517)
@@ -1,72 +0,0 @@
-# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens at gmail.com>
-# Maintainer: Ionut Biru <ibiru at archlinux.org>
-# Contributor: Michael Kanis <mkanis_at_gmx_dot_de>
-
-pkgname=mutter
-pkgver=3.34.3+14+g59e9b073a
-pkgrel=1
-pkgdesc="A window manager for GNOME"
-url="https://gitlab.gnome.org/GNOME/mutter"
-arch=(x86_64)
-license=(GPL)
-depends=(dconf gobject-introspection-runtime gsettings-desktop-schemas libcanberra
-         startup-notification zenity libsm gnome-desktop upower libxkbcommon-x11
-         gnome-settings-daemon libgudev libinput pipewire xorg-server-xwayland)
-makedepends=(gobject-introspection git egl-wayland meson xorg-server sysprof)
-checkdepends=(xorg-server-xvfb)
-groups=(gnome)
-install=mutter.install
-_commit=59e9b073a5bf7bb7eb332b680c573a27bd019249  # gnome-3-34
-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'
-            '6e23ce636916f7d33d05916910cbc97dbe20ca1e8f110cf3f65c95dd5c14962b'
-            'efdd77f91e087f85e6926127a4cc3a7132d4bc75ceb57e239869cbe06a1c67f6'
-            '791090835994c992cfdb0e65f70d2e8983191eda8c4c8f096819f23d916ca1a6'
-            '737dc54c7103a1830a4c4e3cfec44864dc6bce04517511ed796bc9aaaf3958b9')
-
-pkgver() {
-  cd $pkgname
-  git describe --tags | sed 's/-/+/g'
-}
-
-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() {
-  arch-meson $pkgname build \
-    -D egl_device=true \
-    -D wayland_eglstream=true \
-    -D installed_tests=false
-  ninja -C build
-}
-
-check() (
-  mkdir -p -m 700 "${XDG_RUNTIME_DIR:=$PWD/runtime-dir}"
-  glib-compile-schemas "${GSETTINGS_SCHEMA_DIR:=$PWD/build/data}"
-  export XDG_RUNTIME_DIR GSETTINGS_SCHEMA_DIR
-
-  # Unexpected passes in conform test
-  # Stacking test flaky
-  dbus-run-session xvfb-run -s '+iglx -noreset' meson test -C build --print-errorlogs || :
-)
-
-package() {
-  DESTDIR="$pkgdir" meson install -C build
-}

Copied: mutter/repos/extra-x86_64/PKGBUILD (from rev 374516, mutter/trunk/PKGBUILD)
===================================================================
--- PKGBUILD	                        (rev 0)
+++ PKGBUILD	2020-02-02 23:12:16 UTC (rev 374517)
@@ -0,0 +1,74 @@
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens at gmail.com>
+# Maintainer: Ionut Biru <ibiru at archlinux.org>
+# Contributor: Michael Kanis <mkanis_at_gmx_dot_de>
+
+pkgname=mutter
+pkgver=3.34.3+30+g4959ae8bc
+pkgrel=1
+pkgdesc="A window manager for GNOME"
+url="https://gitlab.gnome.org/GNOME/mutter"
+arch=(x86_64)
+license=(GPL)
+depends=(dconf gobject-introspection-runtime gsettings-desktop-schemas libcanberra
+         startup-notification zenity libsm gnome-desktop upower libxkbcommon-x11
+         gnome-settings-daemon libgudev libinput pipewire xorg-server-xwayland)
+makedepends=(gobject-introspection git egl-wayland meson xorg-server sysprof)
+checkdepends=(xorg-server-xvfb)
+groups=(gnome)
+install=mutter.install
+_commit=4959ae8bc4670cbd09c683d20fd07ded735e4dab  # gnome-3-34
+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')
+
+pkgver() {
+  cd $pkgname
+  git describe --tags | sed 's/-/+/g'
+}
+
+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() {
+  CFLAGS="${CFLAGS/-O2/-O3} -fno-semantic-interposition"
+  LDFLAGS+=" -Wl,-Bsymbolic"
+  arch-meson $pkgname build \
+    -D egl_device=true \
+    -D wayland_eglstream=true \
+    -D installed_tests=false
+  ninja -C build
+}
+
+check() (
+  mkdir -p -m 700 "${XDG_RUNTIME_DIR:=$PWD/runtime-dir}"
+  glib-compile-schemas "${GSETTINGS_SCHEMA_DIR:=$PWD/build/data}"
+  export XDG_RUNTIME_DIR GSETTINGS_SCHEMA_DIR
+
+  # Unexpected passes in conform test
+  # Stacking test flaky
+  dbus-run-session xvfb-run -s '+iglx -noreset' meson test -C build --print-errorlogs || :
+)
+
+package() {
+  DESTDIR="$pkgdir" meson install -C build
+}

Deleted: mutter.install
===================================================================
--- mutter.install	2020-02-02 23:10:02 UTC (rev 374516)
+++ mutter.install	2020-02-02 23:12:16 UTC (rev 374517)
@@ -1,7 +0,0 @@
-post_install() {
-  setcap cap_sys_nice+ep usr/bin/mutter
-}
-
-post_upgrade() {
-  post_install
-}

Copied: mutter/repos/extra-x86_64/mutter.install (from rev 374516, mutter/trunk/mutter.install)
===================================================================
--- mutter.install	                        (rev 0)
+++ mutter.install	2020-02-02 23:12:16 UTC (rev 374517)
@@ -0,0 +1,7 @@
+post_install() {
+  setcap cap_sys_nice+ep usr/bin/mutter
+}
+
+post_upgrade() {
+  post_install
+}



More information about the arch-commits mailing list