Bug 512338

Summary: Does kde plan to support partial updates for QML windows instead of full-surface repaint every frame?
Product: [Plasma] kwin Reporter: Jie Liu <liujie01>
Component: compositingAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED LATER    
Severity: normal CC: kde
Priority: NOR    
Version First Reported In: git master   
Target Milestone: ---   
Platform: Other   
OS: Other   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Jie Liu 2025-11-19 09:23:40 UTC
SUMMARY

When using QML in KWin/Plasma, every frame triggers a full-window repaint, even when only a small region of the UI changes. This results in unnecessary GPU/CPU workload.
I would like to ask whether KWin/Plasma has plans to support QML partial redraw / region-based damage tracking, similar to what Qt Quick can theoretically provide.

STEPS TO REPRODUCE

Create a QML window with a small animated element (e.g. a blinking rectangle).

Run the QML scene under KWin/Plasma Wayland.

Observe with tools such as WAYLAND_DEBUG=1, KWin’s paint debug tools, or GPU profiling.

OBSERVED RESULT

KWin repaints the entire surface every frame, even though only a very small region changes in the QML scene.
This leads to increased GPU usage and unnecessary composition cost.

EXPECTED RESULT

Ideally, QML could provide partial-damage rectangles to the compositor, and KWin would only repaint the regions that actually changed.

This behavior would greatly benefit performance on low-power devices and animations that affect only small portions of the UI.

SOFTWARE/OS VERSIONS

Linux/KDE Plasma: Any recent Plasma Wayland build
KDE Plasma Version: (your version)
KDE Frameworks Version: (your version)
Qt Version: (your Qt version)

ADDITIONAL INFORMATION

I am a developer working on QML scene optimization. I found that Qt Quick Scene Graph is capable of tracking changed dirty regions internally, but currently KWin treats QML surfaces as fully damaged for each frame.

I would like to ask:

Is there an existing plan or ongoing work for supporting partial damage for QML-based windows?

If not, would such a feature be considered for future Plasma releases?
Comment 1 David Edmundson 2025-11-19 10:30:19 UTC
Absolutely if we get swapBufferWithDamages from Qt we'll make use of it.

>I am a developer working on QML scene optimization. I found that Qt Quick Scene Graph is capable of tracking changed dirty regions internally, but currently KWin treats QML surfaces as fully damaged for each frame.

Cool, we've interacted on gerrit before. CC me on any reviews.