freedreno/batch: always update last_fence
authorRob Clark <robdclark@chromium.org>
Sun, 28 Jul 2019 17:04:25 +0000 (10:04 -0700)
committerRob Clark <robdclark@chromium.org>
Fri, 2 Aug 2019 17:24:14 +0000 (10:24 -0700)
Not all flush paths come thru fd_context_flush(), so we should also set
last_fence in the batch flush path.  This avoids some no-op flushes just
to get a fence.  For example when pctx->flush_resource() triggers a
flush.

We should probably keep the last_fence update in fd_context_flush() as
well to handle deferred flush case.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/gallium/drivers/freedreno/freedreno_batch.c

index 35a88df..6bab243 100644 (file)
@@ -325,6 +325,8 @@ batch_flush(struct fd_batch *batch)
 
        batch->flushed = true;
 
+       fd_fence_ref(&batch->ctx->last_fence, batch->fence);
+
        if (batch->ctx->screen->reorder) {
                struct fd_batch *tmp = NULL;
                fd_batch_reference(&tmp, batch);