From 6192e9b377c6fa4f36da42af6c06ca32b10e7e62 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 19 Mar 2013 16:28:54 -0700 Subject: [PATCH] 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 --- src/mesa/drivers/dri/i965/brw_vec4.cpp | 3 --- src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 12 +++++++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index a40a0b47570..9308ed61041 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -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 diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp index d3ca06fefc2..3229d820826 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp @@ -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; -- 2.30.2