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)
|
if (c->key.userclip_active && !c->key.uses_clip_distance)
|
||||||
setup_uniform_clipplane_values();
|
setup_uniform_clipplane_values();
|
||||||
|
|
||||||
if (INTEL_DEBUG & DEBUG_SHADER_TIME)
|
|
||||||
emit_shader_time_end();
|
|
||||||
|
|
||||||
emit_urb_writes();
|
emit_urb_writes();
|
||||||
|
|
||||||
/* Before any optimization, push array accesses out to scratch
|
/* 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";
|
current_annotation = "URB write";
|
||||||
vec4_instruction *inst = emit(VS_OPCODE_URB_WRITE);
|
vec4_instruction *inst = emit(VS_OPCODE_URB_WRITE);
|
||||||
inst->base_mrf = base_mrf;
|
inst->base_mrf = base_mrf;
|
||||||
inst->mlen = align_interleaved_urb_mlen(brw, 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 */
|
/* Optional second URB write */
|
||||||
if (!inst->eot) {
|
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]);
|
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";
|
current_annotation = "URB write";
|
||||||
inst = emit(VS_OPCODE_URB_WRITE);
|
inst = emit(VS_OPCODE_URB_WRITE);
|
||||||
inst->base_mrf = base_mrf;
|
inst->base_mrf = base_mrf;
|
||||||
|
Reference in New Issue
Block a user