From eab6d75066463365fb89f99ad6185e462ecb33ea Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Fri, 6 Sep 2019 21:21:26 +0200 Subject: [PATCH] etnaviv: store updated usage in pipe_transfer object Store the changed usage in the newly created transfer object. Signed-off-by: Christian Gmeiner Reviewed-by: Lucas Stach --- src/gallium/drivers/etnaviv/etnaviv_transfer.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_transfer.c b/src/gallium/drivers/etnaviv/etnaviv_transfer.c index ade4e877bf1..62b876f2d99 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_transfer.c +++ b/src/gallium/drivers/etnaviv/etnaviv_transfer.c @@ -199,14 +199,6 @@ etna_transfer_map(struct pipe_context *pctx, struct pipe_resource *prsc, /* slab_alloc() doesn't zero */ memset(trans, 0, sizeof(*trans)); - ptrans = &trans->base; - pipe_resource_reference(&ptrans->resource, prsc); - ptrans->level = level; - ptrans->usage = usage; - ptrans->box = *box; - - assert(level <= prsc->last_level); - /* Upgrade DISCARD_RANGE to WHOLE_RESOURCE if the whole resource is * being mapped. If we add buffer reallocation to avoid CPU/GPU sync this * check needs to be extended to coherent mappings and shared resources. @@ -221,6 +213,14 @@ etna_transfer_map(struct pipe_context *pctx, struct pipe_resource *prsc, usage |= PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE; } + ptrans = &trans->base; + pipe_resource_reference(&ptrans->resource, prsc); + ptrans->level = level; + ptrans->usage = usage; + ptrans->box = *box; + + assert(level <= prsc->last_level); + if (rsc->texture && !etna_resource_newer(rsc, etna_resource(rsc->texture))) { /* We have a texture resource which is the same age or newer than the * render resource. Use the texture resource, which avoids bouncing -- 2.30.2