KWin window effect stuttering - how to diagnose/write a good bug report?

Hi - I was wondering what sort of information would be helpful in diagnosing KWin window effect stuttering/choppiness that’s inconsistent across devices that should be pretty similar.

I was lucky enough to be able to get a new computer with a pretty up-to-date CPU, GPU, etc., and it absolutely flies when playing games (cranking modern games up to max settings at full framerate) - but oddly, KWin’s window effects, like Plasma popups sliding up, windows fading in and out, etc. are visibly choppier than on my two other devices.

One of those devices is a hybrid laptop that renders the desktop using the built-in AMD graphics, but the other one is an Nvidia desktop just like this new one - but it’s the older one (GTX 1060) that has completely smooth animations, while the newer one (RTX 4070 SUPER) is choppy.

I looked at the differences between the KWin support info on each device, and nothing really stands out as different other than the graphics card name and adaptive sync being automatic on the new, choppy device and unavailable on the old, smooth one.

(This is the most first-world problem possible of course, at the end of the day I can just not look at it that closely, or turn animation speed to Instant, but if there’s some underlying cause that might help elsewhere I’d like to try to help pin it down)

Both machines are running Fedora 40, with the Nvidia drivers installed via the RPMFusion repository. Any ideas or guidance would be much appreciated!

KWin info:

Version
=======
KWin version: 6.1.3
Qt Version: 6.7.2
Qt compile version: 6.7.2
XCB compile version: 1.17.0

Operation Mode: Xwayland

Build Options
=============
KWIN_BUILD_DECORATIONS: yes
KWIN_BUILD_TABBOX: yes
KWIN_BUILD_ACTIVITIES: yes
HAVE_X11_XCB: yes
HAVE_GLX: yes

X11
===
Vendor: The X.Org Foundation
Vendor Release: 12401001
Protocol Version/Revision: 11/0
SHAPE: yes; Version: 0x11
RANDR: yes; Version: 0x14
DAMAGE: yes; Version: 0x11
Composite: yes; Version: 0x4
RENDER: yes; Version: 0xb
XFIXES: yes; Version: 0x50
SYNC: yes; Version: 0x31
GLX: yes; Version: 0x0

Decoration
==========
Plugin: org.kde.breeze
Theme: Breeze
Plugin recommends border size: None
onAllDesktopsAvailable: false
alphaChannelSupported: true
closeOnDoubleClickOnMenu: false
decorationButtonsLeft: 0, 2
decorationButtonsRight: 6, 3, 4, 5
borderSize: 0
gridUnit: 12
font: Noto Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1
smallSpacing: 3
largeSpacing: 12

Output backend
==============
Name: DRM
Atomic Mode Setting on GPU 0: true

Cursor
======
themeName: breeze_cursors
themeSize: 24

Options
=======
focusPolicy: ClickToFocus
xwaylandCrashPolicy: 1
xwaylandMaxCrashCount: 3
nextFocusPrefersMouse: false
clickRaise: true
autoRaise: false
autoRaiseInterval: 0
delayFocusInterval: 0
shadeHover: false
shadeHoverInterval: 250
separateScreenFocus: false
placement: 5
activationDesktopPolicy: SwitchToOtherDesktop
focusPolicyIsReasonable: true
borderSnapZone: 10
windowSnapZone: 10
centerSnapZone: 0
snapOnlyWhenOverlapping: false
edgeBarrier: 100
cornerBarrier: 1
rollOverDesktops: false
focusStealingPreventionLevel: 1
operationTitlebarDblClick: 5000
operationMaxButtonLeftClick: 5000
operationMaxButtonMiddleClick: 5015
operationMaxButtonRightClick: 5014
commandActiveTitlebar1: MouseRaise
commandActiveTitlebar2: MouseNothing
commandActiveTitlebar3: MouseOperationsMenu
commandInactiveTitlebar1: MouseActivateAndRaise
commandInactiveTitlebar2: MouseNothing
commandInactiveTitlebar3: MouseOperationsMenu
commandWindow1: MouseActivateRaiseAndPassClick
commandWindow2: MouseActivateAndPassClick
commandWindow3: MouseActivateAndPassClick
commandWindowWheel: MouseNothing
commandAll1: MouseUnrestrictedMove
commandAll2: MouseToggleRaiseAndLower
commandAll3: MouseUnrestrictedResize
keyCmdAllModKey: 16777250
condensedTitle: false
electricBorderMaximize: true
electricBorderTiling: true
electricBorderCornerRatio: 0.25
borderlessMaximizedWindows: false
killPingTimeout: 5000
hideUtilityWindowsForInactive: true
compositingMode: 1
useCompositing: true
hiddenPreviews: 1
glSmoothScale: 2
glStrictBinding: true
glStrictBindingFollowsDriver: true
glPreferBufferSwap: AutoSwapStrategy
glPlatformInterface: 2
windowsBlockCompositing: true
allowTearing: true

Screen Edges
============
desktopSwitching: false
desktopSwitchingMovingClients: false
cursorPushBackDistance: 1x1
timeThreshold: 75
reActivateThreshold: 350
actionTopLeft: 0
actionTop: 0
actionTopRight: 0
actionRight: 0
actionBottomRight: 0
actionBottom: 0
actionBottomLeft: 0
actionLeft: 0

