summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2015-02-25 09:01:25 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2015-02-25 09:01:25 +0000
commit41e559f57e5284462ffb46f8617aeb9f56f97937 (patch)
treeaec46ed271116702a89cb2f64df862218ff4ae37
parent1ae0dc460d3a6b0aed763ab4f8f8af02d2af1940 (diff)
sna: Update the active_scanout flags on async flips
In order to keep our sanity checks and buffers in order, we need to remember to mark the new frontbuffer as the active scanout after an asynchronous pageflip. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna_display.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index d7f5500b..c3cc6baa 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -5501,6 +5501,7 @@ sna_page_flip(struct sna *sna,
crtc_offset, crtc->offset));
fixup_flip:
if (crtc->bo != bo && sna_crtc_flip(sna, crtc, bo, crtc->base->x, crtc->base->y)) {
+update_scanout:
DBG(("%s: removing handle=%d [active_scanout=%d] from scanout, installing handle=%d [active_scanout=%d]\n",
__FUNCTION__, crtc->bo->handle, crtc->bo->active_scanout,
bo->handle, bo->active_scanout));
@@ -5596,8 +5597,8 @@ retry_flip:
DBG(("%s: recording flip on CRTC:%d handle=%d, active_scanout=%d, serial=%d\n",
__FUNCTION__, crtc->id, crtc->flip_bo->handle, crtc->flip_bo->active_scanout, crtc->flip_serial));
- }
-
+ } else
+ goto update_scanout;
next_crtc:
count++;
}