diff --git a/src/gallium/drivers/etnaviv/etnaviv_context.c b/src/gallium/drivers/etnaviv/etnaviv_context.c index 5f455c4412a..5652107f4dc 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_context.c +++ b/src/gallium/drivers/etnaviv/etnaviv_context.c @@ -460,6 +460,10 @@ etna_flush(struct pipe_context *pctx, struct pipe_fence_handle **fence, _mesa_set_remove_key(rsc->pending_ctx, ctx); + /* if resource has no pending ctx's reset its status */ + if (_mesa_set_next_entry(rsc->pending_ctx, NULL) == NULL) + rsc->status &= ~ETNA_PENDING_READ; + pipe_resource_reference(&referenced, NULL); } _mesa_set_clear(ctx->used_resources_read, NULL); @@ -470,6 +474,10 @@ etna_flush(struct pipe_context *pctx, struct pipe_fence_handle **fence, _mesa_set_remove_key(rsc->pending_ctx, ctx); + /* if resource has no pending ctx's reset its status */ + if (_mesa_set_next_entry(rsc->pending_ctx, NULL) == NULL) + rsc->status &= ~ETNA_PENDING_WRITE; + pipe_resource_reference(&referenced, NULL); } _mesa_set_clear(ctx->used_resources_write, NULL);