Package Details: mutter-performance 1:47.1.r2.g74cf8ac0f-2

Git Clone URL: https://aur.archlinux.org/mutter-performance.git (read-only, click to copy)
Package Base: mutter-performance
Description: A window manager for GNOME | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync
Upstream URL: https://gitlab.gnome.org/GNOME/mutter
Licenses: GPL-2.0-or-later
Groups: gnome
Conflicts: mutter
Provides: libmutter-15.so, mutter
Submitter: Terence
Maintainer: Terence (Saren, saltyming)
Last Packager: saltyming
Votes: 78
Popularity: 0.183115
First Submitted: 2019-07-09 09:35 (UTC)
Last Updated: 2024-10-22 08:26 (UTC)

Required by (16)

Sources (4)

Pinned Comments

saltyming commented on 2022-03-22 09:37 (UTC) (edited on 2024-10-22 08:27 (UTC) by saltyming)

If you have a problem during any system update with mutter-performance & gnome-shell-performance, please install mutter & gnome-shell packages from the main repository and do full upgrade first, then build the performance packages later.

If you are using [gnome-unstable] and [extra-testing] repositories, use mutter-performance-unstable


The default patch list includes "Dynamic triple buffering(!1441)", "text-input-v1(!3751)".

Latest Dynamic triple buffering patch has several included MRs from the main development branch to achieve maximum performance.


To enable a specific MR in the Merge Requests List, add an line "_merge_requests_to_use+=('<MR number>')" at the end of PKGBUILD. (Because if you edit the line directly you can be able to end up with merge conflict upon updates.)

You can see some patches' git history here: https://git.saltyming.net/sungmg/mutter-performance-source/

Saren commented on 2018-08-30 14:52 (UTC) (edited on 2020-10-06 05:50 (UTC) by Saren)

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.

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

Latest Comments

« First ‹ Previous 1 .. 32 33 34 35 36 37 38 39 40 41 42 .. 64 Next › Last »

Terence commented on 2019-05-13 15:23 (UTC)

@deezid @Tio I fixed it.

Tio commented on 2019-05-13 11:32 (UTC)

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

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

Tio commented on 2019-05-13 09:55 (UTC)

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

deezid commented on 2019-05-12 16:23 (UTC)

@Tio, just disable MR460 in the pkgbuild.

Tio commented on 2019-05-12 08:46 (UTC)

Found e08ac43fe^58afa2050 for MR363
Found 05896d940 for MR281
Found ^dae2c1d42 for MR460
fatal: bad revision '^..dae2c1d42'
==> ERROR: A failure occurred in prepare().
    Aborting...

DeadMetaler commented on 2019-05-09 00:18 (UTC) (edited on 2019-05-09 00:18 (UTC) by DeadMetaler)

I need revert.patch. Overview animations still lagging without it.

Saren commented on 2019-05-08 12:14 (UTC) (edited on 2019-05-08 12:14 (UTC) by Saren)

@Terence revert.patch is no longer needed, even for the rhythm game.

Terence commented on 2019-05-07 15:08 (UTC)

@Saren I would like to know if you still need the revert.patch.

kode54 commented on 2019-05-07 03:30 (UTC)

I didn't need a clean chroot, I just needed to remove and re-clone the entire source directory.