sna: Cleanup up the cache upon close
To help with leak-chasing under valgrind. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
0ac4b974b9
commit
4f2fc00944
|
|
@ -1064,6 +1064,45 @@ bool kgem_expire_cache(struct kgem *kgem)
|
|||
(void)size;
|
||||
}
|
||||
|
||||
void kgem_cleanup_cache(struct kgem *kgem)
|
||||
{
|
||||
struct kgem_bo *bo;
|
||||
int i;
|
||||
|
||||
/* sync to the most recent request */
|
||||
if (!list_is_empty(&kgem->requests)) {
|
||||
struct kgem_request *rq;
|
||||
struct drm_i915_gem_set_domain set_domain;
|
||||
|
||||
rq = list_first_entry(&kgem->requests,
|
||||
struct kgem_request,
|
||||
list);
|
||||
|
||||
set_domain.handle = rq->bo->handle;
|
||||
set_domain.read_domains = I915_GEM_DOMAIN_GTT;
|
||||
set_domain.write_domain = I915_GEM_DOMAIN_GTT;
|
||||
drmIoctl(kgem->fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain);
|
||||
}
|
||||
|
||||
kgem_retire(kgem);
|
||||
kgem_cleanup(kgem);
|
||||
kgem_expire_partial(kgem);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(kgem->inactive); i++) {
|
||||
while (!list_is_empty(&kgem->inactive[i])) {
|
||||
bo = list_last_entry(&kgem->inactive[i],
|
||||
struct kgem_bo, list);
|
||||
|
||||
gem_close(kgem->fd, bo->handle);
|
||||
list_del(&bo->list);
|
||||
free(bo);
|
||||
}
|
||||
}
|
||||
|
||||
kgem->need_purge = false;
|
||||
kgem->need_expire = false;
|
||||
}
|
||||
|
||||
static struct kgem_bo *
|
||||
search_linear_cache(struct kgem *kgem, int size, bool active)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -327,6 +327,7 @@ void kgem_buffer_sync(struct kgem *kgem, struct kgem_bo *bo);
|
|||
|
||||
void kgem_throttle(struct kgem *kgem);
|
||||
bool kgem_expire_cache(struct kgem *kgem);
|
||||
void kgem_cleanup_cache(struct kgem *kgem);
|
||||
|
||||
#if HAS_EXTRA_DEBUG
|
||||
void __kgem_batch_debug(struct kgem *kgem, uint32_t nbatch);
|
||||
|
|
|
|||
|
|
@ -3400,6 +3400,8 @@ void sna_accel_close(struct sna *sna)
|
|||
sna_gradients_close(sna);
|
||||
|
||||
DeleteCallback(&FlushCallback, sna_accel_flush_callback, sna);
|
||||
|
||||
kgem_cleanup_cache(&sna->kgem);
|
||||
}
|
||||
|
||||
static void sna_accel_throttle(struct sna *sna)
|
||||
|
|
|
|||
Loading…
Reference in New Issue