i965/vs: Include URB payload setup in shader_time.

This much more accurately reflects the cost of the vertex shader, since
the payload setup is often a significant fraction of the instructions in
the VS.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Eric Anholt
2013-03-19 16:28:54 -07:00
parent 55feb19704
commit 6192e9b377
2 changed files with 11 additions and 4 deletions

View File

@@ -1303,9 +1303,6 @@ vec4_visitor::run()
if (c->key.userclip_active && !c->key.uses_clip_distance)
setup_uniform_clipplane_values();
if (INTEL_DEBUG & DEBUG_SHADER_TIME)
emit_shader_time_end();
emit_urb_writes();
/* Before any optimization, push array accesses out to scratch

View File

@@ -2638,11 +2638,16 @@ vec4_visitor::emit_urb_writes()
}
}
bool eot = slot >= c->prog_data.vue_map.num_slots;
if (eot) {
if (INTEL_DEBUG & DEBUG_SHADER_TIME)
emit_shader_time_end();
}
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);
inst->eot = (slot >= c->prog_data.vue_map.num_slots);
inst->eot = eot;
/* Optional second URB write */
if (!inst->eot) {
@@ -2654,6 +2659,11 @@ vec4_visitor::emit_urb_writes()
emit_urb_slot(mrf++, c->prog_data.vue_map.slot_to_varying[slot]);
}
if (eot) {
if (INTEL_DEBUG & DEBUG_SHADER_TIME)
emit_shader_time_end();
}
current_annotation = "URB write";
inst = emit(VS_OPCODE_URB_WRITE);
inst->base_mrf = base_mrf;