diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-06-29 09:33:09 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-06-29 09:33:09 +0100 |
commit | 87c8f5a47e3abb7ff887aab45b6389cf9b8d8008 (patch) | |
tree | 49d564c13b445e75dabb6d20c6a8de795b1cfc19 /src/sna/sna_display.c | |
parent | 31caa43a21a68174386682fd558c911c7c03d76f (diff) |
sna: Make the post-flip delay explictit
As the kernel is inconsistent in enforcing this across generations,
handle the synchronisation of the pageflip explicity. Ultimately this
should be replaced with a tripple buffer mechanism.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/sna/sna_display.c')
-rw-r--r-- | src/sna/sna_display.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index 565e98c5..f1e0bedc 100644 --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -2825,11 +2825,14 @@ disable: /* XXX only works if the kernel stalls fwrites to the current * scanout whilst the flip is pending */ + while (sna->mode.shadow_flip) + sna_mode_wakeup(sna); (void)sna->render.copy_boxes(sna, GXcopy, sna->front, new, 0, 0, sna->front, old, 0, 0, REGION_RECTS(region), REGION_NUM_RECTS(region)); + kgem_submit(&sna->kgem); sna_pixmap(sna->front)->gpu_bo = old; sna->mode.shadow = new; |