Skip to content

backends/drm: allow having two frames in flight ("triple buffering")

When it takes more than one refresh cycle to render a frame, which isn't unheard of with weak integrated GPUs, KWin starts compositing immediately and we may or may not hit the vblank deadline. If it's missed, then the buffer takes a whole refresh cycle of the display to be used, which means the refresh rate drops to half of what it should be - resulting in a less smooth appearance and increased latency.

With this MR, KWin schedules frames so that they can always hit the vblank deadline, and allows a maximum of two frames to be pending at the same time. This means that if the GPU can't keep up, latency will be increased just as much as is needed instead of almost one entire additional frame of latency and the halved refresh rate.

Depends on !5334

CCBUG: 452119

closes #124

Edited by Xaver Hugl

Merge request reports