Details
-
Suggestion
-
Resolution: Unresolved
-
P1: Critical
-
6.4
-
None
Description
Qt Quick threaded renderer caps the animations to screen vsync e.g. 60 fps and if this isn't reached then animate as fast as possible. Consider providing an option to sync animations to "next closest frame". So e.g. if frame takes ~20-25ms, renderloop & animations would run at steady 30fps instead of 40-50fps as steady fps can have a smoother appearance (and use less CPU & GPU). This may become more desirable with 75/120/144 Hz screens where syncing to every other frame would still be smooth.
This could maybe be achieved in QSGThreadedRenderLoop::polishAndSyn() instead of current "polish -> vsync -> animate" would do "polish -> animate -> vsync" so if animate takes too long vsync locks to next frame?
Attached 2 videos experimenting how increasing CPU usage affects to current & this possible "always vsynced" animations. Difference isn't huge, but steady 30fps did feel somewhat smoother.