mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 20:00:11 +01:00
i965: Don't force a header for texture offsets of 0.
Calling textureOffset() with an offset of <0, 0, 0> is equivalent to calliing texture(). We don't actually need to set up an offset, which causes a message header to be created. A fairly common pattern is to sample at a point with a bunch of offsets, and average them. It's natural to write all the lookups as textureOffset, but use <0, 0> for the center sample. shader-db results on Skylake: total instructions in shared programs: 9092095 -> 9092087 (-0.00%) instructions in affected programs: 2826 -> 2818 (-0.28%) helped: 12 HURT: 2 total cycles in shared programs: 70870166 -> 70870144 (-0.00%) cycles in affected programs: 15924 -> 15902 (-0.14%) helped: 2 HURT: 0 This also helps prevent code quality regressions in a future patch. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
fb5d38e219
commit
0bd956b34b
1 changed files with 3 additions and 1 deletions
|
|
@ -3132,7 +3132,9 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr)
|
|||
nir_const_value *const_offset =
|
||||
nir_src_as_const_value(instr->src[i].src);
|
||||
if (const_offset) {
|
||||
tex_offset = brw_imm_ud(brw_texture_offset(const_offset->i32, 3));
|
||||
unsigned header_bits = brw_texture_offset(const_offset->i32, 3);
|
||||
if (header_bits != 0)
|
||||
tex_offset = brw_imm_ud(header_bits);
|
||||
} else {
|
||||
tex_offset = retype(src, BRW_REGISTER_TYPE_D);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue