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);