i965/vs: Add annotation to more of the URB write.
authorEric Anholt <eric@anholt.net>
Tue, 6 Sep 2011 20:29:21 +0000 (13:29 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 9 Sep 2011 04:34:03 +0000 (21:34 -0700)
While we had nice debug output for most of the instruction stream, it
was terminated by a series of anonymous MOVs and a send.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_vec4.h
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp

index 67b509ac48a3b54f0b1d242867529c13ad9e4933..0bfd88b25d3d454b909b87c37e996e732a3cab17 100644 (file)
@@ -361,6 +361,7 @@ public:
     * for the ir->location's used.
     */
    dst_reg output_reg[BRW_VERT_RESULT_MAX];
+   const char *output_reg_annotation[BRW_VERT_RESULT_MAX];
    int uniform_size[MAX_UNIFORMS];
    int uniform_vector_size[MAX_UNIFORMS];
    int uniforms;
index dac8cf91a63dc7f73b4322b5a3b83d416097f531..afbd8d9eb58ddfcbc52ce9f10467115b4517a340 100644 (file)
@@ -800,6 +800,7 @@ vec4_visitor::visit(ir_variable *ir)
         output_reg[ir->location + i] = *reg;
         output_reg[ir->location + i].reg_offset = i;
         output_reg[ir->location + i].type = BRW_REGISTER_TYPE_F;
+        output_reg_annotation[ir->location + i] = ir->name;
       }
       break;
 
@@ -1856,7 +1857,7 @@ vec4_visitor::emit_urb_slot(int mrf, int vert_result)
       break;
    default: {
       assert (vert_result < VERT_RESULT_MAX);
-      current_annotation = NULL;
+      current_annotation = output_reg_annotation[vert_result];
       /* Copy the register, saturating if necessary */
       vec4_instruction *inst = emit(MOV(reg,
                                         src_reg(output_reg[vert_result])));
@@ -1947,6 +1948,7 @@ vec4_visitor::emit_urb_writes()
       }
    }
 
+   current_annotation = "URB write";
    vec4_instruction *inst = emit(VS_OPCODE_URB_WRITE);
    inst->base_mrf = base_mrf;
    inst->mlen = align_interleaved_urb_mlen(brw, mrf - base_mrf);
@@ -1962,6 +1964,7 @@ vec4_visitor::emit_urb_writes()
          emit_urb_slot(mrf++, c->vue_map.slot_to_vert_result[slot]);
       }
 
+      current_annotation = "URB write";
       inst = emit(VS_OPCODE_URB_WRITE);
       inst->base_mrf = base_mrf;
       inst->mlen = align_interleaved_urb_mlen(brw, mrf - base_mrf);