Boot Experience - HIDPI and Fractional Scaling

This is a relatively short post, seeing as it isn’t a bug report but a general suggestion.
Currently, if you boot fedora on a high-dpi screen, the entire graphical boot (until you reach the GDM) is pixelated or blurry. My 13.5" screen has a resolution of 2256x1504, which is automatically scaled to 150% on Windows. It seems plymouth’s assets are scaled by default when I boot, but being rasters, they look pretty awful. I don’t know if it’s a 150% or 200%.

If it’s technologically feasible, making all of the plymouth assets vector graphics could solve this. As it stands, most first-time Fedora (and Linux) users will have a fairly unpolished experience from their first boot.

1 Like

Added boot, plymouth

Probably bug worthy, You should file a bug here:

https://bugzilla.redhat.com/index.cgi

Thanks :fedora:

1 Like

Other people had the opposite problem that the asserts where all very small.

It maybe that your laptops GPU is defaulting to a low res until GPU drivers are loaded.

Well, when I disabled scaling in some config files, that is what happened. Everything was ludicrously tiny.

I’m fairly sure that vector graphics are not supported by Plymouth, but i could be wrong. It runs extremely early in the boot proces so it uses really basic image rendering options (bitmap).

Vector graphics are much more complex to display, they require a canvas and a rendering engine that translates vectors to the screen. This would not be something you would normally want to do at boot time.

Does this vary between Legacy and UEFI boots? I wouldn’t expect any scaling from POST to the log-in screen, but would expect it to be native and worst-case tiny with UEFI boot and reusing the firmware’s logo.

In Dell’s case, their boot logo can be scaled or non-scaled depending on a BIOS option, and that might carry-over to GRUB/Plymouth/Linux boot

@adonnen, of what I’ve recently ascertained, GRUB2 doesn’t appear to be capable of scaling whatsoever. Consequently, on 2560x1400px monitor, by default, it’s set to a low resolution equivalent to 200% scaling:

I presume that on a 4K monitor, it would be low enough resolution to be equivalent to 400%, with the problem compounding the higher than the resolution is set, unless it acquiesces eventually and merely renders everything tiny.

The monitor hardware can do scaling for any of its supported modes.
4k monitors will scale from 1920x1080 for example for a 200% scaling.
I tested 1024x768 on my setup that scaled well.

Is that the monitor scaling, or is it the framebuffer?

1 Like

@barryascott, that’s probably dependent upon the monitor. My monitor is 2K, and I’m fairly confident that it’s crappy hardware barely has the clock speed to render my OSD.

Do you use your monitor’s scaling capability? If you do, I’m surprised, since I can’t imagine how it would communicate with GRUB that certain aspects of the GUI (the midsection) need to be removed when scaled.

It is the monitor hardware doing the scaling.
All lcd panels use scaling to support none native resolutions.

Everything fits on screen when I use 1024x768 for example.
Maybe I am missing something.

@barryascott, when you scale anything, be it CLI, TUI, or GUI, 99% of the time, you have to completely redraw what has been rendered for it to be entirely viewable without scrolling. This is true in GRUB2’s case.

Merely increasing the scale of the output would cause it to render off the display, unless what has been rendered originally is incredibly padded to the centre. Even then, it would merely be a decrease in resolution via alternative means, rather than a genuine scale increase.

You must be referring to something else.

But that is not what I see. I see big text and all the UI fits on the screen at 1024x768.

The grub code knows its set to 1024x768 and will use a font appropiate for that mode.

Are you assuming that I am talking about a magnification of a part of the image? That is not what is happening.

  1. grub sets the mode to 1024x768
  2. the monitor scales the 1024x768 pixels up to 3840x2160 so that the image fills the screen, nothing it clipped.

@barryascott, I see what you mean now. You’re correct that most monitors shall override the standard 1:1 aspect ratio, depending upon the resolution provided to them. They even appear to utilize interpolation to reduce pixelation (albeit at the expense of increased blur).

However, that’s exactly what @adonnen and I consider to be undesirable — we want the native resolution, correctly scaled, rather than upscaled.


On this note:

@hamrheadcorvette, have you verified that auto doesn’t set the value correctly for a HiDPI display? I ask per the undermentioned (which I’ve yet to evaluate):

If auto does not, then that’s worth a bug, for it would remediate this.

I guess you need to see if the grub developers are interested in implementing this or taking patches that do.

For me the quality of the scaling in my Dell monitors is good enough for the few seconds grub and kernel early boot messages are on screen.

1 Like

@barryascott, I’ve just not got enough information yet to determine whether Red Hat is setting auto incorrectly, or whether this is a matter of absent functionality within GRUB2.

2 Likes

@grumpey, that’s perfect. Thank you. @adonnen, please mark that response as the thread answer.

1 Like