i965/fs: Refactor handling of constant tg4 offsets
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 29 Nov 2016 02:13:02 +0000 (18:13 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 29 Nov 2016 15:44:01 +0000 (07:44 -0800)
commitfaf20df143a63e58aa729446f21c38ae39a438f2
treee110100e593499830d36f4e84d9151056f0fff68
parent05533ce418851b12fd0a1e940a633f9280203aab
i965/fs: Refactor handling of constant tg4 offsets

Previously, we had an OFFSET_VALUE source for logical texture instructions
that was intended to mean exactly what it says, "offset".  In reality, we
only fully used it for tg4 offsets.  We used offset_value.file == IMM to
mean, "you have a constant offset, go look in instr->offset" and didn't
actually use the contents of the register at all in that case except for
in nir_emit_texture where we used it as a temporary before we copy it into
instr->offset.

This commit renames OFFSET_VALUE to TG4_OFFSET and restricts its usage to
indirect tg4 offsets only.  The nir_emit_texture code is refactored so that
we explicitly build a header_bits value which is placed in instr->offset
and the constant offset values (both for tg4 and regular texture
operations) are used to construct header_bits and don't go through the
offset source at all.  Finally, we stop passing offset_value in to
lower_sampler_logical_send_gen5 because we can't do indirect offsets until
gen7 anyway.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_defines.h
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs_nir.cpp