can't set usable scale for hidpi internal display if when using external display less than 1600x1200

Bug #1724024 reported by David Jordan
20
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Mutter
Fix Released
Medium
mutter (Ubuntu)
Fix Released
Medium
Unassigned
Artful
Fix Released
Medium
Unassigned

Bug Description

[Impact]
Users on X11 are unable to set sane configurations for mixed hidpi/lowdpi multi-monitor setups. A limitation in Mutter prevents gnome-control-center (and any other users of the dbus api or monitors.xml) from changing even unrelated display settings unless 1x scaling factor is chosen. There is no user-facing reason why, the settings just won't apply.

This applies to X11 and not Wayland. All NVIDIA users and some others who require X for the time being are affected when using mixed-dpi setups. This especially affects System76 customers, since the patch is required for the automatic multi-monitor setup to work.

[Description]
When plugging in an external 1920 x 1080 monitor to a laptop with a hipdi screen (e.g. 13" 3200x1800), mutter automatically configures the two displays next to each other and keeps the 2x scale factor.

If the user sets the scale factor (using the control center, the dbus api, or the monitors.xml file), they will be stuck at 1x and everything will be tiny on the internal display. It's not possible to set the scale factor back to 2x, and any attempts to do so will result in mutter complaining that "Logical monitor scales must be identical" or "Scale 2 not valid for resolution 1920x1080".

The user can't even move the external display from the right of the internal to the left without selecting 1x scaling. The configuration simply won't apply.

Mutter prevents applying a scale to a logical display if it would result in a logical resolution less than 800x600. On X11, all displays must have the same scaling factor.

The primary reason to prevent setting a too-high a scale factor is that a user may get stuck in an unusable state. The proposed patch, enables Mutter to apply a given scale factor if at least one display supports it.

[Test Case]
1) Install Ubuntu 17.10 on a laptop with a hidpi display. By default, Gnome should be correctly scaled at 2x. If you have previously configured this setup, you will have to delete the monitors.xml file and reboot.
2) Plug in a 1920x1080 monitor.
At this point, both monitors should be scaled at 2x because Mutter has not received a request to change the display configuration.
3) Now open gnome-control center and attempt to change a display setting like moving the external 1920x1080 display from the right to the left side of the internal display. This should be a valid thing to do. However, there will be no apply button.
4) Now, set the scale factor from 2x to 1x. The apply button will now show. Clicking apply will make the external display the right scale, but everything will be very tiny on the internal display.
With the patch, you should be able to make changes without switching from 2x to 1x.

[Regression Potential]
Potential regressions are likely to manifest in the checking of display scale factors. It's possible that corner cases exist where a user might be able to apply a scale factor that's too big/small for their use. However, the current situation is already a regression from Ubuntu 17.04 that prevents proper monitor configuration.

