gnome: backport mutter ScreenCast frame-limiter fix (remote desktop 30 -> 60 fps) #14

Merged
CanuteTheGreat merged 1 commit from fix/mutter-screencast-limiter into main 2026-11-05 22:42:32 -08:00
Owner

Mutter 49/50/51.1 cap every monitor ScreenCast stream at 30-40 fps on a 60 Hz panel (expected-presentation-time jitter vs a delta < interval test; upstream fixed it on gnome-51/main on 2026-10-14, after 51.1, not in any 50.x).

Measured on gringotts and hogshead (GNOME 49.9, mutter 49.7 + this patch, 1080p): H.264 motion path 30.1 -> 59.6-59.9 fps, p50 39-52 ms. GNOME 50.6 alone: still 30.1 fps, so the move to ~amd64 GNOME 50 was not needed.

  • patch under gnome-light portage/patches + sys-apps/horcrux-repo-config-1-r3 (installed machines)
  • make.conf --usepkg-exclude=x11-wm/mutter (binary packages ignore patches)
  • gnome-light image build fails when libmutter lacks the patched string
  • tests: build/live-iso/common/tests/test_mutter_patch.py

Not built here: a full image (the first desktop emerge now compiles mutter from source, +10-20 min). Both lab laptops already run it (patch + make.conf applied by hand). Drop the patch + exclude when mutter >= 51.2 is stable.

Mutter 49/50/51.1 cap every monitor ScreenCast stream at 30-40 fps on a 60 Hz panel (expected-presentation-time jitter vs a `delta < interval` test; upstream fixed it on gnome-51/main on 2026-10-14, after 51.1, not in any 50.x). Measured on gringotts and hogshead (GNOME 49.9, mutter 49.7 + this patch, 1080p): H.264 motion path 30.1 -> 59.6-59.9 fps, p50 39-52 ms. GNOME 50.6 alone: still 30.1 fps, so the move to ~amd64 GNOME 50 was not needed. * patch under gnome-light portage/patches + sys-apps/horcrux-repo-config-1-r3 (installed machines) * make.conf `--usepkg-exclude=x11-wm/mutter` (binary packages ignore patches) * gnome-light image build fails when libmutter lacks the patched string * tests: build/live-iso/common/tests/test_mutter_patch.py Not built here: a full image (the first desktop emerge now compiles mutter from source, +10-20 min). Both lab laptops already run it (patch + make.conf applied by hand). Drop the patch + exclude when mutter >= 51.2 is stable.
gnome: backport mutter's ScreenCast frame-limiter fix (remote desktop was capped at 30-40 fps on 60 Hz displays)
All checks were successful
CI / Mobile theme (light/dark) (pull_request) Successful in 6s
CI / Web UI theme (light/dark) (pull_request) Successful in 4s
CI / Check (pull_request) Successful in 1m35s
CI / Security Audit (pull_request) Successful in 2m46s
CI / Build Web UI (pull_request) Successful in 2m20s
CI / USE-flag feature builds (pull_request) Successful in 9m48s
CI / UI E2E (browser) (pull_request) Successful in 9m9s
CI / Gentoo Docker Build (pull_request) Successful in 19m31s
CI / Test (pull_request) Successful in 28m8s
CI / Build-1 (pull_request) Successful in 4m21s
CI / Build (pull_request) Successful in 4m36s
CI / Gentoo USE-flag matrix (ebuild install) (pull_request) Successful in 34m26s
58935d8bbe
Mutter 49/50/51.1 skip a monitor-stream frame that arrives < one stream interval after the last (interval = refresh rate) using jittery expected
presentation times, so a stream at the refresh rate loses every other frame. Upstream fixed it on gnome-51/main (stream-source: Round to nearest interval
boundary in is_it_too_early, Oct 2026) but not in 51.1 or any 50.x. Measured on gringotts (Iris Xe, GNOME 49.9): H.264 motion path 30.1 -> 59.6 fps (1080p@59.934);
GNOME 50.6 alone gave 30.1 fps (same limiter), so moving to ~amd64 GNOME 50 would not have helped.

* gnome-light portage patch + sys-apps/horcrux-repo-config-1-r3 ships it to /etc/portage/patches/x11-wm/mutter (installed machines)
* make.conf: --usepkg-exclude=x11-wm/mutter (binary packages ignore patches)
* image build fails when libmutter lacks the patched string; test_mutter_patch.py
CanuteTheGreat deleted branch fix/mutter-screencast-limiter 2026-11-05 22:42:32 -08:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
CanuteTheGreat/horcrux!14
No description provided.