Vendor logo does not display in correct ratio on external monitor as it have different ratio than internal on

Bug #1949677 reported by Yuan-Chen Cheng
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OEM Priority Project
Confirmed
Medium
Unassigned
plymouth (Ubuntu)
New
Low
Unassigned

Bug Description

As Ubuntu boots up, the vendor logo will be retrieved and displayed on the monitor.

Per test, as internal and external monitors have different Wide/Hight ratios, Plymouth will use the monitor ratio of the internal monitor, and the vendor logo will be displayed on both monitors.

Some laptops can boot up even as it's the lid is close, and use the external monitor, keyboard, and mouse only.

For that case:

- internal monitor: off
- external monitor: display the vendor still in the internal monitor ratio.

Which is ok but not perfect.

Changed in oem-priority:
status: New → Confirmed
importance: Undecided → High
tags: added: oem-priority originate-from-1946747 somerville
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

It's probably the choice of graphics mode that's making pixels non-square, and probably is not specific to the vendor logo(?)

Can you provide output from 'lspci -kv' ?

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Please use one of the plymouth.debug kernel parameters to record a plymouth log of the problem happening and then attach the log here.

See https://gitlab.freedesktop.org/plymouth/plymouth/-/raw/main/docs/development.txt

Changed in plymouth (Ubuntu):
status: New → Incomplete
importance: Undecided → Low
Revision history for this message
Yuan-Chen Cheng (ycheng-twn) wrote :
Revision history for this message
Yuan-Chen Cheng (ycheng-twn) wrote :
Revision history for this message
Yuan-Chen Cheng (ycheng-twn) wrote :

when a 1920x1200 monitor is plugged via hdmi port of the machine.

Revision history for this message
Yuan-Chen Cheng (ycheng-twn) wrote :

when 1920x1200 external monitor is plugged via wd19 (dell docking)

Revision history for this message
Yuan-Chen Cheng (ycheng-twn) wrote :

when 1920x1200 external monitor is plugged via wd19 (dell docking)
and the lid of the laptop is closed.

Revision history for this message
Yuan-Chen Cheng (ycheng-twn) wrote :

xrandr as lid of the laptop is closed, and the 1920x1200 monitor is connected via wd19

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Thanks. Those logs say the preferred mode is 1920x1080 so indeed you will see some aspect distortion if that's referring to a 1920x1200 monitor...

Next we need to find out if either:

(a) the incorrect preferred mode is coming from the kernel; or

(b) plymouth is applying the preferred mode of the laptop panel to the external monitor.

Please run 'drm_info' while only the external monitor is connected and the laptop lid is still closed, and attach the output here. drm_info is not in the archive until hirsute but it's a very simple program you should be able to get running: https://launchpad.net/ubuntu/+source/drm-info

Revision history for this message
Daniel van Vugt (vanvugt) wrote (last edit ):

It's starting to look like this is a Plymouth bug/feature where it applies the same resolution to all monitors:

https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/119
https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/9

If true then that would make sense. Plymouth uses software rendering and possibly can't afford to render multiple monitors separately, at least when they are all turned on. If that's the problem then it sounds like Plymouth needs to be made smarter and not include the closed laptop screen in the list of outputs to render. Then there would only be one choice for the correct resolution.

no longer affects: plymouth
Revision history for this message
Yuan-Chen Cheng (ycheng-twn) wrote :

drm_info as 1920x1200 monitor connect to WD19, and lid closed.

Revision history for this message
Daniel van Vugt (vanvugt) wrote (last edit ):

Thanks. It looks like comment #10 is correct. Also the kernel is correctly reporting that the laptop display is OFF and the external monitor is ON. So I think Plymouth should be enhanced to check that and not bother with outputs that are OFF. Then it would only be driving one monitor and the minimum resolution would be the correct resolution = 1920x1200.

Changed in plymouth (Ubuntu):
status: Incomplete → New
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

It's a pity the "scaling mode" property is only implemented on the laptop screen because if it existed for external monitors then we could fix this bug by simply setting:

  "scaling mode" = "Full aspect"

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

I'm not sure this /should/ be fixed.

We don't want Plymouth to drive separate displays differently (unless it already does?) because that's double the render load, which is too much for software rendering.

We could implement the fix suggested in comment #12, but upstream might not like it for good reason. If some user has a monitor accidentally turned off and plymouth is stuck then they should be able to turn it on halfway through and plymouth should be outputting to it.

If it was my machine I would just search through the monitor's own OSD menu and find the setting that enables use of correct aspect ratios for non-native modes. ;)

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Oh maybe we could fix this in Plymouth without disabling the laptop display...

If the CRTC_X / CRTC_Y / CRTC_W / CRTC_H properties behave how I think they should then we could use them to maintain correct aspect ratio and each monitor in its own native preferred resolution.

For example, displaying a 1920x1080 buffer in a 1920x1200 mode:

  CRTC_X = 0
  CRTC_Y = 60
  CRTC_W = 1920
  CRTC_H = 1080

Maybe those only exist for atomic KMS drivers though (like i915).

https://01.org/linuxgraphics/gfx-docs/drm/drm-kms-properties.html

Changed in oem-priority:
importance: High → Medium
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.