GNOME Bugzilla – Bug 772176
Current and offered configuration does not match xrandr
Last modified: 2016-10-10 20:44:10 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)
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>
Same issue here.
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.
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.
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.
*** Bug 772504 has been marked as a duplicate of this bug. ***
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.
(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
Review of attachment 337071 [details] [review]: Makes sense to me
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