KWin Wayland Independent Monitor Scaling
source link: http://blog.davidedmundson.co.uk/blog/kwin_and_scaling/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
KWin Wayland Independent Monitor Scaling
We want:
Legacy apps at the same physical as modern apps that support high DPI Apps and window decoration to work across multiple screens at different DPI Consistent mouse speed and input across monitors of different DPIWhat we want to see:
What we need to render
How it works:
In order to have a normalised co-ordinate system between monitors and to support apps that can't scale themselves the system is defined as follows:
* KWin pretends all monitors are ~96dpi and handles all communication and input co-ordinates as such. Final output is then scaled up if applicable
* Clients which support high DPI, when relevant, will provide a buffer (the picture of their contents) which is twice the resolution of their window size.
This covers all the different scenarios:
If we have a 1x window on a 2x screen, the compositor will draw the window twice the size.
If we have a 2x window on a 1x screen, the window contents will be drawn implicitly downsized.
If we have a 2x window on a 2x screen, the window will be drawn twice the size, but because it's at twice the resolution, we end up painting the contents at the native resolution.
Clients without scaling now work as intended, I can use ardour or xfig on my high DPI screen and can read and interact with it normally (albeit obviously at standard resolution)
The mouse even moves at a consistent speed across monitors and even if you had two touch screens at different DPI showing the same content, both will work perfectly.
The changes to kwin were therefore really small, and mostly was not about implementing features but more about removing an assumed coupling between a texture size and the rendered size.
When?
The code to do all of this is in Plasma 5.10 as a hidden feature whilst we get more testing with everything except a UI to configure it. This is ready to land for 5.11 An extra problem is that Qt < 5.9 has a bug if the screen scale changes dynamically.
What's left?
Using this technique means everything is at the right size, but some adjustments are needed to make sure everything appears at native DPI not normal DPI. This is something being fixed over time.
What about fractional scaling?
The wayland protocol specifies a scaling in integers. We can't really go against the protocol. However, there's absolutely nothing against kwin scaling to a different amount to the protocol. It's something we can expand on later.
Posted on August 14, 2017September 14, 2017Author davidCategories kde
One thought on “KWin Wayland Independent Monitor Scaling”
-
Gerwin Krist says:
Hi David,
Thanks for the great work your doing on the hidpi field. One of the biggest frustrations these days
Do you have any update on this one? I’m running 5.11 but can’t find this setting. Any way how to enable this (I accept the fact that it’s a WIP still :D) ?
– Gerwin
Leave a Reply Cancel reply
Your email address will not be published. Required fields are marked *
Comment
Name *
Email *
Website
Save my name, email, and website in this browser for the next time I comment.
Post navigation
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK