Mesa (master): i965/vs: Include URB payload setup in shader_time.
Eric Anholt
anholt at kemper.freedesktop.org
Thu Mar 28 18:52:52 UTC 2013
Module: Mesa
Branch: master
Commit: 6192e9b377c6fa4f36da42af6c06ca32b10e7e62
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6192e9b377c6fa4f36da42af6c06ca32b10e7e62
Author: Eric Anholt <eric at anholt.net>
Date: Tue Mar 19 16:28:54 2013 -0700
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 at whitecape.org>
---
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 a40a0b4..9308ed6 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 d3ca06f..3229d82 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;
More information about the mesa-commit
mailing list