[Mesa-dev] [PATCH 2/8] radeonsi: move dumping the last IB into its own function

Marek Olšák maraeo at gmail.com
Sun Sep 27 15:53:28 PDT 2015


From: Marek Olšák <marek.olsak at amd.com>

---
 src/gallium/drivers/radeonsi/si_debug.c | 52 ++++++++++++++++++---------------
 1 file changed, 29 insertions(+), 23 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_debug.c b/src/gallium/drivers/radeonsi/si_debug.c
index d3fd201..308f181 100644
--- a/src/gallium/drivers/radeonsi/si_debug.c
+++ b/src/gallium/drivers/radeonsi/si_debug.c
@@ -392,6 +392,34 @@ static void si_dump_debug_registers(struct si_context *sctx, FILE *f)
 	fprintf(f, "\n");
 }
 
+static void si_dump_last_ib(struct si_context *sctx, FILE *f)
+{
+	int last_trace_id = -1;
+
+	if (!sctx->last_ib)
+		return;
+
+	if (sctx->last_trace_buf) {
+		/* We are expecting that the ddebug pipe has already
+		 * waited for the context, so this buffer should be idle.
+		 * If the GPU is hung, there is no point in waiting for it.
+		 */
+		uint32_t *map =
+				sctx->b.ws->buffer_map(sctx->last_trace_buf->cs_buf,
+						       NULL,
+						       PIPE_TRANSFER_UNSYNCHRONIZED |
+						       PIPE_TRANSFER_READ);
+		if (map)
+			last_trace_id = *map;
+	}
+
+	si_parse_ib(f, sctx->last_ib, sctx->last_ib_dw_size,
+		    last_trace_id);
+	free(sctx->last_ib); /* dump only once */
+	sctx->last_ib = NULL;
+	r600_resource_reference(&sctx->last_trace_buf, NULL);
+}
+
 static void si_dump_debug_state(struct pipe_context *ctx, FILE *f,
 				unsigned flags)
 {
@@ -406,29 +434,7 @@ static void si_dump_debug_state(struct pipe_context *ctx, FILE *f,
 	si_dump_shader(sctx->gs_shader, "Geometry", f);
 	si_dump_shader(sctx->ps_shader, "Fragment", f);
 
-	if (sctx->last_ib) {
-		int last_trace_id = -1;
-
-		if (sctx->last_trace_buf) {
-			/* We are expecting that the ddebug pipe has already
-			 * waited for the context, so this buffer should be idle.
-			 * If the GPU is hung, there is no point in waiting for it.
-			 */
-			uint32_t *map =
-				sctx->b.ws->buffer_map(sctx->last_trace_buf->cs_buf,
-						       NULL,
-						       PIPE_TRANSFER_UNSYNCHRONIZED |
-						       PIPE_TRANSFER_READ);
-			if (map)
-				last_trace_id = *map;
-		}
-
-		si_parse_ib(f, sctx->last_ib, sctx->last_ib_dw_size,
-			    last_trace_id);
-		free(sctx->last_ib); /* dump only once */
-		sctx->last_ib = NULL;
-		r600_resource_reference(&sctx->last_trace_buf, NULL);
-	}
+	si_dump_last_ib(sctx, f);
 
 	fprintf(f, "Done.\n");
 }
-- 
2.1.4



More information about the mesa-dev mailing list