Bug 488839

Summary: Zooming into a desktop will cause screens with colour profiles to appear with distorted colours when they spill over onto other displays
Product: [Plasma] kwin Reporter: Eamonn Rea <eamonnrea>
Component: multi-screenAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: nate, xaver.hugl
Priority: NOR Keywords: multiscreen, wayland
Version: 6.0.5   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In: 6.1.1
Sentry Crash Report:

Description Eamonn Rea 2024-06-20 22:22:45 UTC
SUMMARY
The title of this issue is awful, I am sorry I could not phrase it better...

When you have multiple displays and zoom in with "Meta+=" (Meta key and Equals key without shift held down) to, say, a window centered on one of them. Parts of other displays' content will spill onto other displays, because you're zooming in. That part is not a bug.

However on a screen that has an ICC colour profile set up, the screen itself looks fine, but the contents of that screen that expand and spill onto other displays when you zoom in, are very visually distorted. Disabling the colour profile fixes this issue.

Similarly, if content from displays that do not have an ICC colour profile spill onto the display with the ICC profile, they will use incorrect colours as well (in my case, too dark).

STEPS TO REPRODUCE
1. Have multiple displays, with at least one having an iCC colour profile set up.
2. Zoom into your displays.
3. When you zoom in and parts of the display with an ICC profile spill onto other displays, the contents will have distorted colours. The content on the display with the ICC profile itself looks fine, it's when the contents goes onto other displays  that it looks wrong.
4. Disable ICC profile for that display.
5. The bug goes away.

OBSERVED RESULT
Zooming in when one display has a colour profile, the colours on the content that spills onto other displays will look wrong.

EXPECTED RESULT
Colours should look correct when zoomed display contents overlaps between displays that do and don't have ICC profiles

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 6.9.5 Linux Zen
KDE Plasma Version: 6.1.0
KDE Frameworks Version: 6.3.0
Qt Version: 6.7.1

ADDITIONAL INFORMATION
- I believe this issue is exclusive to Wayland, as only the Wayland session offers setting an ICC profile? If there is a way to do this on X11 I have not tried and don't know if it replicates this bug.
- I have not tested what happens when two displays have two colour profiles, however I could test that if required (I can plug a laptop which has a profile into one of my PC displays).
- I did not know this zoom effect existed until earlier today, so I am unsure when this began. It might have been a problem since ICC profile selection was introduced in Plasma 6.
Comment 1 Bug Janitor Service 2024-06-20 23:43:53 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/5954
Comment 2 Zamundaaa 2024-06-21 12:34:02 UTC
Git commit 9293df2681ff9466a3d7f517ac3b88e153445429 by Xaver Hugl.
Committed on 21/06/2024 at 12:26.
Pushed by zamundaaa into branch 'master'.

plugins/zoom: do colorspace conversions between the screen textures

Otherwise colors and especially brightness levels can be quite wrong when
the textures are used on a different screen

M  +3    -1    src/plugins/zoom/zoom.cpp
M  +2    -1    src/plugins/zoom/zoom.h

https://invent.kde.org/plasma/kwin/-/commit/9293df2681ff9466a3d7f517ac3b88e153445429
Comment 3 Zamundaaa 2024-06-21 12:45:54 UTC
Git commit 2cc826067a4058c8c04b5f79f7f5c75933ec250e by Xaver Hugl.
Committed on 21/06/2024 at 12:34.
Pushed by zamundaaa into branch 'Plasma/6.1'.

plugins/zoom: do colorspace conversions between the screen textures

Otherwise colors and especially brightness levels can be quite wrong when
the textures are used on a different screen


(cherry picked from commit 9293df2681ff9466a3d7f517ac3b88e153445429)

Co-authored-by: Xaver Hugl <xaver.hugl@gmail.com>

M  +3    -1    src/plugins/zoom/zoom.cpp
M  +2    -1    src/plugins/zoom/zoom.h

https://invent.kde.org/plasma/kwin/-/commit/2cc826067a4058c8c04b5f79f7f5c75933ec250e