i965: Don't force a header for texture offsets of 0.
authorKenneth Graunke <kenneth@whitecape.org>
Sat, 23 Apr 2016 22:50:39 +0000 (15:50 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 27 Apr 2016 02:55:04 +0000 (19:55 -0700)
commit0bd956b34b376bdc1eaf91a2a8463d13dd59e641
treeb740b8f714dcdb9b335b6250a0a0fbeb8c3e9344
parentfb5d38e21982e9eb3195c61d020c9772b73bdbcf
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>
src/mesa/drivers/dri/i965/brw_fs_nir.cpp