diff options
Diffstat (limited to 'src/gallium/drivers/nouveau/nv50/nv50_miptree.c')
-rw-r--r-- | src/gallium/drivers/nouveau/nv50/nv50_miptree.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_miptree.c b/src/gallium/drivers/nouveau/nv50/nv50_miptree.c index f2e304f..7f281f9 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_miptree.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_miptree.c @@ -163,10 +163,13 @@ nv50_miptree_destroy(struct pipe_screen *pscreen, struct pipe_resource *pt) { struct nv50_miptree *mt = nv50_miptree(pt); - if (mt->base.fence && mt->base.fence->state < NOUVEAU_FENCE_STATE_FLUSHED) + if (mt->base.fence && mt->base.fence->state < NOUVEAU_FENCE_STATE_FLUSHED) { + pipe_mutex_lock(nouveau_screen(pscreen)->push_mutex); nouveau_fence_work(mt->base.fence, nouveau_fence_unref_bo, mt->base.bo); - else + pipe_mutex_unlock(nouveau_screen(pscreen)->push_mutex); + } else { nouveau_bo_ref(NULL, &mt->base.bo); + } nouveau_fence_ref(NULL, &mt->base.fence); nouveau_fence_ref(NULL, &mt->base.fence_wr); |