r600: Add number of ALU groups to statistics
authorGert Wollny <gert.wollny@collabora.com>
Wed, 18 May 2022 20:41:54 +0000 (22:41 +0200)
committerMarge Bot <emma+marge@anholt.net>
Thu, 7 Jul 2022 20:11:01 +0000 (20:11 +0000)
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@collabora.com>
Reviewed-by: Filip Gawin <filip@gawin.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17076>

src/gallium/drivers/r600/r600_asm.c
src/gallium/drivers/r600/r600_asm.h
src/gallium/drivers/r600/r600_shader.c

index 00fc1e5..0d7e5df 100644 (file)
@@ -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;
                                }
                        }
index f7a24ed..3072e64 100644 (file)
@@ -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;
index ce1aac3..487a4b7 100644 (file)
@@ -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);