From 060d055ac5608b7ec913c8573d0762d8388cd63e Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Fri, 7 May 2021 14:48:42 +0200 Subject: [PATCH] nouveau/buffer: simplify uses of nouveau_fence_work nouveau_fence_work already checks the state, so we can just call it directly. Strictly speaking, this isn't functional equivalent, but practically it doesn't matter when we get the callback called. Main reason for doing this is, that this makes locking way easier as we can simply lock within nouveau_fence_* functions and callers don't have to take locks themselves. Signed-off-by: Karol Herbst Reviewed-by: M Henning Part-of: --- src/gallium/drivers/nouveau/nouveau_buffer.c | 8 ++------ src/gallium/drivers/nouveau/nv50/nv50_miptree.c | 6 +----- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/gallium/drivers/nouveau/nouveau_buffer.c b/src/gallium/drivers/nouveau/nouveau_buffer.c index 284525086d0..78f8a9cb5d8 100644 --- a/src/gallium/drivers/nouveau/nouveau_buffer.c +++ b/src/gallium/drivers/nouveau/nouveau_buffer.c @@ -91,12 +91,8 @@ nouveau_buffer_release_gpu_storage(struct nv04_resource *buf) { assert(!(buf->status & NOUVEAU_BUFFER_STATUS_USER_PTR)); - if (buf->fence && buf->fence->state < NOUVEAU_FENCE_STATE_FLUSHED) { - nouveau_fence_work(buf->fence, nouveau_fence_unref_bo, buf->bo); - buf->bo = NULL; - } else { - nouveau_bo_ref(NULL, &buf->bo); - } + nouveau_fence_work(buf->fence, nouveau_fence_unref_bo, buf->bo); + buf->bo = NULL; if (buf->mm) release_allocation(&buf->mm, buf->fence); diff --git a/src/gallium/drivers/nouveau/nv50/nv50_miptree.c b/src/gallium/drivers/nouveau/nv50/nv50_miptree.c index 8f45d9e659f..4554dbf02d4 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_miptree.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_miptree.c @@ -163,11 +163,7 @@ 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) - nouveau_fence_work(mt->base.fence, nouveau_fence_unref_bo, mt->base.bo); - else - nouveau_bo_ref(NULL, &mt->base.bo); - + nouveau_fence_work(mt->base.fence, nouveau_fence_unref_bo, mt->base.bo); nouveau_fence_ref(NULL, &mt->base.fence); nouveau_fence_ref(NULL, &mt->base.fence_wr);