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:
@@ -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
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user