gallivm: add support for texel offsets for ordinary texturing.
authorRoland Scheidegger <sroland@vmware.com>
Fri, 1 Mar 2013 01:25:13 +0000 (02:25 +0100)
committerRoland Scheidegger <sroland@vmware.com>
Sat, 2 Mar 2013 01:54:30 +0000 (02:54 +0100)
commitb3b3b389fa7756869e7a8bc2755bce081c94945f
tree127e2e87e309c97dd503c55d2c94bf818cf55ec1
parenta99eb5c83fd64d64fee2b6d7f2bb3fea3264ce47
gallivm: add support for texel offsets for ordinary texturing.

This was previously only handled for texelFetch (much easier).
Depending on the wrap mode this works slightly differently (for somewhat
efficient implementation), hence have to do that separately in all roughly
137 places - it is easy if we use fixed point coords for wrapping, however
some wrapping modes are near impossible with fixed point (the repeat stuff)
hence we have to normalize the offsets if we can't do the wrapping in
unnormalized space (which is a division which is slow but should still be
much better than the alternative, which would be integer modulo for wrapping
which is just unusable). This should still give accurate results in all
cases that really matter, though it might be not quite conformant behavior
for some apis (but we have much worse problems there anyway even without
using offsets).
(Untested, no piglit test.)

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c
src/gallium/auxiliary/gallivm/lp_bld_sample_aos.h
src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c