Zoom quality vs fractionnal sclaing

I’m visually impaired, and I need to have a display 200% bugger to see correctly.
I notice that when I set a scaling factor of 200% the display quality is absolutely perfect. But when I use a zoom of 200% the quality is degraded, blurry.
How come it is not possible to have the same level of quality? Is it imaginable to obtain it one day?

The reason is technical: when you set the scaling factor, it’s telling the apps and everything to draw bigger, while when you’re zooming in, it’s basically taking a “snapshot” of your screen and scales it up (hence the blurriness).

It could probably be improved by asking the apps to draw themselves at a higher scaling factor temporarily to draw the zoomed-in view, but it’s not a trivial change to make, and it might have a lot of additional challenges associated with it.

1 Like

That is indeed something that is in theory possible, i.e. let the a11y zoom feature affect the resolution clients (and GNOME Shell itself) render at. I don’t think it’d be complicated; I imagine an Meta (libmutter) API where the shell (or an extension) can ask to globally override the scaled clients and the shell are asked to render at, which the zoom feature would bump to some relatively high number while active.

1 Like

The reason I think it might be tricky is just that it might (or might not) require the shell & apps believe the surfaces (and possibly even screens) to be larger by the same amount, not to affect ratios or other things (basically behave as if the surfaces were higher physical resolution without altering the logical one). Or even then, it could affect app’s behavior.

But I really hope I’m wrong and it’s all abstracted away well enough by now that we can just flip a switch :slight_smile:

So I’d say it would work fairly well for native Wayland applications, because what I imagine would be done is to tell Wayland clients that the “preferred scale” being temporarily higher. Their logical size would remain unaltered, only their “DPI” would change. A correctly implemented client would be visually unchanged, other than everything having higher pixel resolution.

X11 (including Xwayland) here is a lost cause here, I don’t think there is anything reasonable to attempt there.

It seems like that would cause heavy lag if the windows start rendering at extreme resolutions? Say a fullscreen window at 8x zoom at WQXGA (2560 x 1600), now renders at 20480 x 12800, if you have two or three windows stacked (not tiled) at near full screen sizes then you have multiple windows rendering at the same giant resolution. So now the windows need to know about expose regions again…

I’d say it makes sense to just increase a bit, to say 3 or 4. Maybe even 2 is enough. Being extra careful, one could tell only clients “close to” the zoom view to bump their resolution. But yea, a 4K fullscreen should not be drawing too large, it’d lag to much, if it would even work.

Going down the path of expose regions etc is probably not something that we should do.