linuxmint / mint20-beta

BETA Bug Squah Rush
20 stars 8 forks source link

cinnamon: fractional scaling #167

Closed DarkOwl2 closed 4 years ago

DarkOwl2 commented 4 years ago

Ryzen5 with GeForce GT710 graphics and UHD screen, Nvidia drivers installed.

Enabling Hi-DPI in System Settings > Login Window > Settings > HiDPI support = Enable works fine for the login screen. Before:

ED5F59A8-0C69-45BB-97E6-2CB9E6949BCC

After:

93194391-CC54-44D5-A692-B3DED916C9F1

Doing the same for the logged-in desktop is not so successful.

System Settings > Display > Layout > Base interface scale = Normal:

5BB220F1-30FD-43CD-80C5-589BDCA6F9F8

Base interface scale = Double (Hi-DPI):

3C8D166F-FD7B-4597-A888-EF37054E3137

Reverting to Base interface scale = Normal does not restore status quo (note wallpaper):

46B8CB26-DECF-4C14-AD74-F9A7D88DA862

...what's more, the desktop scrolls (I presume to accommodate the enlarged wallpaper):

6D0E3CE8-4862-47EC-9C4F-6B29DF30B7FD

...and the tools open menus which may be off-screen.

Rebooting with Base interface scale = Double kills the scrolling, but the horizontal is still stretched (as per photo 4 above) and windows might still be off-screen.

Opening System Settings > Display > Layout shows Base interface scale = Normal (should show "Double" as current setting).

These things work fine in 18.2, same hardware with default drivers and System Settings > General > User interface scaling = Double:

2B439D41-27FF-4E3A-BCF1-75DF926D060B

clefebvre commented 4 years ago

To achieve HiDPI, you need to select 2x (HiDPI) in global interface scale, but 200% in zoom level, not 100%.

DarkOwl2 commented 4 years ago

To achieve HiDPI, you need to select 2x (HiDPI) in global interface scale, but 200% in zoom level, not 100%.

Please clarify. Do you mean select Hi-DPI and 200% zoom? I have already established zoom does not work on my hardware.

As per the first post, Hi-DPI works for the login screen settings but does not work for the desktop.

I wish to underline: Hi-DPI worked fine on my hardware in LM Cinnamon 18.2. I don't know much about 19 (other than it doesn't boot live), but 20 has broken functionality which was fine in 18.

As I have mentioned before, I am willing to do whatever testing is needed to help resolve this, otherwise LM20 is useless to me.

clefebvre commented 4 years ago

Normal mode == 1.x interface scale + 100% zoom. HiDPI == 2.x interface scale + 200% zoom.

The new updates to Cinnamon make it clearer that you're using fractional scaling when you're selecting 100% with 2.x interface scale, you're basically doubling the apparent resolution... the only reason you'd want to do that would be for a secondary non-hidpi monitor.

DarkOwl2 commented 4 years ago

OK. Will test later and report back...

DarkOwl2 commented 4 years ago

I believe there is a fundamental disconnect of understanding going on here.

Zoom is not the same as interface scaling. Scaling makes on-screen features larger in terms of number of pixels. Zoom makes the same number of pixels occupy more screen area.

I do not want to make my pixels occupy more screen area (which would make my UHD monitor pointless), I want the on-screen features larger in terms of their size in pixels. Therefore I should not need to set zoom, only the base interface scale setting.

The setting "Base interface scale = Double" explicitly states "Hi-DPI". The original title I gave this report is correct. I am not trying to use fractional scaling.

HiDPI == 2.x interface scale + 200% zoom.

Logically, that should make on-screen features four times the size as 1x scale and 100% zoom. Please explain your thinking. If zoom does what you say it does, interface scaling is redundant.

The issue which needs addressing is why Hi-DPI works for the login window ("System Settings > Login Window > Settings > HiDPI support = Enable") but not for the desktop ("System Settings > Display > Layout > Base interface scale = Double (Hi-DPI)").

DarkOwl2 commented 4 years ago

Well, for whatever reason, I admit the scale = 2x plus zoom = 200% works. It doesn't make sense, but it works and for the first time I have a proper looking desktop with no horizontal stretch.

318100E5-039E-4888-99AF-AC395957EDA8

clefebvre commented 4 years ago

I'll try to explain the best I can... it's complicated.

Say your native resolution is 1600px, when you choose HiDPI it looks like 800px but it looks crisp because there are 2 pixels in every screen dot, twice the density, half the apparent resolution. If you think of this in terms of zoom, you went from 1600px screen area to 800px screen area, you're basically at 200% zoom if that makes sense.

In Mint 18.x and 19.x you could only select the scale, so you didn't need to worry about the zoom factor. In Mint 20.x, we're also letting you go in between 1600px and 800px, i.e. in between 100% and 200%. It's not 100% of your UI scale, it's 100% of your native resolution.

Now, to make things even more complicated, we don't just want to let you do that... we want to let you do other things as well:

The global UI scale is global, it affects all monitors. The zoom factor (i.e. fractional scaling isn't), it's specific to each monitor.

In the latest version of Cinnamon this is made more clear. There's a toggle for fractional scaling and a warning associated to it. When it's disabled it automatically sets itself in accordance to your UI_SCALE, so if that's HiDPI, you're at 200%.

clefebvre commented 4 years ago

One more little comment on the fractional scaling... if you wanted a resolution of 1200px you could achieve it in three ways:

You'd get different results in terms of density and performance, again that largely depends on your GPU/drivers.

For most people using fractional scaling can affect performance and/or vsync, so it's not something you want to use unless you have to. It can be very useful for people who don't have a choice though:

In your case, if you only have one monitor, and your HiDPI resolution is already crisp and large enough, you've NO reason to use fractional scaling.

DarkOwl2 commented 4 years ago

Thanks for this, I appreciate you trying to explain, but it still makes no sense that to select 2x user interface scale requires also selecting 200% zoom.