Package Details: mutter-781835-workaround 3.32.2-4

Git Clone URL: https://aur.archlinux.org/mutter-781835-workaround.git (read-only)
Package Base: mutter-781835-workaround
Description: A window manager for GNOME. This package reverts a commit which may causes performance problems for nvidia driver users. Some performance patches also included.
Upstream URL: https://gitlab.gnome.org/GNOME/mutter
Licenses: GPL
Groups: gnome
Conflicts: mutter
Provides: mutter
Submitter: Saren
Maintainer: Saren (Terence)
Last Packager: Terence
Votes: 39
Popularity: 3.893284
First Submitted: 2017-10-06 15:19
Last Updated: 2019-05-21 18:18

Dependencies (22)

Required by (12)

Sources (4)

Pinned Comments

Saren commented on 2018-08-30 14:52

If you are getting errors like fatal: bad revision '73e8cf32' while building this package, refer to PKGBUILD and see which patches caused this. Then, go to the related URLs, replace the commit hashes. If there are conflicts, comment out the patches.

Please notify me in comment section if this happens.


The optional performance patches are by default enabled.

The patch indicated by https://gitlab.gnome.org/GNOME/mutter/merge_requests/70/commits is the one Ubuntu 18.04 currently using.

A package for gnome-shell performance patches: https://aur.archlinux.org/packages/gnome-shell-performance/

Latest Comments

1 2 3 4 5 6 ... Next › Last »

Terence commented on 2019-05-22 22:17

@deezid ok I'll keep the patch for now but you might want to check if your issue as been reported ans if not create new one.

deezid commented on 2019-05-22 22:14

@Terence: Still need the nvidia revert patch to have smooth zoom animations when using the mouse in shell. Compiled two different versions and without the patch the zoom animation is always laggy...

archenoah commented on 2019-05-21 09:48

had to uncomment: git cherry-pick -n b3192d6b

Terence commented on 2019-05-16 13:28

@glorious-yellow: I don't want to enable it by default for Nvidia users.

glorious-yellow commented on 2019-05-14 19:56

I think we can do: pacman -Q nvidia && _revert=1

Terence commented on 2019-05-13 20:01

@DeadMetaler This sounds like a gnome-shell performance problem. Please check if this is the same as https://gitlab.gnome.org/GNOME/gnome-shell/issues/1271. Otherwise, consider opening a new issue about it.

In the end I'd really like to get rid of the 781835-workaround because reverting it means anything making use of https://www.linuxtopia.org/online_books/gui_toolkit_guides/gtk+_gnome_application_development/sec-mainloop_3.html will hang/never be called.

Terence commented on 2019-05-13 15:23

@deezid @Tio I fixed it.

Tio commented on 2019-05-13 11:32

Thanks! So I had to comment a bunch of MR and then I get

fatal: bad revision '^..dae2c1d42'
==> ERROR: A failure occurred in prepare().
    Aborting...

deezid commented on 2019-05-13 10:20

@Tio: It's the 5 lines after " #Add experimental key for RT scheduling"

Tio commented on 2019-05-13 09:55

@deezid I cannot find it in pkgbuild...

# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Maintainer: Ionut Biru <ibiru@archlinux.org>
# Contributor: Michael Kanis <mkanis_at_gmx_dot_de>

# Patched package maintainer: Saren Arterius <saren@wtako.net>
# Patch origin: https://gist.github.com/DeadMetaler/12622bf9415c1100f2d436ffbd6778c6

### BUILD OPTIONS
# Set these variables to ANYTHING that is not null to enable them

### Revert offending commit, recommanded to leave disable if not using NVIDIA
_revert=


pkgname=mutter-781835-workaround
pkgver=3.32.1+9+g0a3cddeec
pkgrel=1
pkgdesc="A window manager for GNOME. This package reverts a commit which may causes performance problems for nvidia driver users. Some performance patches also included."
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 gnome-shell)
makedepends=(gobject-introspection git egl-wayland meson xorg-server)
checkdepends=(xorg-server-xvfb)
provides=(mutter)
conflicts=(mutter)
groups=(gnome)
_commit=0a3cddeecff8d2c095108fde6c8fd4a3cdc63fe0 # tags/3.32.1^9
source=("$pkgname::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit"
        0001-wayland-output-Report-unscaled-size-even-in-logical-.patch
        216.patch
        revert.patch)