This issue was fixed in mutter 3.26.2 (LP: #1730097)

Revision history for this message
David Jordan (dmj726) wrote :
Jeremy Bícha (jbicha)
Changed in mutter (Ubuntu):
status: New → In Progress
importance: Undecided → Medium
Revision history for this message
David Jordan (dmj726) wrote :
Revision history for this message
Ubuntu Foundations Team Bug Bot (crichton) wrote :

The attachment "monitor-managerxrandr-Use-a-single-supported-scale.patch" seems to be a patch. If it isn't, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are a member of the ~ubuntu-reviewers, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issues please contact him.]

tags: added: patch
Changed in mutter:
importance: Unknown → Medium
status: Unknown → Confirmed
Jeremy Bícha (jbicha)
Changed in mutter (Ubuntu):
status: In Progress → Incomplete
status: Incomplete → In Progress
Jeremy Bícha (jbicha)
description: updated
Revision history for this message
Jeremy Bícha (jbicha) wrote :

Thank you for helping to make Ubuntu better.

I proposed this patch (as a Debian sync) for an Ubuntu 17.10 Final Freeze Exception. It was rejected for that because it is not essential to installing 17.10. We'd still like to do this as an SRU so we'll be re-uploading soon.

We might combine this fix with a patch from https://bugzilla.gnome.org/789086

Changed in mutter (Ubuntu):
status: In Progress → Triaged
Changed in mutter:
status: Confirmed → Fix Released
Jeremy Bícha (jbicha)
Changed in mutter (Ubuntu):
status: Triaged → Fix Committed
Changed in mutter (Ubuntu Artful):
importance: Undecided → Medium
status: New → In Progress
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package mutter - 3.26.1-6

---------------
mutter (3.26.1-6) unstable; urgency=high

  * debian/control.in: Bump libegl1-mesa-dev to (>= 17) (Closes: #878702)
  * Cherry-pick more fixes from gnome-3-26 branch to fix crashes
    and fix unredirecting full-screen windows:
    - 0012-x11-window-Don-t-manage-InputOnly-windows.patch
    - 0013-compositor-Ignore-offscreen-windows.patch
      (LP: #1725821)
    - 0015-monitor-normal-Prefer-modes-with-same-flags.patch
    - 0016-monitor-unit-tests-Check-non-first-preferred-modes.patch
      (LP: #1725153)
    - 0017-compositor-Avoid-a-crash-if-top-window-finalized.patch
    - 0018-Revert-ClutterActor-Optimize-away-idempotent-scale.patch
    - 0019-Revert-tests-Fix-actor-anchors-test.patch
      (Closes: #788140)
  * Set urgency to high to not further delay the gjs/mutter transition

 -- Jeremy Bicha <email address hidden> Sat, 21 Oct 2017 19:47:22 -0400

Changed in mutter (Ubuntu):
status: Fix Committed → Fix Released
Jeremy Bícha (jbicha)
description: updated
Revision history for this message
Łukasz Zemczak (sil2100) wrote : Please test proposed package

Hello David, or anyone else affected,

Accepted mutter into artful-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/mutter/3.26.2-0ubuntu0.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed.Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-artful to verification-done-artful. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-artful. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in mutter (Ubuntu Artful):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-artful
Revision history for this message
David Jordan (dmj726) wrote :

Mutter 3.26.2-0ubuntu0.1 fixes this bug.

The fullscreen unredirection change is also notably present, which is probably good except for the regression with fullscreen video in Firefox (eg youtube). This could probably be fixed via a future patch in Mutter or Gnome Shell to exclude fullscreen windows of problematic applications from being unredirected.

Jeremy Bícha (jbicha)
tags: added: verification-done verification-done-artful
removed: verification-needed verification-needed-artful
Revision history for this message
Brian Murray (brian-murray) wrote : Update Released

The verification of the Stable Release Update for mutter has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package mutter - 3.26.2-0ubuntu0.1

---------------
mutter (3.26.2-0ubuntu0.1) artful; urgency=medium

  * New upstream release (LP: #1730097):
    - Fix unredirecting full-screen windows and fix returning to
      full-screen after Alt-Tab (LP: #1725649)
    - Allow HiDPI scaling even when non-HiDPI displays are connected
      (LP: #1724024)
    - Fix Epiphany URL bar (LP: #1719043) (Closes: #875826)
  * Drop cherry-picked patches

 -- Jeremy Bicha <email address hidden> Sat, 04 Nov 2017 14:07:59 -0400

Changed in mutter (Ubuntu Artful):
status: Fix Committed → Fix Released
Revision history for this message
Lachlan Hogan (mukdip) wrote :

Still experiencing this issue after the latest patch

Ubuntu 17.10
Gnome Shell Version: GNOME Shell 3.26.2
Mutter Version: mutter 3.26.2

Preconditions: Two monitors (2560x1440 and 3840x2160)

Steps to reproduce:
 - Open gnome-control-center from command line
 - Navigate to Devices -> Displays
 - Change scale from 100% to 200%

Expected:
 - Able to apply the scale changes to the monitor

Actual:
 - Receive error in the terminal

   Config not applicable: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: Logical monitor scales must be identical

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.