Bug 495287 - PipeWire Screen Capture Freezes Fullscreen Target Applications running on secondary GPUs
Summary: PipeWire Screen Capture Freezes Fullscreen Target Applications running on sec...
Status: REPORTED
Alias: None
Product: kwin
Classification: Plasma
Component: general (show other bugs)
Version: 6.2.2
Platform: Arch Linux Other
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-10-24 08:38 UTC by dreamsyntax
Modified: 2024-10-26 09:39 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description dreamsyntax 2024-10-24 08:38:49 UTC
SUMMARY
Performing a PipeWire screen capture that invokes Portal is freezing the targeted Window if a Window is selected rather than the whole screen, but only for devices with two GPUs where the secondary GPU is being used to render the target Window. kwin 6.1.2 does not have the issue. All newer versions experience this bug.

STEPS TO REPRODUCE
On a computer with two GPUs (such as a laptop) running Wayland (iGPU & dGPU) with "obs-studio" installed...
1. Launch any fullscreen application where the secondary GPU will be used (ex use prime-run). In my own tests, I use dolphin-emu, pick my dGPU in Graphics configuration, use Vulkan as backend, launch a process, then Alt+Enter to full screen the application.
2. Launch OBS Studio
3. Create a new source "Screen Capture (PipeWire)"
4. Open this source and select "Open Selector"
5. When Portal appears, select "Windows" and select your fullscreen application.
6. Immediately the target application should freeze/halt - no frames will be generated. Triggering focus/unfocus on the window with alt-tab will sometimes unfreeze the application.
7. Close OBS / stop the PipeWire capture - the application will unfreeze.

OBSERVED RESULT
An OBS PipeWire 'Windows' capture freezes target applications if on Wayland with dGPU on kwin 6.2.2

EXPECTED RESULT
An OBS PipeWire 'Windows' capture properly can view the window, and the target application is not frozen. kwin 6.1.2 is the last version where this works as expected.

SOFTWARE/OS VERSIONS
Operating System: CachyOS Linux
KDE Plasma Version: 6.2.2
KDE Frameworks Version: 6.7.0
Qt Version: 6.8.0
Kernel Version: 6.6.57-2-cachyos-lts (64-bit)
Graphics Platform: Wayland
Processors: 32 × 13th Gen Intel® Core™ i9-13900HX
Memory: 31.1 GiB of RAM
Graphics Processor: Mesa Intel® Graphics (iGPU) & NVIDIA GeForce RTX 4080 (dGPU)

ADDITIONAL INFORMATION
I noticed another user reported the exact same issue on an unrelated forum. I did not see this reported on KDE bugtracker, which led me to opening this.
https://forum.endeavouros.com/t/screen-freezing-in-fullscreen-apps-using-prime-run/61880

It is worth noting additionally similar weird behavior was observed on kwin versions 6.1.3-6.2.0 on a Desktop with one GPU. Though the freezing occurred if a target application would hide the mouse cursor. At one point the freezing was flipped to only occur if the mouse was shown, and not freeze when hidden. However I can not reproduce any such freezing for single GPU case as of 6.2.2.
Comment 1 Oleh 2024-10-26 09:39:32 UTC
I have exactly the same issue, but on PC with one GPU

Additionally freezing does not occur if I do one of these:
1. Drag OBS Studio window (or other capture app) to the another monitor
2. Enable HDR or change color profile in KDE settings

My setup:
CPU - Ryzen 5600X
GPU - Radeon 6800XT
KDE Plasma version - 6.2.2