tgsi: add texel offsets and derivatives to sampler interface
authorRoland Scheidegger <sroland@vmware.com>
Fri, 1 Mar 2013 22:27:41 +0000 (23:27 +0100)
committerRoland Scheidegger <sroland@vmware.com>
Sat, 2 Mar 2013 01:54:31 +0000 (02:54 +0100)
commit6ace2e41da7dded630d932d03bacb7e14a93d47a
treeadeff2f7bd1eb1968bf3e57bb3fe0a09f1bdb0f1
parentc7c7186045ec617c53f7899280cbe12e59503e4d
tgsi: add texel offsets and derivatives to sampler interface

Something I never got around to implement, but this is the tgsi execution
side for implementing texel offsets (for ordinary texturing) and explicit
derivatives for sampling (though I guess the ordering of the components
for the derivs parameters is debatable).
There is certainly a runtime cost associated with this.
Unless there are different interfaces used depending on the "complexity"
of the texture instructions, this is impossible to avoid.
Offsets are always active (I think checking if they are active or not is
probably not worth it since it should mostly be an add), whereas the
sampler_control is extended for explicit derivatives.
For now softpipe (the only user of this) just drops all those new values
on the floor (which is the part I never implemented...).

Additionally this also fixes (discovered by accident) inconsistent
projective divide for the comparison coord - the code did do the
projection for shadow2d targets, but not shadow1d ones. This also
drops checking for projection modifier on array targets, since they
aren't possible in any extension I know of (hence we don't actually
know if the array layer should also be divided or not).

Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/auxiliary/tgsi/tgsi_exec.c
src/gallium/auxiliary/tgsi/tgsi_exec.h
src/gallium/drivers/softpipe/sp_tex_sample.c