diff options
author | Rob Clark <[email protected]> | 2016-08-15 13:41:04 -0400 |
---|---|---|
committer | Rob Clark <[email protected]> | 2016-12-01 20:16:31 -0500 |
commit | 16f6ceaca9e25f86bcdc509fc0abb48e2d51c3fa (patch) | |
tree | fc9bd0f2e41d5094abe0d994c8daf2f3805d568c /src/gallium/drivers/freedreno/freedreno_context.c | |
parent | 026a7223a6c9dcd7c59b95dbaf5e64b7258f8700 (diff) |
freedreno: some fence cleanup
Prep-work for next patch, mostly move to tracking last_fence as a
pipe_fence_handle (created now only in fd_gmem_render_tiles()), and a
bit of superficial renaming.
Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno/freedreno_context.c')
-rw-r--r-- | src/gallium/drivers/freedreno/freedreno_context.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/gallium/drivers/freedreno/freedreno_context.c b/src/gallium/drivers/freedreno/freedreno_context.c index 0b12409bac4..70220f88dee 100644 --- a/src/gallium/drivers/freedreno/freedreno_context.c +++ b/src/gallium/drivers/freedreno/freedreno_context.c @@ -43,22 +43,15 @@ fd_context_flush(struct pipe_context *pctx, struct pipe_fence_handle **fence, unsigned flags) { struct fd_context *ctx = fd_context(pctx); - uint32_t timestamp; if (!ctx->screen->reorder) { - struct fd_batch *batch = NULL; - fd_batch_reference(&batch, ctx->batch); - fd_batch_flush(batch, true); - timestamp = fd_ringbuffer_timestamp(batch->gmem); - fd_batch_reference(&batch, NULL); + fd_batch_flush(ctx->batch, true); } else { - timestamp = fd_bc_flush(&ctx->screen->batch_cache, ctx); + fd_bc_flush(&ctx->screen->batch_cache, ctx); } - if (fence) { - fd_screen_fence_ref(pctx->screen, fence, NULL); - *fence = fd_fence_create(pctx, timestamp); - } + if (fence) + fd_fence_ref(pctx->screen, fence, ctx->last_fence); } /** @@ -109,6 +102,8 @@ fd_context_destroy(struct pipe_context *pctx) fd_batch_reference(&ctx->batch, NULL); /* unref current batch */ fd_bc_invalidate_context(ctx); + fd_fence_ref(pctx->screen, &ctx->last_fence, NULL); + fd_prog_fini(pctx); fd_hw_query_fini(pctx); |