From 97fdadee6a79f9406a55c235ee46104814321152 Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Thu, 5 Feb 2009 23:03:29 +1000 Subject: nouveau: fix some issues where buffer objects never get freed --- libdrm/nouveau/nouveau_channel.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'libdrm/nouveau/nouveau_channel.c') diff --git a/libdrm/nouveau/nouveau_channel.c b/libdrm/nouveau/nouveau_channel.c index e0fb4157..5de27dc8 100644 --- a/libdrm/nouveau/nouveau_channel.c +++ b/libdrm/nouveau/nouveau_channel.c @@ -150,6 +150,17 @@ nouveau_channel_free(struct nouveau_channel **chan) FIRE_RING(&nvchan->base); + if (!nvdev->mm_enabled) { + struct nouveau_fence *fence = NULL; + + /* Make sure all buffer objects on delayed delete queue + * actually get freed. + */ + nouveau_fence_new(&nvchan->base, &fence); + nouveau_fence_emit(fence); + nouveau_fence_wait(&fence); + } + if (nvchan->notifier_block) drmUnmap(nvchan->notifier_block, nvchan->drm.notifier_size); -- cgit v1.2.3