sha256sums=('SKIP'
            '842162bf8cec5d69fdb80c85fd152ddd3db6a9179d11d6f81d486f79814838c0'
            'ed4f3cf738a3cffdf8a6e1a352bf24d74078c3b26fb9262c5746e0d95b9df756'
            '2d2e305e0a6cca087bb8164f81bdc0ae7a5ca8e9c13c81d7fd5252eb3563fc09')

pkgver() {
  cd $pkgname
  git describe --tags | sed 's/-/+/g'
}

prepare() {
  cd $pkgname

  ## Unmerged performance bits
  # Commented multiline comment start, remove the # below to disable the patches
  # : '

  git remote add vanvugt https://gitlab.gnome.org/vanvugt/mutter.git || true
  git fetch vanvugt

  # Geometric (GPU-less) picking
  # https://gitlab.gnome.org/GNOME/mutter/merge_requests/189
  git cherry-pick -n d774fb22

  # Consolidate all frame throttling into clutter-stage-cogl [performance]
  # https://gitlab.gnome.org/GNOME/mutter/merge_requests/363
  h_first=$(git log --oneline --all | grep "clutter/stage-cogl: Don't skip over the next frame" | tail -n 1 | awk '{print $1}') # Sorry guys
  h_last=$(git log --oneline --all | grep 'clutter/master-clock: Remove fallback throttles' | tail -n 1 | awk '{print $1}') # Sorry guys
  echo "Found $h_first^$h_last for MR363"
  git cherry-pick -n $h_first^..$h_last

  # clutter-stage-cogl: Reduce output latency and reduce missed frames too [performance]
  # https://gitlab.gnome.org/GNOME/mutter/merge_requests/281
  # first commit replaced by !363
  hash=$(git log --oneline --all | grep 'clutter/stage-cogl: Reschedule update on present' | head -n 1 | awk '{print $1}') # Sorry guys
  echo "Found $hash for MR281"
  git cherry-pick -n $hash -Xtheirs

  # clutter: Deliver events sooner when possible
  # https://gitlab.gnome.org/GNOME/mutter/merge_requests/168
  # still has issues with 1000Hz mice
  # git cherry-pick -n ae8fc614

  # Resource scale computation optimizations
  # https://gitlab.gnome.org/GNOME/mutter/merge_requests/493
  git cherry-pick -n 3aa449af^..1017ce44

  # Add experimental key for RT scheduling
  # https://gitlab.gnome.org/GNOME/mutter/merge_requests/460
  h_first=$(git log --oneline --all | grep 'core: Drop all capabilities before running the main loop' | tail -n 1 | awk '{print $1}') # Sorry guys
  h_last=$(git log --oneline --all | grep 'backends/native: Add rt-scheduler experimental key to set RT scheduling' | tail -n 1 | awk '{print $1}') # Sorry guys
  echo "Found $h_first^$h_last for MR460"
  git cherry-pick -n $h_first^..$h_last -Xtheirs

  # cogl: Enable EGL_IMG_context_priority
  # https://gitlab.gnome.org/GNOME/mutter/merge_requests/454
  git cherry-pick -n 3f29b478^..7df86fb2

  # WIP: renderer-native: Accept frames without ever blocking
  # https://gitlab.gnome.org/GNOME/mutter/merge_requests/73
  # does not compile yet
  # git cherry-pick -n 35ec0eaf^..202530c9

  # '
  # Commented multiline comment end, remove the # above if disabling the patches

  # Revert offending commit
  if [ -n "$_revert" ]; then
    patch -Np1 -i ../revert.patch
  fi

  # https://bugzilla.mozilla.org/show_bug.cgi?id=1534089
  patch -Np1 -i ../0001-wayland-output-Report-unscaled-size-even-in-logical-.patch
}

build() {
  arch-meson $pkgname build \
    -D egl_device=true \
    -D wayland_eglstream=true \
    -D installed_tests=false
  ninja -C build
}

: ' not working atm
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

  dbus-run-session xvfb-run -s '+iglx -noreset' meson test -C build
)
'

package() {
  DESTDIR="$pkgdir" meson install -C build
}