summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
diff options
context:
space:
mode:
authorNeil Roberts <neil@linux.intel.com>2015-05-29 13:41:48 +0100
committerNeil Roberts <neil@linux.intel.com>2015-05-31 00:48:57 +0100
commit7f62fdae1629d75dd581d1c57b28c2f099c5ef6b (patch)
treec547e249f73b072dad99e0cdb686d450db58d6ed /src/mesa/drivers/dri/i965/brw_fs_generator.cpp
parent6c846dc57b1d6f3e015a604dba1976f96c4be9e9 (diff)
downloadexternal_mesa3d-7f62fdae1629d75dd581d1c57b28c2f099c5ef6b.zip
external_mesa3d-7f62fdae1629d75dd581d1c57b28c2f099c5ef6b.tar.gz
external_mesa3d-7f62fdae1629d75dd581d1c57b28c2f099c5ef6b.tar.bz2
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@gmail.com> Reviewed-by: Chris Forbes <chrisf@ijw.co.nz> Acked-by: Ben Widawsky <ben@bwidawsk.net>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_fs_generator.cpp')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_generator.cpp3
1 files changed, 2 insertions, 1 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);