diff options
Diffstat (limited to 'src/sna/kgem.c')
-rw-r--r-- | src/sna/kgem.c | 16 |
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) { |