Mesa (master): r600g: use last_gfx_fence like radeonsi

Marek Olšák mareko at kemper.freedesktop.org
Wed Aug 3 15:49:38 UTC 2016


Module: Mesa
Branch: master
Commit: 435d9595d38981187a2eaa025fc437cfc1295107
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=435d9595d38981187a2eaa025fc437cfc1295107

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Fri Jul 15 01:06:58 2016 +0200

r600g: use last_gfx_fence like radeonsi

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/gallium/drivers/r600/r600_hw_context.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c
index ea6902f..2ddea13 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -252,9 +252,16 @@ void r600_context_gfx_flush(void *context, unsigned flags,
 {
 	struct r600_context *ctx = context;
 	struct radeon_winsys_cs *cs = ctx->b.gfx.cs;
-
-	if (!radeon_emitted(cs, ctx->b.initial_gfx_cs_size) && !fence)
+	struct radeon_winsys *ws = ctx->b.ws;
+
+	if (!radeon_emitted(cs, ctx->b.initial_gfx_cs_size) &&
+	    (!fence || ctx->b.last_gfx_fence)) {
+		if (fence)
+			ws->fence_reference(fence, ctx->b.last_gfx_fence);
+		if (!(flags & RADEON_FLUSH_ASYNC))
+			ws->cs_sync_flush(cs);
 		return;
+	}
 
 	r600_preflush_suspend_features(&ctx->b);
 
@@ -275,7 +282,9 @@ void r600_context_gfx_flush(void *context, unsigned flags,
 	}
 
 	/* Flush the CS. */
-	ctx->b.ws->cs_flush(cs, flags, fence);
+	ws->cs_flush(cs, flags, &ctx->b.last_gfx_fence);
+	if (fence)
+		ws->fence_reference(fence, ctx->b.last_gfx_fence);
 
 	r600_begin_new_cs(ctx);
 }




More information about the mesa-commit mailing list