Playnite frame-pacing stutter eliminated by continuous DWM composition activity
Bug Description
I am developing a custom Playnite Fullscreen theme and encountered a repeatable frame-pacing/micro-stutter during horizontal game-cover movement.
For clarity, this is not Playnite's native Fullscreen game row. The theme uses a custom carousel controlled via a plugin. It is a fixed-focus horizontal strip: the selected position stays fixed while the game covers move underneath it using WPF transform animation. The carousel can contain up to 20 games plus a Library tile, with approximately nine covers visible on screen at once.
The carousel movement itself works correctly, but on my system the animation can be visibly uneven, with frames appearing to be held and then catching up.
I have carried out extensive testing of the carousel, theme, plugin, Playnite, Windows and graphics environment. The strongest finding is that the stutter is directly controlled by Windows Desktop Window Manager (DWM) composition activity.
I created a small standalone DirectComposition test program which keeps DWM continuously active. With that program running, the carousel becomes smooth. Stopping it immediately brings the frame-pacing stutter back.
I then tested an unrelated third-party utility called DWMfix, which keeps DWM actively composing using a tiny continuously changing surface. It produces the same result:
DWMfix running = smooth carousel. DWMfix stopped = stutter returns. DWMfix restarted = smooth again.
This has also been confirmed after a cold boot.
I am not claiming that every Playnite theme or system reproduces this issue. My exact reproduction is currently with the custom carousel I have created. I am reporting it because the behaviour appears to involve the Windows/WPF/DWM presentation path rather than simply slow carousel code, and because an independent DWM pacing utility completely controls the visible problem.
I have extensive trace data and a large record of tests and ruled-out causes which I can provide if useful.
Test system:
Windows 11 Home Playnite 10.56 CPU: AMD Ryzen 7 9700X Motherboard: Gigabyte B850 AORUS ELITE WIFI7 BIOS: F11 / AGESA 1.3.0.1 GPU: NVIDIA GeForce RTX 5070 Ti NVIDIA driver: 610.88 Display: Dell U2724D Resolution: 2560 × 1440 Refresh rate: 120 Hz
DWMfix used for independent confirmation: https://github.com/Arccalc/Dwmfix
To Reproduce
Create a custom Playnite Fullscreen theme with a companion plugin controlling a fixed-focus horizontal game-cover carousel.
Use a finite carousel of up to 20 games plus a Library tile, with around nine covers visible at once. Keep the full carousel realised rather than virtualized.
Keep the selected position fixed and move the cover strip underneath it using a WPF TranslateTransform/DoubleAnimation. My implementation uses a 240 ms cubic EaseInOut glide.
On my Windows 11 system, repeatedly navigating Left/Right produces visible uneven frame pacing/micro-stutter.
Start DWMfix while Playnite remains open. The same carousel movement becomes smooth.
Stop DWMfix and the stutter immediately returns. Starting it again makes the carousel smooth again. This has also been confirmed after cold boots.
Diagnostics ID
ad1da6ae-fa74-4761-a0f1-5f681b59090d
Screenshots
No response
Source: JosefNemec/Playnite