Screens
=======
Number of Screens: 1

Screen 0:
---------
Name: DP-3
Enabled: 1
Geometry: 0,0,2560x1440
Scale: 1
Refresh Rate: 144006
Adaptive Sync: automatic

Compositing
===========
Compositing is active
Compositing Type: OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce RTX 4070 SUPER/PCIe/SSE2
OpenGL version string: 3.1.0 NVIDIA 555.58.02
OpenGL platform interface: EGL
OpenGL shading language version string: 1.40 NVIDIA via Cg compiler
Driver: NVIDIA
Driver version: 555.58.2
GPU class: Unknown
OpenGL version: 3.1
GLSL version: 1.40
X server version: 1.24.1
Linux kernel version: 6.9.9
Direct rendering: Requires strict binding: no
Virtual Machine:  no
OpenGL 2 Shaders are used

Loaded Effects:
---------------
shakecursor
screenshot
outputlocator
colorpicker
zoom
screenedge
blur
contrast
slidingpopups
sessionquit
logout
login
windowaperture
slide
scale
squash
fadingpopups
maximize
fullscreen
frozenapp
dialogparent
windowview
tileseditor
overview
highlightwindow
blendchanges
startupfeedback
screentransform
kscreen

Currently Active Effects:
-------------------------
blur
contrast
scale
fadingpopups
highlightwindow

Effect Settings:
----------------
shakecursor:

screenshot:

outputlocator:

colorpicker:

zoom:
zoomFactor: 1.2
mousePointer: 0
mouseTracking: 0
focusTrackingEnabled: false
textCaretTrackingEnabled: false
focusDelay: 350
moveFactor: 20
targetZoom: 1

screenedge:

blur:

contrast:

slidingpopups:
slideInDuration: 200
slideOutDuration: 200

sessionquit:
pluginId: sessionquit
isActiveFullScreenEffect: false

logout:
pluginId: logout
isActiveFullScreenEffect: false

login:
pluginId: login
isActiveFullScreenEffect: false

windowaperture:
pluginId: windowaperture
isActiveFullScreenEffect: false

slide:
horizontalGap: 45
verticalGap: 20
slideBackground: true

scale:
pluginId: scale
isActiveFullScreenEffect: false

squash:
pluginId: squash
isActiveFullScreenEffect: false

fadingpopups:
pluginId: fadingpopups
isActiveFullScreenEffect: false

maximize:
pluginId: maximize
isActiveFullScreenEffect: false

fullscreen:
pluginId: fullscreen
isActiveFullScreenEffect: false

frozenapp:
pluginId: frozenapp
isActiveFullScreenEffect: false

dialogparent:
pluginId: dialogparent
isActiveFullScreenEffect: false

windowview:
activeView: 
delegate: 
animationDuration: 300
ignoreMinimized: false
mode: 
partialActivationFactor: 0
gestureInProgress: false
searchText: 
selectedIds: 

tileseditor:
activeView: 
delegate: 
animationDuration: 200

overview:
activeView: 
delegate: 
animationDuration: 300
ignoreMinimized: false
filterWindows: true
organizedGrid: true
overviewPartialActivationFactor: 0
overviewGestureInProgress: false
transitionPartialActivationFactor: 0
transitionGestureInProgress: false
gridPartialActivationFactor: 0
gridGestureInProgress: false
desktopOffset: 
searchText: 

highlightwindow:

blendchanges:

startupfeedback:
type: 1

screentransform:

kscreen:


Loaded Plugins:
---------------
BounceKeysPlugin
StickyKeysPlugin
buttonsrebind
eis
krunnerintegration
nightlight
screencast

Available Plugins:
------------------
BounceKeysPlugin
StickyKeysPlugin
buttonsrebind
eis
krunnerintegration
nightlight
screencast

General system info on the new one with choppier animations:

Operating System: Fedora Linux 40
KDE Plasma Version: 6.1.3
KDE Frameworks Version: 6.4.0
Qt Version: 6.7.2
Kernel Version: 6.9.9-200.fc40.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 7800X3D 8-Core Processor
Memory: 31.0 GiB of RAM
Graphics Processor: NVIDIA GeForce RTX 4070 SUPER/PCIe/SSE2
Manufacturer: MicroElectronics
Product Name: G717
System Version: 1.0

Leaving this up in case anyone else ends up in the same spot I was, but, I don’t know if KWin performance measurement would have helped anyway, as my specific problem was because the Nvidia 555 drivers have enabled by default a feature (GSP offload?) that’s apparently still buggy in some KDE setups.

My other desktop was too old to have that feature even physically possible, I think :slight_smile:

Relevant links:

Folks discussing a resolution to this issue: https://www.reddit.com/r/linux_gaming/comments/1d0mqmz/nvidia_555_beta_gsp_firmware/

Coming work that should hopefully help without workarounds: https://www.reddit.com/r/kde/comments/1eahyr5/nvidia_users_5602803_beta_aims_to_fix_frame/

1 Like