Bug 512338 - Does kde plan to support partial updates for QML windows instead of full-surface repaint every frame?
Summary: Does kde plan to support partial updates for QML windows instead of full-surf...
Status: RESOLVED LATER
Alias: None
Product: kwin
Classification: Plasma
Component: compositing (other bugs)
Version First Reported In: git master
Platform: Other Other
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-11-19 09:23 UTC by Jie Liu
Modified: 2025-11-19 10:30 UTC (History)
1 user (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.