gallivm: simplify sampler interface
authorRoland Scheidegger <sroland@vmware.com>
Sat, 28 Mar 2015 19:51:23 +0000 (20:51 +0100)
committerRoland Scheidegger <sroland@vmware.com>
Tue, 31 Mar 2015 15:23:51 +0000 (17:23 +0200)
commit1863ed21ffbb3ab7fd9875dc25e32ececea79d50
treea121276df53929126c0a7065fb068710b87a168d
parent0fc5b80e7abae061dd5b0a17a0e775619a5245be
gallivm: simplify sampler interface

This has got a bit out of control with more and more parameters added.
Worse, whenever something in there changes all callees have to be updated
for that, even though they don't really do much with any parameter in there
except pass it on to the actual sampling function.
Hence simply put almost everything into a struct. Also instead of relying
on some arguments being NULL, be explicit and set this in a key (which is
just reused for function generation for simplicity). (The code still relies
on them being NULL in the end for now.)
Technically there is a minimal functional change here for shadow sampling:
if shadow sampling is done is now determined explicitly by the texture
function (either sample_c or the gl-style tex func inherit this from target)
instead of the static texture state. These two should always match, however.
Otherwise, it should generate all the same code.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/draw/draw_llvm_sample.c
src/gallium/auxiliary/gallivm/lp_bld_sample.h
src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
src/gallium/drivers/llvmpipe/lp_tex_sample.c