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.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 86810180..f1e426d7 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -2551,6 +2551,7 @@ static bool __kgem_retire_rq(struct kgem *kgem, struct kgem_request *rq)
}
bo->domain = DOMAIN_NONE;
+ bo->gtt_dirty = false;
bo->rq = NULL;
if (bo->refcnt)
continue;
@@ -2703,6 +2704,21 @@ bool __kgem_ring_is_idle(struct kgem *kgem, int ring)
return true;
}
+void __kgem_retire_requests_upto(struct kgem *kgem, struct kgem_request *rq)
+{
+ struct list *requests = &kgem->requests[RQ_RING(rq) == I915_EXEC_BLT];
+ struct kgem_request *tmp;
+
+ rq = RQ(rq);
+ assert(rq != &kgem->static_request);
+
+ do {
+ tmp = list_first_entry(requests, struct kgem_request, list);
+ assert(tmp->ring == rq->ring);
+ __kgem_retire_rq(kgem, tmp);
+ } while (tmp != rq);
+}
+
#if 0
static void kgem_commit__check_reloc(struct kgem *kgem)
{