Intel Driver Is Now Doing Triple-Bufferred Page-Flips
The Intel Linux X.Org driver is now doing triple-buffered page-flips in the latest attempt to battle imperfect frames with tears or jitters. This is now the default behavior with the next xf86-video-intel release.
Rather than simply page-flipping just between a front and back-buffer, the Intel DDX now has a third buffer. This third buffer, the draw buffer, is supplied immediately upon the front-buffer being flipped so that the application rendering isn't blocked temporarily while waiting for the current front-buffer to be swapped away from the scan-out. This should basically work around jitters by always having a frame ready rather than hitting cases where rendering a new frame may take longer than the frame interval length. Or in other words, the frame-rate being stuck at 30 and/or 60 FPS. The downside is that you just have an extra frame of latency. This triple-buffering on applies to Intel KMS page-flipping.
This triple-bufferred page-flipping was introduced via this commit by Chris Wilson. For anyone wishing to revert to the old behavior, there's now a TripleBuffer xorg.conf option to disable the said functionality.
Rather than simply page-flipping just between a front and back-buffer, the Intel DDX now has a third buffer. This third buffer, the draw buffer, is supplied immediately upon the front-buffer being flipped so that the application rendering isn't blocked temporarily while waiting for the current front-buffer to be swapped away from the scan-out. This should basically work around jitters by always having a frame ready rather than hitting cases where rendering a new frame may take longer than the frame interval length. Or in other words, the frame-rate being stuck at 30 and/or 60 FPS. The downside is that you just have an extra frame of latency. This triple-buffering on applies to Intel KMS page-flipping.
This triple-bufferred page-flipping was introduced via this commit by Chris Wilson. For anyone wishing to revert to the old behavior, there's now a TripleBuffer xorg.conf option to disable the said functionality.
4 Comments