Package Details: mutter-781835-workaround 3.32.2-4

Git Clone URL: (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:
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 is the one Ubuntu 18.04 currently using.

A package for gnome-shell performance patches:

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 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 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().

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) <>
# Maintainer: Ionut Biru <>
# Contributor: Michael Kanis <mkanis_at_gmx_dot_de>

# Patched package maintainer: Saren Arterius <>
# Patch origin:

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

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

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."
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)
_commit=0a3cddeecff8d2c095108fde6c8fd4a3cdc63fe0 # tags/3.32.1^9

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 || true
  git fetch vanvugt

  # Geometric (GPU-less) picking
  git cherry-pick -n d774fb22

  # Consolidate all frame throttling into clutter-stage-cogl [performance]
  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]
  # 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
  # still has issues with 1000Hz mice
  # git cherry-pick -n ae8fc614

  # Resource scale computation optimizations
  git cherry-pick -n 3aa449af^..1017ce44

  # Add experimental key for RT scheduling
  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
  git cherry-pick -n 3f29b478^..7df86fb2

  # WIP: renderer-native: Accept frames without ever blocking
  # 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

  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}"

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

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