<p dir="ltr">Reviewed-by Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>></p>
<p dir="ltr">The rest of the patches look just as good to me now as when I wrote them, but you can't very well call that a review. :-p</p>
<div class="gmail_quote">On Apr 23, 2016 4:39 PM, "Kenneth Graunke" <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Calling textureOffset() with an offset of <0, 0, 0> is equivalent to<br>
calliing texture().  We don't actually need to set up an offset,<br>
which causes a message header to be created.<br>
<br>
A fairly common pattern is to sample at a point with a bunch of<br>
offsets, and average them.  It's natural to write all the lookups<br>
as textureOffset, but use <0, 0> for the center sample.<br>
<br>
shader-db results on Skylake:<br>
<br>
total instructions in shared programs: 9092095 -> 9092087 (-0.00%)<br>
instructions in affected programs: 2826 -> 2818 (-0.28%)<br>
helped: 12<br>
HURT: 2<br>
<br>
total cycles in shared programs: 70870166 -> 70870144 (-0.00%)<br>
cycles in affected programs: 15924 -> 15902 (-0.14%)<br>
helped: 2<br>
HURT: 0<br>
<br>
This also helps prevent code quality regressions in a future patch.<br>
<br>
Signed-off-by: Kenneth Graunke <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>><br>
---<br>
 src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 4 +++-<br>
 1 file changed, 3 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp<br>
index 7ef3062..725f5da 100644<br>
--- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp<br>
+++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp<br>
@@ -3132,7 +3132,9 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr)<br>
          nir_const_value *const_offset =<br>
             nir_src_as_const_value(instr->src[i].src);<br>
          if (const_offset) {<br>
-            tex_offset = brw_imm_ud(brw_texture_offset(const_offset->i32, 3));<br>
+            unsigned header_bits = brw_texture_offset(const_offset->i32, 3);<br>
+            if (header_bits != 0)<br>
+               tex_offset = brw_imm_ud(header_bits);<br>
          } else {<br>
             tex_offset = retype(src, BRW_REGISTER_TYPE_D);<br>
          }<br>
--<br>
2.8.0<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>