After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 772176 - Current and offered configuration does not match xrandr
Current and offered configuration does not match xrandr
Status: RESOLVED FIXED
Product: mutter
Classification: Core
Component: general
git master
Other Linux
: Normal normal
: ---
Assigned To: mutter-maint
mutter-maint
: 772504 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2016-09-29 12:23 UTC by Jan Alexander Steffens (heftig)
Modified: 2016-10-10 20:44 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
MetaMonitorManagerKms: stop accounting for mode flags in refresh rates (1.23 KB, patch)
2016-10-06 14:14 UTC, Rui Matos
committed Details | Review
MetaMonitorManagerKms: stop taking drmModeModeInfo.vrefresh directly (1.03 KB, patch)
2016-10-06 14:14 UTC, Rui Matos
committed Details | Review
meta-monitor-config: Look at an output's modes directly when assigning (3.59 KB, patch)
2016-10-06 14:14 UTC, Rui Matos
committed Details | Review

Description Jan Alexander Steffens (heftig) 2016-09-29 12:23:05 UTC
Setup: Two monitors attached via DP->HDMI adapters, one monitor attached via DVI->HDMI adapter.

After upgrading to GNOME 3.22, the two DP-attached monitors were in 1920x1080i mode instead of 1920x1080. Attempts to correct this using the control panel failed. After deleting monitors.xml, the resolutions were fine again, and I could rearrange them in the control panel without affecting the resolution.

But, the control panel still initially shows "1920x1080i" at "60 Hz" for the two DP-attached monitors. The third monitor is fine. xrandr shows the correct current configuration.

Switching back between 1920x1080 and 1920x1080i in the control panel (without applying) also then offers only "30 Hz (NTSC)" and "25 Hz" for 1920x1080i, which conflicts with xrandr.

Screen 0: minimum 8 x 8, current 5760 x 1080, maximum 32767 x 32767
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 connected primary 1920x1080+1920+0 (normal left inverted right x axis y axis) 480mm x 270mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1280x1024     75.02    60.02  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    60.00    59.94  
   720x400       70.08  
HDMI2 connected 1920x1080+3840+0 (normal left inverted right x axis y axis) 480mm x 270mm
   1920x1080     60.00*+
   1680x1050     59.88  
   1280x1024     75.02    60.02  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   640x480       75.00    59.94  
   720x400       70.08  
HDMI3 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 480mm x 270mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1280x1024     75.02    60.02  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    60.00    59.94  
   720x400       70.08  
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

