summaryrefslogtreecommitdiff
path: root/src/sna/kgem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sna/kgem.c')
-rw-r--r--src/sna/kgem.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 24a47aaf..58df9352 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -725,6 +725,7 @@ void _kgem_add_bo(struct kgem *kgem, struct kgem_bo *bo)
/* XXX is it worth working around gcc here? */
kgem->flush |= bo->flush;
kgem->sync |= bo->sync;
+ kgem->scanout |= bo->scanout;
}
static uint32_t kgem_end_batch(struct kgem *kgem)
@@ -840,7 +841,7 @@ static void __kgem_bo_destroy(struct kgem *kgem, struct kgem_bo *bo)
}
assert(bo->vmap == false && bo->sync == false);
- bo->flush = false;
+ bo->scanout = bo->flush = false;
if (bo->rq) {
DBG(("%s: handle=%d -> active\n", __FUNCTION__, bo->handle));
@@ -1192,6 +1193,7 @@ void kgem_reset(struct kgem *kgem)
kgem->surface = kgem->max_batch_size;
kgem->mode = KGEM_NONE;
kgem->flush = 0;
+ kgem->scanout = 0;
kgem->next_request = __kgem_request_alloc();
@@ -1388,8 +1390,8 @@ void _kgem_submit(struct kgem *kgem)
if (kgem->wedged)
kgem_cleanup(kgem);
+ kgem->flush_now = kgem->scanout;
kgem_reset(kgem);
- kgem->flush_now = 1;
assert(kgem->next_request != NULL);
}