summaryrefslogtreecommitdiff
path: root/man
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-07-11 10:50:36 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-07-11 22:13:01 +0100
commit7538be3315b8683b05e8f6b22023baadcc0bc4da (patch)
tree5c7137fa88bfe15d852c981fcc234515d8eca193 /man
parent2608a367acba7247e50754c3daeed09ba2e97d05 (diff)
dri: Enable triple-bufferred pageflips
By popular demand. Triple-buffering trade-offs output latency versus jitter. By having a pre-rendered frame ready to swap in following a pageflip, we avoid the scenario where the latency between receiving the flip complete signal from the kernel, waking up the vsynced application, it render the new frame and then for the server to process the swap request is greater than the frame interval, causing us to miss the vblank. The result is that application can become frame-locked to 30fps. Instead, we report to the application that the first frame swap is immediately completed, supply a new back buffer (or else the rendering would be blocked on waiting for the front-buffer to be swapped away from the scanout) and let them proceed to render the second frame. The second frame is added to the swap queue, and the client throttled to vrefresh. (If the client missed the vblank, the swap queue is empty and the client is immediately woken again, whilst the pageflip is pending.) Note, for practical reasons this only applies to page-flipping, for example, calls to glXSwapBuffer() on fullscreen applications. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'man')
-rw-r--r--man/intel.man11
1 files changed, 11 insertions, 0 deletions
diff --git a/man/intel.man b/man/intel.man
index e5e05724..282b9f35 100644
--- a/man/intel.man
+++ b/man/intel.man
@@ -180,6 +180,17 @@ the framerate of applications that render frames at less than refresh rate.
.IP
Default: enabled.
.TP
+.BI "Option \*qTripleBuffer\*q \*q" boolean \*q
+This option enables the use of a third buffer for page-flipping. The third
+buffer allows applications to run at vrefresh rates even if they occasionally
+fail to swapbuffers on time. The effect of such missed swaps is the output
+jitters between 60fps and 30fps, and in the worst case appears frame-locked
+to 30fps. The disadvantage of triple buffering is that there is an extra
+frame of latency, due to the pre-rendered frame sitting in the swap queue,
+between input and any display update.
+.IP
+Default: enabled.
+.TP
.BI "Option \*qTiling\*q \*q" boolean \*q
This option controls whether memory buffers for Pixmaps are allocated in tiled mode. In
most cases (especially for complex rendering), tiling dramatically improves