~> gdbus call -e -d org.gnome.Mutter.DisplayConfig -o /org/gnome/Mutter/DisplayConfig -m org.gnome.Mutter.DisplayConfig.GetResources
(uint32 12, [(uint32 0, int64 63, 1920, 0, 1920, 1080, 0, uint32 0, [uint32 0, 1, 2, 3, 4, 5, 6, 7], @a{sv} {}), (1, 64, 3840, 0, 1920, 1080, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7], {}), (2, 65, 0, 0, 1920, 1080, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7], {}), (3, 66, 0, 0, 0, 0, -1, 0, [0, 1, 2, 3, 4, 5, 6, 7], {})], [(uint32 0, int64 69, 0, [uint32 0, 1, 2], 'HDMI1', [uint32 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], [uint32 1226684789], {'vendor': <'GSM'>, 'product': <'E2251'>, 'serial': <'112LTEN3A836'>, 'width-mm': <480>, 'height-mm': <270>, 'display-name': <'Goldstar Company Ltd 22"'>, 'backlight': <-1>, 'min-backlight-step': <-1>, 'primary': <true>, 'presentation': <false>, 'connector-type': <'HDMIA'>, 'underscanning': <false>, 'supports-underscanning': <false>, 'edid': <[byte 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x1e, 0x6d, 0x6f, 0x58, 0xc4, 0xb8, 0x01, 0x00, 0x0c, 0x15, 0x01, 0x03, 0x80, 0x30, 0x1b, 0x78, 0xea, 0x40, 0xa5, 0xa4, 0x55, 0x4e, 0xa0, 0x26, 0x11, 0x50, 0x54, 0xa5, 0x4b, 0x00, 0x71, 0x4f, 0x81, 0x80, 0x81, 0x8f, 0xb3, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x38, 0x4b, 0x1e, 0x53, 0x0f, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x45, 0x32, 0x32, 0x35, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xff, 0x00, 0x31, 0x31, 0x32, 0x4c, 0x54, 0x45, 0x4e, 0x33, 0x41, 0x38, 0x33, 0x36, 0x0a, 0x01, 0x52, 0x02, 0x03, 0x1d, 0xf1, 0x4a, 0x90, 0x04, 0x03, 0x01, 0x14, 0x12, 0x05, 0x1f, 0x10, 0x13, 0x23, 0x09, 0x07, 0x07, 0x83, 0x01, 0x00, 0x00, 0x65, 0x03, 0x0c, 0x00, 0x10, 0x00, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x1e, 0x01, 0x1d, 0x80, 0x18, 0x71, 0x1c, 0x16, 0x20, 0x58, 0x2c, 0x25, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x9e, 0x01, 0x1d, 0x00, 0x72, 0x51, 0xd0, 0x1e, 0x20, 0x6e, 0x28, 0x55, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x1e, 0x8c, 0x0a, 0xd0, 0x8a, 0x20, 0xe0, 0x2d, 0x10, 0x10, 0x3e, 0x96, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2]>}), (1, 70, 1, [0, 1, 2], 'HDMI2', [0, 6, 7, 8, 9, 13, 14, 15, 16, 20, 22, 23], [], {'vendor': <'GSM'>, 'product': <'E2251'>, 'serial': <'112LTXX39834'>, 'width-mm': <480>, 'height-mm': <270>, 'display-name': <'Goldstar Company Ltd 22"'>, 'backlight': <-1>, 'min-backlight-step': <-1>, 'primary': <false>, 'presentation': <false>, 'connector-type': <'HDMIA'>, 'underscanning': <false>, 'supports-underscanning': <false>, 'edid': <[byte 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x1e, 0x6d, 0x6e, 0x58, 0xda, 0xb4, 0x01, 0x00, 0x0c, 0x15, 0x01, 0x03, 0x80, 0x30, 0x1b, 0x78, 0xea, 0x40, 0xa5, 0xa4, 0x55, 0x4e, 0xa0, 0x26, 0x11, 0x50, 0x54, 0xa5, 0x4b, 0x00, 0x71, 0x4f, 0x81, 0x80, 0x81, 0x8f, 0xb3, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x38, 0x4b, 0x1e, 0x53, 0x0f, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x45, 0x32, 0x32, 0x35, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xff, 0x00, 0x31, 0x31, 0x32, 0x4c, 0x54, 0x58, 0x58, 0x33, 0x39, 0x38, 0x33, 0x34, 0x0a, 0x00, 0x2f]>}), (2, 71, 2, [0, 1, 2], 'HDMI3', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], [1226684789], {'vendor': <'GSM'>, 'product': <'E2251'>, 'serial': <'112LTLM3L976'>, 'width-mm': <480>, 'height-mm': <270>, 'display-name': <'Goldstar Company Ltd 22"'>, 'backlight': <-1>, 'min-backlight-step': <-1>, 'primary': <false>, 'presentation': <false>, 'connector-type': <'HDMIA'>, 'underscanning': <false>, 'supports-underscanning': <false>, 'edid': <[byte 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x1e, 0x6d, 0x6f, 0x58, 0x60, 0xe0, 0x01, 0x00, 0x0c, 0x15, 0x01, 0x03, 0x80, 0x30, 0x1b, 0x78, 0xea, 0x40, 0xa5, 0xa4, 0x55, 0x4e, 0xa0, 0x26, 0x11, 0x50, 0x54, 0xa5, 0x4b, 0x00, 0x71, 0x4f, 0x81, 0x80, 0x81, 0x8f, 0xb3, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x38, 0x4b, 0x1e, 0x53, 0x0f, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x45, 0x32, 0x32, 0x35, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xff, 0x00, 0x31, 0x31, 0x32, 0x4c, 0x54, 0x4c, 0x4d, 0x33, 0x4c, 0x39, 0x37, 0x36, 0x0a, 0x01, 0x78, 0x02, 0x03, 0x1d, 0xf1, 0x4a, 0x90, 0x04, 0x03, 0x01, 0x14, 0x12, 0x05, 0x1f, 0x10, 0x13, 0x23, 0x09, 0x07, 0x07, 0x83, 0x01, 0x00, 0x00, 0x65, 0x03, 0x0c, 0x00, 0x10, 0x00, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x1e, 0x01, 0x1d, 0x80, 0x18, 0x71, 0x1c, 0x16, 0x20, 0x58, 0x2c, 0x25, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x9e, 0x01, 0x1d, 0x00, 0x72, 0x51, 0xd0, 0x1e, 0x20, 0x6e, 0x28, 0x55, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x1e, 0x8c, 0x0a, 0xd0, 0x8a, 0x20, 0xe0, 0x2d, 0x10, 0x10, 0x3e, 0x96, 0x00, 0xdd, 0x0c, 0x11, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2]>})], [(uint32 0, int64 75, uint32 1920, uint32 1080, 60.0, uint32 5), (1, 236, 1920, 1080, 50.0, 5), (2, 237, 1920, 1080, 59.940200805664062, 5), (3, 238, 1920, 1080, 30.0, 21), (4, 239, 1920, 1080, 25.0, 21), (5, 74, 1920, 1080, 29.970100402832031, 21), (6, 240, 1680, 1050, 59.883251190185547, 9), (7, 241, 1280, 1024, 75.024673461914062, 5), (8, 242, 1280, 1024, 60.019741058349609, 5), (9, 243, 1152, 864, 75.0, 5), (10, 244, 1280, 720, 60.0, 5), (11, 245, 1280, 720, 50.0, 5), (12, 246, 1280, 720, 59.940200805664062, 5), (13, 247, 1024, 768, 75.028579711914062, 5), (14, 248, 1024, 768, 60.003841400146484, 10), (15, 249, 800, 600, 75.0, 5), (16, 250, 800, 600, 60.316539764404297, 5), (17, 251, 720, 576, 50.0, 10), (18, 252, 720, 480, 60.0, 10), (19, 253, 720, 480, 59.940059661865234, 10), (20, 254, 640, 480, 75.0, 10), (21, 255, 640, 480, 60.0, 10), (22, 256, 640, 480, 59.940475463867188, 10), (23, 257, 720, 400, 70.0816650390625, 6)], 32767, 32767)
Comment 1 Jan Alexander Steffens (heftig) 2016-10-04 06:48:25 UTC
It also seems that the Xorg and Wayland backends have different ideas of what monitors.xml means, as Wayland still uses 1080i for the two DP-attached monitors.

<monitors version="1">
  <configuration>
    <clone>no</clone>
    <output name="HDMI1">
      <vendor>GSM</vendor>
      <product>E2251</product>
      <serial>112LTEN3A836</serial>
      <width>1920</width>
      <height>1080</height>
      <rate>60</rate>
      <x>1920</x>
      <y>0</y>
      <rotation>normal</rotation>
      <reflect_x>no</reflect_x>
      <reflect_y>no</reflect_y>
      <primary>yes</primary>
      <presentation>no</presentation>
      <underscanning>no</underscanning>
    </output>
    <output name="HDMI2">
      <vendor>GSM</vendor>
      <product>E2251</product>
      <serial>112LTXX39834</serial>
      <width>1920</width>
      <height>1080</height>
      <rate>60</rate>
      <x>3840</x>
      <y>0</y>
      <rotation>normal</rotation>
      <reflect_x>no</reflect_x>
      <reflect_y>no</reflect_y>
      <primary>no</primary>
      <presentation>no</presentation>
      <underscanning>no</underscanning>
    </output>
    <output name="HDMI3">
      <vendor>GSM</vendor>
      <product>E2251</product>
      <serial>112LTLM3L976</serial>
      <width>1920</width>
      <height>1080</height>
      <rate>60</rate>
      <x>0</x>
      <y>0</y>
      <rotation>normal</rotation>
      <reflect_x>no</reflect_x>
      <reflect_y>no</reflect_y>
      <primary>no</primary>
      <presentation>no</presentation>
      <underscanning>no</underscanning>
    </output>
  </configuration>
</monitors>
Comment 2 Christian Stadelmann 2016-10-06 09:49:28 UTC
Same issue here.
Comment 3 Rui Matos 2016-10-06 14:14:07 UTC
Created attachment 337069 [details] [review]
MetaMonitorManagerKms: stop accounting for mode flags in refresh rates

This isn't technically needed and, in fact, makes us default to
interlaced modes in some cases which isn't desirable.

