Thanks @seb128 for your post, now some considerations.
So here the (default) approach is was more or less something that is done by some tooling, and in general was very common between users, it’s just that we wanted to integrate this properly in the desktop to make it usable without deeper knowledge, and integrating it in GNOME.
The idea is
- Scale all the UI elements UP to the maximum scale level and the whole view down to reach the wanted scaling value
So what we do is:
- For each monitor, we compute the best scaling value (below an example with 4 monitors)
[ 1.25 ] [ 1.75 ] [ 1.0 ] [ 2.0 ]
- We take the maximum scaling value, and we ceil it, then we make sure X11 informs the toolkits to scale up to this maximum level.
[ toolkit UI scaling set to 2 ]
- We scale each output so that
toolkit_scaling * xrandr_scaling == monitor_scaling
Actual xrandr scaling values for such setup:
[ 0.625 ] [ 0.875 ] [ 0.5 ] [ 1.0 ]
I had some discussion about this at latest GUADEC, since X11 still is something we all care about, and there was interest on having this feature by us, system76 but not only. So I started playing around.
Now, I was completely aware of the performance constrains and while indeed as @vanvugt said this has some technical problems, due to X11 limitations, since we can’t do (and all the other past attempts failed) input redirection in X11 (and so reuse what I’ve been contributing to have under wayland with scaled framebuffers).
However, although the limitations (that indeed are more present whith multiple monitors), I was quite surprised to see how this leads to a well usable session,
That said, this is the best we can do, with the current technologies, in order to have some good quality fractional scaling under X11 setups and with multi-monitor support.
Now, tearing thing… I’ve been experiencing it only recently while it seems @azzar1 has not in all the setups. So, this might be also something drivers could improve.
And I think pushing this in a more visible situation, could make driver authors to improve fixing this, if we can’t do anything more ourselves (and I would appreciate if @vanvugt could see if we can do anything mutter-side to improve it).
This looks like a bug in the app which doesn’t honor the integer scaling set as X11 dpi value, so this should be really fixed by them.
@plumerlis as per the wayland scaling considerations, more of the things are known and planned for later work, but please let’s keep the discussion out from this topic, since we focus on X11 only here.