summaryrefslogtreecommitdiff
path: root/src/sna/kgem.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/sna/kgem.h')
-rw-r--r--src/sna/kgem.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/sna/kgem.h b/src/sna/kgem.h
index bea518f8..c77866f4 100644
--- a/src/sna/kgem.h
+++ b/src/sna/kgem.h
@@ -618,6 +618,7 @@ static inline bool kgem_bo_is_busy(struct kgem_bo *bo)
return bo->rq;
}
+void __kgem_retire_requests_upto(struct kgem *kgem, struct kgem_request *rq);
static inline bool __kgem_bo_is_busy(struct kgem *kgem, struct kgem_bo *bo)
{
DBG(("%s: handle=%d, domain: %d exec? %d, rq? %d\n", __FUNCTION__,
@@ -627,8 +628,12 @@ static inline bool __kgem_bo_is_busy(struct kgem *kgem, struct kgem_bo *bo)
if (bo->exec)
return true;
- if (bo->rq && !__kgem_busy(kgem, bo->handle))
- __kgem_bo_clear_busy(bo);
+ if (bo->rq && !__kgem_busy(kgem, bo->handle)) {
+ __kgem_retire_requests_upto(kgem, bo->rq);
+ assert(list_is_empty(&bo->request));
+ assert(bo->rq == NULL);
+ assert(bo->domain == DOMAIN_NONE);
+ }
return kgem_bo_is_busy(bo);
}