Note that X doesn't account for these flags either for its mode
refresh rates.
Comment 4 Rui Matos 2016-10-06 14:14:13 UTC
Created attachment 337070 [details] [review]
MetaMonitorManagerKms: stop taking drmModeModeInfo.vrefresh directly

As in the previous commit, this value already has mode flags baked in
and we can always get the value we need by computing it ourselves.
Comment 5 Rui Matos 2016-10-06 14:14:20 UTC
Created attachment 337071 [details] [review]
meta-monitor-config: Look at an output's modes directly when assigning

Going through the global mode pool and then checking if the mode is
available for a given output is pointless work since we can look at
the output's available modes directly.

This implicitly changes how we choose the default mode since, instead
of relying on the sort order of the global modes array, we now rely on
the sort order of the output modes array. Still not ideal, but at
least it makes more sense since the global array is essentially
unsorted.
Comment 6 Rui Matos 2016-10-06 14:15:31 UTC
*** Bug 772504 has been marked as a duplicate of this bug. ***
Comment 7 Jan Alexander Steffens (heftig) 2016-10-07 13:22:54 UTC
After applying these patches GDM does not use 1080i anymore. However, it still had the monitors in the wrong order, even though I had copied over the above monitors.xml from my correctly configured Xorg session.

Moving from GNOME on Xorg to Wayland then also had the monitors in the wrong order. Reordering them added the following configuration to monitors.xml, which only seems to differ from the old config by the ridiculous precision of the rate fields:

   <configuration>
    <clone>no</clone>
    <output name="HDMI-1">
      <vendor>GSM</vendor>
      <product>E2251</product>
      <serial>112LTEN3A836</serial>
      <width>1920</width>
      <height>1080</height>
      <rate>60.000495910644531</rate>
      <x>1920</x>
      <y>0</y>
      <rotation>normal</rotation>
      <reflect_x>no</reflect_x>
      <reflect_y>no</reflect_y>
      <primary>yes</primary>
      <presentation>no</presentation>
      <underscanning>no</underscanning>
    </output>
    <output name="HDMI-2">
      <vendor>GSM</vendor>
      <product>E2251</product>
      <serial>112LTXX39834</serial>
      <width>1920</width>
      <height>1080</height>
      <rate>60.000495910644531</rate>
      <x>3840</x>
      <y>0</y>
      <rotation>normal</rotation>
      <reflect_x>no</reflect_x>
      <reflect_y>no</reflect_y>
      <primary>no</primary>
      <presentation>no</presentation>
      <underscanning>no</underscanning>
    </output>
    <output name="HDMI-3">
      <vendor>GSM</vendor>
      <product>E2251</product>
      <serial>112LTLM3L976</serial>
      <width>1920</width>
      <height>1080</height>
      <rate>60.000495910644531</rate>
      <x>0</x>
      <y>0</y>
      <rotation>normal</rotation>
      <reflect_x>no</reflect_x>
      <reflect_y>no</reflect_y>
      <primary>no</primary>
      <presentation>no</presentation>
      <underscanning>no</underscanning>
    </output>
  </configuration>

The control panel still shows the current resolution of the two DP-attached monitors as 1920x1080i @ 60 Hz, even though it's not interlaced at all.
Comment 8 Rui Matos 2016-10-10 15:30:21 UTC
(In reply to Jan Alexander Steffens (heftig) from comment #7)
> Moving from GNOME on Xorg to Wayland then also had the monitors in the wrong
> order. Reordering them added the following configuration to monitors.xml,
> which only seems to differ from the old config by the ridiculous precision
> of the rate fields:

Right, but that's a different bug. Can you file one for that issue?

> The control panel still shows the current resolution of the two DP-attached
> monitors as 1920x1080i @ 60 Hz, even though it's not interlaced at all.

See bug 772708
Comment 9 Florian Müllner 2016-10-10 19:44:30 UTC
Review of attachment 337071 [details] [review]:

Makes sense to me
Comment 10 Rui Matos 2016-10-10 20:43:55 UTC
Florian acn'd the other patches on irc

Attachment 337069 [details] pushed as a50950c - MetaMonitorManagerKms: stop accounting for mode flags in refresh rates
Attachment 337070 [details] pushed as 04b75c4 - MetaMonitorManagerKms: stop taking drmModeModeInfo.vrefresh directly
Attachment 337071 [details] pushed as 5261638 - meta-monitor-config: Look at an output's modes directly when assigning