Mesa (main): r600: Add number of ALU groups to statistics

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 7 20:18:52 UTC 2022


Module: Mesa
Branch: main
Commit: 105b03a5ed0e280c543fcc3c23795f0b301904b6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=105b03a5ed0e280c543fcc3c23795f0b301904b6

Author: Gert Wollny <gert.wollny at collabora.com>
Date:   Wed May 18 22:41:54 2022 +0200

r600: Add number of ALU groups to statistics

The number of ALU groups is important for good sccheduling, so
let's add it to the stats.

Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
Reviewed-by: Filip Gawin <filip at gawin.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17076>

---

 src/gallium/drivers/r600/r600_asm.c    | 8 +++++++-
 src/gallium/drivers/r600/r600_asm.h    | 1 +
 src/gallium/drivers/r600/r600_shader.c | 3 ++-
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c
index 00fc1e5dea0..0d7e5dff027 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -1347,9 +1347,12 @@ int r600_bytecode_add_alu_type(struct r600_bytecode *bc,
 			return r;
 
 		if (bc->cf_last->prev_bs_head) {
-			r = merge_inst_groups(bc, slots, bc->cf_last->prev_bs_head);
+         struct r600_bytecode_alu *cur_prev_head = bc->cf_last->prev_bs_head;
+			r = merge_inst_groups(bc, slots, cur_prev_head);
 			if (r)
 				return r;
+         if (cur_prev_head != bc->cf_last->prev_bs_head)
+            bc->nalu_groups--;
 		}
 
 		if (bc->cf_last->prev_bs_head) {
@@ -1381,10 +1384,13 @@ int r600_bytecode_add_alu_type(struct r600_bytecode *bc,
 		bc->cf_last->prev_bs_head = bc->cf_last->curr_bs_head;
 		bc->cf_last->curr_bs_head = NULL;
 
+		bc->nalu_groups++;
+
 		if (bc->r6xx_nop_after_rel_dst) {
 			for (int i = 0; i < max_slots; ++i) {
 				if (slots[i] && slots[i]->dst.rel) {
 					insert_nop_r6xx(bc, max_slots);
+					bc->nalu_groups++;
 					break;
 				}
 			}
diff --git a/src/gallium/drivers/r600/r600_asm.h b/src/gallium/drivers/r600/r600_asm.h
index f7a24edbabc..3072e64e4fd 100644
--- a/src/gallium/drivers/r600/r600_asm.h
+++ b/src/gallium/drivers/r600/r600_asm.h
@@ -262,6 +262,7 @@ struct r600_bytecode {
 	struct r600_bytecode_cf		*cf_last;
 	unsigned			ndw;
 	unsigned			ncf;
+	unsigned			nalu_groups;
 	unsigned			ngpr;
 	unsigned			nstack;
 	unsigned			nlds_dw;
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index ce1aac32a0b..487a4b79342 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -382,10 +382,11 @@ int r600_pipe_shader_create(struct pipe_context *ctx,
 		goto error;
 	}
 
-	util_debug_message(&rctx->b.debug, SHADER_INFO, "%s shader: %d dw, %d gprs, %d loops, %d cf, %d stack",
+	util_debug_message(&rctx->b.debug, SHADER_INFO, "%s shader: %d dw, %d gprs, %d alu_groups, %d loops, %d cf, %d stack",
 		           _mesa_shader_stage_to_abbrev(tgsi_processor_to_shader_stage(processor)),
 	                   shader->shader.bc.ndw,
 	                   shader->shader.bc.ngpr,
+			   shader->shader.bc.nalu_groups,
 			   shader->shader.num_loops,
 			   shader->shader.bc.ncf,
 			   shader->shader.bc.nstack);



More information about the mesa-commit mailing list