Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • mutter mutter
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1,144
    • Issues 1,144
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 119
    • Merge requests 119
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GNOMEGNOME
  • muttermutter
  • Issues
  • #1470
Closed
Open
Issue created Oct 13, 2020 by Theron Tjapkes@ther0n

Mutter seems lock to lowest refresh rate monitor when running GNOME on Xorg (NVIDIA)

Affected version

  • OS: Fedora 33 Beta (and earlier versions)
  • Version: GNOME/Mutter 3.38.1
  • Appears in Xorg only. Wayland works fine, however I'm unable to use wayland full time due to XWayland not working with NVIDIA proprietary drivers.

Bug summary

When using a monitor with a high refresh rate (144hz in my case), a second monitor (60hz) will cause the compositor to slow the frame rate of animations on faster monitor down.

I'm not sure if this is really a bug or a feature request, since this may be a limitation of X11. If not a bug then having a way to disable the compositor from syncing to vblank would allow for a workaround.

Steps to reproduce

  1. Plug in a single 144hz monitor and start GNOME
  2. Move windows around and note the smoothness of animations such as opening the app grid
  3. Plug a second monitor with a lower refresh rate in (60hz), and ensure that the 144hz monitor is still set to 144hz
  4. Move windows around and open the app grid and note things are not as smooth and slightly jittery
  5. Run Firefox with WebRender enabled on the 144hz display and scroll, again noting how smooth the scrolling appears
  6. Enter fullscreen with Firefox so that the browser window bypasses the compositor through full screen unredirection and scroll, noting how much smoother the animation is

What happened

The second monitor appears to slow down the compositor's frame rate. The display is still refreshing 144hz since the mouse appears at that higher refresh rate and fullscreen applications appear smooth as they should. Windowed applications run at a jittery 60fps, likely due to 60 not going evenly into 144.

What did you expect to happen

I expected/hoped that applications would appear much smoother on the 144hz monitor compared too the 60hz monitor just as with wayland. However this isn't completely unexpected either as it seems to be a limitation of X11's handling of multiple monitors.

The issue occurs in other desktop environments utilizing compositors, however other desktop environments typically have a way to disable syncing to vblank/vsync. Rather than relying on the compositor to prevent tearing, disabling vsync allows for the workaround of enabling "Force composition pipeline" in NVIDIA settings to achieve the same result without slowing the desktop environment down to the speed of the slower monitor.

Relevant logs, screenshots, screencasts etc.

I have attempted numerous work arounds:

  • Setting CLUTTER_VBLANK=none, which appears to have worked in the past but doesn't anymore
  • Setting CLUTTER_DEFAULT_FPS=144, same as the first
  • Setting __GL_SYNC_DISPLAY_DEVICE=DVI-D-0 and unchecking "allow flipping" in NVIDIA settings which seems to have worked for the similar issue #1139
  • Applying several patches adapted for current version from #148 (closed)
Assignee
Assign to
Time tracking