Mesa (master): i965: Don't add base_binding_table_index if it's zero

Neil Roberts nroberts at kemper.freedesktop.org
Sat May 30 23:53:15 UTC 2015


Module: Mesa
Branch: master
Commit: 7f62fdae1629d75dd581d1c57b28c2f099c5ef6b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7f62fdae1629d75dd581d1c57b28c2f099c5ef6b

Author: Neil Roberts <neil at linux.intel.com>
Date:   Fri May 29 13:41:48 2015 +0100

i965: Don't add base_binding_table_index if it's zero

When calculating the binding table index for non-constant sampler
array indexing it needs to add the base binding table index which is a
constant within the generated code. Often this base is zero so we can
avoid a redundant instruction in that case.

It looks like nothing in shader-db is doing non-constant sampler array
indexing so this patch doesn't make any difference but it might be
worth having anyway.

Reviewed-by: Matt Turner <mattst88 at gmail.com>
Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>
Acked-by: Ben Widawsky <ben at bwidawsk.net>

---

 src/mesa/drivers/dri/i965/brw_fs_generator.cpp   |    3 ++-
 src/mesa/drivers/dri/i965/brw_vec4_generator.cpp |    3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
index ea46b1a..40a3db3 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
@@ -789,7 +789,8 @@ fs_generator::generate_tex(fs_inst *inst, struct brw_reg dst, struct brw_reg src
 
       /* addr = ((sampler * 0x101) + base_binding_table_index) & 0xfff */
       brw_MUL(p, addr, sampler_reg, brw_imm_ud(0x101));
-      brw_ADD(p, addr, addr, brw_imm_ud(base_binding_table_index));
+      if (base_binding_table_index)
+         brw_ADD(p, addr, addr, brw_imm_ud(base_binding_table_index));
       brw_AND(p, addr, addr, brw_imm_ud(0xfff));
 
       brw_pop_insn_state(p);
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
index 9699607..ead620b 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
@@ -408,7 +408,8 @@ vec4_generator::generate_tex(vec4_instruction *inst,
 
       /* addr = ((sampler * 0x101) + base_binding_table_index) & 0xfff */
       brw_MUL(p, addr, sampler_reg, brw_imm_ud(0x101));
-      brw_ADD(p, addr, addr, brw_imm_ud(base_binding_table_index));
+      if (base_binding_table_index)
+         brw_ADD(p, addr, addr, brw_imm_ud(base_binding_table_index));
       brw_AND(p, addr, addr, brw_imm_ud(0xfff));
 
       brw_pop_insn_state(p);




More information about the mesa-commit mailing list