Bug 510621 - Frame pacing desynchronization on QtQuick-based animations (Plasma desktop itself, Kirigami apps) at high refresh rates (165 Hz, Radeon iGPU)
Summary: Frame pacing desynchronization on QtQuick-based animations (Plasma desktop it...
Status: RESOLVED DUPLICATE of bug 485927
Alias: None
Product: plasmashell
Classification: Plasma
Component: generic-performance (other bugs)
Version First Reported In: 6.4.5
Platform: Arch Linux Linux
: NOR normal
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-10-15 03:24 UTC by Ángel Navarro
Modified: 2025-10-15 05:19 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 Ángel Navarro 2025-10-15 03:24:23 UTC
SUMMARY

On my laptop with a **165 Hz** panel (AMD Radeon 680M, Mesa 25.2.4, Plasma 6.4.5, Qt 6.10), **QtQuick-based** Plasma elements (mostly Plasmashell itself, Plasma settings, Discover and other Kirigami/QtQuick based apps like KMail, and the Processes list on the System Monitor to name a few) animations, scrolling and transitions appear **visually choppy and irregular**, as if **they were running capped at 60 Hz despite the compositor correctly running at 165 Hz**.

**QtWidgets-based** applications (Dolphin, Kate and Konsole) and general window movement are perfectly smooth, but QtQuick components (Plasma panel, Overview, Kirigami apps) and also the window resizing show **irregular frame pacing**, as if their animation timing was slightly out of sync with the compositor (mismatched framerate?)

It looks like **QtQuick’s animation driver and KWin’s compositor clock are slightly desynchronized**, producing micro-stutters and a “pacing mismatch” that feels like dropped frames. The issue persists on both **Wayland** and **X11*.

I obviously can't record any of these because screen recording also drops frames to achieve 60 Hz and we are talking about 60+ Hz refresh rates.

STEPS TO REPRODUCE: try these

- When **resizing a window**, **most notorious in Kirigami/QtQuick apps** like Elisa music player and Plasma settings; but **also affecting QtWidgets apps though not as much**, only moving the window is buttery smooth but **resizing looks choppy**, unmatching, like a lot of **dropped frames** effect which is visually unpleasant and stressful as someone with hyperactivity.
- When **scrolling through desktops** in **Overview** mode, scrolling also looks **60 Hz-capped and full of frame drops**
- **Scrolling though lists**. Three examples are the Plasma settings left bar, the mail list and also through the mail contents on KMail/Kontact (which is a Kirigami app), and even scrolling through the "All" program list on the panel also looks jittery/choppy.
- **On the logout/shutdown screen**, while being buttery smooth most of the time, the transition caps as well from time to time.

Or these:

# Reproduction:
1. Start a Wayland session at 165 Hz.
2. Open System Settings → Appearance → Global Theme and navigate between pages.
3. Observe inconsistent frame pacing / 60 Hz feel on transitions.
4. Suspend and resume → notice further degradation (~20–30 FPS feel).
5. Run `env QSG_INFO=1 plasmashell --replace` → logs still show correct vsync (6.06 ms).

After **suspending** and **resuming**, **even Plasmashell** starts to look really choppy ~20 FPS and I have to log out and back in to restore the full refresh rate and timings as they were even if they start to dephase again.
Suspending and resuming framerate timing mismatch affects the panels, the panel applets and the global framerate also drops, and it also tanks the graphics and input response times.

The issues affect both Wayland and X11.

**SAMPLE TESTS:**

`plasmashell` **does** run at 165 Hz:

```
~ » env QSG_INFO=1 plasmashell --replace

qt.scenegraph.general: threaded render loop
qt.scenegraph.general: Using sg animation driver
qt.scenegraph.general: Animation Driver: using vsync: 6.06 ms
kf.svg: The theme "Ant-Dark" uses the legacy metadata.desktop. Consider contacting the author and asking them update it to use the newer JSON format.
kf.plasma.quick: Applet preload policy set to 1
qt.scenegraph.general: Using sg animation driver
qt.scenegraph.general: Animation Driver: using vsync: 6.06 ms
qt.scenegraph.general: Creating QRhi with backend OpenGL for window 0x562534671d70 (wflags 0x801)
  Graphics API debug/validation layers: 0
  Debug markers: 0
  Timestamps: 0
  Prefer software device: 0
  Shader/pipeline cache collection: 1
qt.rhi.general: Created OpenGL context QSurfaceFormat(version 4.6, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 1, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
qt.rhi.general: OpenGL VENDOR: AMD RENDERER: AMD Radeon Graphics (radeonsi, rembrandt, LLVM 20.1.8, DRM 3.64, 6.17.1-arch1-1) VERSION: 4.6 (Compatibility Profile) Mesa 25.2.4-arch1.2
qt.scenegraph.general: Created QRhi 0x7fb720001750 for window 0x562534671d70
qt.scenegraph.general: Attempting to seed pipeline cache for QRhi 0x7fb720001750 from '/home/lito/.cache/plasmashell/qtpipelinecache-x86_64-little_endian-lp64/qqpc_opengl'
qt.rhi.general: Seeded pipeline cache with 5 program binaries
qt.scenegraph.general: MSAA sample count for the swapchain is 1. Alpha channel requested = no.
qt.scenegraph.general: rhi texture atlas dimensions: 4096x2048
qml: QML Plugin org.kde.plasma.panelcolorizer not found. Custom blur background will not work.
qt.scenegraph.general: Using sg animation driver
qt.scenegraph.general: Animation Driver: using vsync: 6.06 ms
qt.scenegraph.general: Creating QRhi with backend OpenGL for window 0x562535496a00 (wflags 0x200800)
  Graphics API debug/validation layers: 0
  Debug markers: 0
  Timestamps: 0
  Prefer software device: 0
  Shader/pipeline cache collection: 1
qt.rhi.general: Created OpenGL context QSurfaceFormat(version 4.6, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 1, colorSpace QColorSpace(), profile  QSurfaceFormat::CompatibilityProfile)
qt.rhi.general: OpenGL VENDOR: AMD RENDERER: AMD Radeon Graphics (radeonsi, rembrandt, LLVM 20.1.8, DRM 3.64, 6.17.1-arch1-1) VERSION: 4.6 (Compatibility Profile) Mesa 25.2.4-arch1.2
qt.scenegraph.general: Created QRhi 0x7fb6c4001750 for window 0x562535496a00
qt.scenegraph.general: Attempting to seed pipeline cache for QRhi 0x7fb6c4001750 from '/home/lito/.cache/plasmashell/qtpipelinecache-x86_64-little_endian-lp64/qqpc_opengl'
qt.rhi.general: Seeded pipeline cache with 5 program binaries
qt.scenegraph.general: MSAA sample count for the swapchain is 1. Alpha channel requested = yes.
qt.scenegraph.general: rhi texture atlas dimensions: 512x512
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
No QSGTexture provided from updateSampledImage(). This is wrong.
qt.scenegraph.general: animation driver switched to timer mode
qt.scenegraph.general: Using sg animation driver
qt.scenegraph.general: animation driver switched to vsync mode
```

Don't be fooled by the Panel colorizer. This happens independently if it is enabled or not.
6.06 ms = 1000 / 6.06 Hz = 165.0165 Hz; so **Plasmashell** itself **is** running at 165 Hz.

```
~ » qdbus org.kde.KWin /KWin supportInformation | grep -i rate

separateScreenFocus: true
Refresh Rate: 165003
```

Also confirms that it is running at 165.003, so it is a **dephased** clock, though the problem seems to be likely that **there are parts of the Plasma compositor**, whether it is the Wayland or not, **that cap the animations to 60 Hz** which looks like a sped up snail which doesn't look good.

EXPECTED BEHAVIOR

All QtQuick animations (Plasma Shell, Kirigami apps, etc.) should exhibit smooth motion consistent with the compositor’s actual refresh rate (165 Hz), matching QtWidgets and OpenGL applications.

ACTUAL BEHAVIOR

Animations appear visually capped at 60 Hz or experience irregular frame pacing.
After suspend/resume, performance drops dramatically until restarting Plasmashell.

SIDE NOTES

- Forcing Vulkan RHI causes unrelated rendering issues (panel failing to open).
- The issue seems to stem from a timing drift and also a framerate cap/mismatch/bottleneck between QtQuick’s animation driver and KWin’s frame presentation clock

**SPECS:**

**CPU**: AMD Ryzen 9 6900HX
**iGPU**: AMD Radeon 680M (**Plasma runs here**, confirmed with nvtop)
**dGPU**: NVIDIA RTX 3050 Laptop (only used for games, **Plasma doesn't use it**)
**RAM**: 16 GB
**Monitor**: 2560x1440 @ 165 Hz, DCI-P3
**Plasma**: 6.4.5, but this comes from a long time ago and it is still not fixed
**Qt**: 6.10.0
**KDE Frameworks**: 6.19.0
**Kernel**: 6.17.1 - **both zen and vanilla affected**
**Platform**: **both Wayland and X11 **affected**
Comment 1 Blazer Silving 2025-10-15 05:19:26 UTC
Hi, thanks for the detailed report! This is likely the same issue as https://bugs.kde.org/show_bug.cgi?id=485927 so i'm marking it as a duplicate, but let me know if that's not the case.

*** This bug has been marked as a duplicate of bug 485927 ***