diff options
author | Neil Roberts <[email protected]> | 2015-05-29 13:41:48 +0100 |
---|---|---|
committer | Neil Roberts <[email protected]> | 2015-05-31 00:48:57 +0100 |
commit | 7f62fdae1629d75dd581d1c57b28c2f099c5ef6b (patch) | |
tree | c547e249f73b072dad99e0cdb686d450db58d6ed | |
parent | 6c846dc57b1d6f3e015a604dba1976f96c4be9e9 (diff) |
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 <[email protected]>
Reviewed-by: Chris Forbes <[email protected]>
Acked-by: Ben Widawsky <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_generator.cpp | 3 | ||||
-rw-r--r-- | 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 ea46b1a1917..40a3db3040e 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 9699607ed28..ead620b3c00 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); |