From: Rob Clark Date: Fri, 24 Apr 2020 22:10:49 +0000 (-0700) Subject: freedreno: rebind_resource() *before* bo changes X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ca05e6b04d2f96a3de09d6940bea8edb5c852dad;p=mesa.git freedreno: rebind_resource() *before* bo changes This will matter in the next patch, where we need the original rsc->seqno. It means slight shuffling of where we call rebind_resource() in the `fd_try_shadow_resource()` path. Signed-off-by: Rob Clark Part-of: --- diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c b/src/gallium/drivers/freedreno/freedreno_resource.c index a4933acdf3b..88967bf9777 100644 --- a/src/gallium/drivers/freedreno/freedreno_resource.c +++ b/src/gallium/drivers/freedreno/freedreno_resource.c @@ -264,6 +264,7 @@ fd_try_shadow_resource(struct fd_context *ctx, struct fd_resource *rsc, * should empty/destroy rsc->batches hashset) */ fd_bc_invalidate_resource(rsc, false); + rebind_resource(rsc); mtx_lock(&ctx->screen->lock); @@ -386,8 +387,6 @@ fd_resource_uncompress(struct fd_context *ctx, struct fd_resource *rsc) /* shadow should not fail in any cases where we need to uncompress: */ debug_assert(success); - - rebind_resource(rsc); } static struct fd_resource * @@ -635,8 +634,8 @@ fd_resource_transfer_map(struct pipe_context *pctx, if (usage & PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE) { if (needs_flush || fd_resource_busy(rsc, op)) { - realloc_bo(rsc, fd_bo_size(rsc->bo)); rebind_resource(rsc); + realloc_bo(rsc, fd_bo_size(rsc->bo)); } } else if ((usage & PIPE_TRANSFER_WRITE) && prsc->target == PIPE_BUFFER && @@ -679,7 +678,6 @@ fd_resource_transfer_map(struct pipe_context *pctx, if (needs_flush && fd_try_shadow_resource(ctx, rsc, level, box, DRM_FORMAT_MOD_LINEAR)) { needs_flush = busy = false; - rebind_resource(rsc); ctx->stats.shadow_uploads++; } else { struct fd_resource *staging_rsc;