Bug 479934

Summary: Incorrect display of blur effect
Product: [Plasma] kwin Reporter: Landgraf132
Component: wayland-genericAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal Keywords: qt6, regression
Priority: NOR    
Version First Reported In: 5.93.0   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: screenshot of the problem
New screenshot with reproducible problem.
desktop effects settings

Description Landgraf132 2024-01-17 10:47:24 UTC
Created attachment 164973 [details]
screenshot of the problem

SUMMARY
Blur effect texture flipped on 180 degrees.


STEPS TO REPRODUCE
1. Connect the monitor with the orientation rotated 90 degrees counterclockwise
2. Open any app or widget (for example -  network Widget on default panel) with blur effect

OBSERVED RESULT
Blur texture appears upside down

EXPECTED RESULT
Blur texture is displayed according to reality

SOFTWARE/OS VERSIONS
Operating System: Arch Linux 
KDE Plasma Version: 5.92.0
KDE Frameworks Version: 5.248.0
Qt Version: 6.7.0
Kernel Version: 6.7.0-zen3-1-zen (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 2700X Eight-Core Processor
Memory: 31.3 GiB of RAM
Graphics Processor: NVIDIA GeForce RTX 3060/PCIe/SSE2

ADDITIONAL INFORMATION
Everything is displayed correctly on the monitor without screen rotation.

Output: 1 HDMI-A-1
        enabled
        connected
        priority 2
        HDMI
        Modes:  0:2560x1600@60!  1:2560x1600@120*  2:2560x1600@90  3:2560x1440@120  4:2560x1440@60  5:1920x1200@60  6:1920x1080@120  7:1920x1080@60  8:1920x1080@60  9:1600x1200@60  10:1680x1050@60  11:1600x900@60  12:1280x1024@60  13:1152x864@60  14:1280x720@120  15:1280x720@60  16:1280x720@60  17:1024x768@60  18:800x600@60  19:640x480@60 
        Geometry: 0,0 915x1463
        Scale: 1.75
        Rotation: 8
        Overscan: 0
        Vrr: incapable
        RgbRange: unknown
        HDR: disabled
        Wide Color Gamut: disabled
        ICC profile: none
Output: 2 DP-3
        enabled
        connected
        priority 1
        DisplayPort
        Modes:  0:2560x1440@144*!  1:2560x1440@120  2:2560x1440@100  3:2560x1440@60  4:1920x1080@60  5:1920x1080@60  6:1920x1080@50  7:1680x1050@60  8:1600x900@60  9:1280x1024@75  10:1280x1024@60  11:1440x900@60  12:1280x800@60  13:1152x864@75  14:1280x720@60  15:1280x720@60  16:1280x720@50  17:1024x768@75  18:1024x768@70  19:1024x768@60  20:800x600@75  21:800x600@72  22:800x600@60  23:800x600@56  24:720x576@50  25:720x480@60  26:640x480@75  27:640x480@73  28:640x480@60 
        Geometry: 915,11 2560x1440
        Scale: 1
        Rotation: 1
        Overscan: 0
        Vrr: incapable
        RgbRange: unknown
        HDR: disabled
        Wide Color Gamut: disabled
        ICC profile: none
Comment 1 Bug Janitor Service 2024-01-17 14:25:12 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/4961
Comment 2 Vlad Zahorodnii 2024-01-18 14:35:24 UTC
Git commit f23e0ef05babff4b5f13aa13e6bdcc4447eb3255 by Vlad Zahorodnii.
Committed on 18/01/2024 at 15:15.
Pushed by vladz into branch 'master'.

opengl: Correct transformation order in GLTexture::render()

First, the texture-to-buffer transform has to be applied, then the y
axis should be flipped. Doing it vice versa changes the winding order
of rotation transforms.

Also the screenshot plugin uses incorrect render transform. Since
convertFromGLImage() undoes the render target's transform, the color
space transformation pass should use the same transform, not the
inverted one.

M  +1    -1    src/opengl/gltexture.cpp
M  +4    -1    src/plugins/screenshot/screenshot.cpp

https://invent.kde.org/plasma/kwin/-/commit/f23e0ef05babff4b5f13aa13e6bdcc4447eb3255
Comment 3 Vlad Zahorodnii 2024-01-18 15:47:10 UTC
Git commit daf7afb68a6c66edfcf2dceaddec1a4a76ea5078 by Vlad Zahorodnii.
Committed on 18/01/2024 at 16:35.
Pushed by vladz into branch 'Plasma/6.0'.

opengl: Correct transformation order in GLTexture::render()

First, the texture-to-buffer transform has to be applied, then the y
axis should be flipped. Doing it vice versa changes the winding order
of rotation transforms.

Also the screenshot plugin uses incorrect render transform. Since
convertFromGLImage() undoes the render target's transform, the color
space transformation pass should use the same transform, not the
inverted one.


(cherry picked from commit f23e0ef05babff4b5f13aa13e6bdcc4447eb3255)

M  +1    -1    src/opengl/gltexture.cpp
M  +4    -1    src/plugins/screenshot/screenshot.cpp

https://invent.kde.org/plasma/kwin/-/commit/daf7afb68a6c66edfcf2dceaddec1a4a76ea5078
Comment 4 Landgraf132 2024-02-02 19:37:19 UTC
Created attachment 165484 [details]
New screenshot with reproducible problem.
Comment 5 Landgraf132 2024-02-02 19:38:17 UTC
SUMMARY
Blur effect texture flipped on 180 degrees.

The behavior of regular applications has been fixed (for example, the Konsole in the screenshot). However, plasma widgets still display blur incorrectly. ("New screenshot with reproducible problem")


Operating System: Arch Linux 
KDE Plasma Version: 5.93.0
KDE Frameworks Version: 5.249.0
Qt Version: 6.7.0
Kernel Version: 6.7.2-zen1-2-zen (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 2700X Eight-Core Processor
Memory: 31.3 GiB of RAM
Graphics Processor: NVIDIA GeForce RTX 3060/PCIe/SSE2
Comment 6 Vlad Zahorodnii 2024-02-06 12:03:58 UTC
I cannot reproduce the issue. Try reducing blur strength and also disabling the background contrast effect to have a clearer view of the background.
Comment 7 Landgraf132 2024-02-06 19:49:28 UTC
(In reply to Vlad Zahorodnii from comment #6)
> I cannot reproduce the issue. Try reducing blur strength and also disabling
> the background contrast effect to have a clearer view of the background.

How can I disable blur on the plasma panel?
Comment 8 Vlad Zahorodnii 2024-02-06 20:57:32 UTC
I asked you to reduce the blur strength, not disable it.
Comment 9 Vlad Zahorodnii 2024-02-06 20:58:50 UTC
Created attachment 165627 [details]
desktop effects settings

see the attached screenshot

make sure that "background contrast" is unchecked

then click the configure button next to "blur" to reduce the blur strength
Comment 10 Landgraf132 2024-02-07 07:42:43 UTC
(In reply to Vlad Zahorodnii from comment #9)
> Created attachment 165627 [details]
> desktop effects settings
> 
> see the attached screenshot
> 
> make sure that "background contrast" is unchecked
> 
> then click the configure button next to "blur" to reduce the blur strength

When the "background contrast" effect is turned off, the behavior becomes expected.
Comment 11 Bug Janitor Service 2024-02-07 08:15:07 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/5132
Comment 12 Vlad Zahorodnii 2024-02-07 08:15:43 UTC
Ack, I can reproduce that. I had background contrast effect disabled :D
Comment 13 Vlad Zahorodnii 2024-02-07 14:05:46 UTC
Git commit 6d0f1fedc0d1193c19e6946f72273eb6d00cd91f by Vlad Zahorodnii.
Committed on 07/02/2024 at 13:53.
Pushed by vladz into branch 'master'.

plugins/backgroundcontrast: Correct texture transform

The y axis should be mirrored as the last step, otherwise it's going to
change the winding order in rotation transforms in the render target
transform.

M  +2    -2    src/plugins/backgroundcontrast/contrast.cpp

https://invent.kde.org/plasma/kwin/-/commit/6d0f1fedc0d1193c19e6946f72273eb6d00cd91f
Comment 14 Vlad Zahorodnii 2024-02-07 15:21:31 UTC
Git commit c3eb4ecd046a9c4cdeebce832df01dbb2edf243b by Vlad Zahorodnii.
Committed on 07/02/2024 at 15:14.
Pushed by vladz into branch 'Plasma/6.0'.

plugins/backgroundcontrast: Correct texture transform

The y axis should be mirrored as the last step, otherwise it's going to
change the winding order in rotation transforms in the render target
transform.


(cherry picked from commit 6d0f1fedc0d1193c19e6946f72273eb6d00cd91f)

M  +2    -2    src/plugins/backgroundcontrast/contrast.cpp

https://invent.kde.org/plasma/kwin/-/commit/c3eb4ecd046a9c4cdeebce832df01dbb2edf243b