mirror of
https://github.com/X11Libre/xf86-video-intel.git
synced 2026-03-24 01:24:12 +00:00
sna: Discard the batch if we are discarding the only buffer in it
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
@@ -1738,6 +1738,18 @@ static void __kgem_bo_destroy(struct kgem *kgem, struct kgem_bo *bo)
|
||||
assert(bo->io == false);
|
||||
assert(bo->scanout == false);
|
||||
|
||||
if (bo->exec && kgem->nexec == 1) {
|
||||
DBG(("%s: only handle in batch, discarding last operations\n",
|
||||
__FUNCTION__));
|
||||
assert(bo->exec == &kgem->exec[0]);
|
||||
assert(kgem->exec[0].handle == bo->handle);
|
||||
assert(RQ(bo->rq) == kgem->next_request);
|
||||
bo->refcnt = 1;
|
||||
kgem_reset(kgem);
|
||||
assert(bo->rq == NULL);
|
||||
bo->refcnt = 0;
|
||||
}
|
||||
|
||||
if (bo->rq) {
|
||||
struct list *cache;
|
||||
|
||||
@@ -2397,6 +2409,8 @@ void kgem_reset(struct kgem *kgem)
|
||||
request);
|
||||
list_del(&bo->request);
|
||||
|
||||
assert(RQ(bo->rq) == rq);
|
||||
|
||||
bo->binding.offset = 0;
|
||||
bo->exec = NULL;
|
||||
bo->target_handle = -1;
|
||||
@@ -2411,8 +2425,10 @@ void kgem_reset(struct kgem *kgem)
|
||||
}
|
||||
}
|
||||
|
||||
if (kgem->next_request != &kgem->static_request)
|
||||
free(kgem->next_request);
|
||||
if (rq != &kgem->static_request) {
|
||||
list_init(&rq->list);
|
||||
__kgem_request_free(rq);
|
||||
}
|
||||
}
|
||||
|
||||
kgem->nfence = 0;
|
||||
|
||||
Reference in New Issue
Block a user