diff options
author | Roland Scheidegger <sroland@vmware.com> | 2012-11-27 03:26:49 +0100 |
---|---|---|
committer | Roland Scheidegger <sroland@vmware.com> | 2012-11-27 03:26:49 +0100 |
commit | 0b6554ba6f2aa8a771852566340c24205e406d02 (patch) | |
tree | 4860b057589b29b85a70fb8666537dfa51f10afa /src/gallium/auxiliary/draw/draw_llvm_sample.c | |
parent | 93c689a2dfa29cf3a4647432f0690bf76514b5bd (diff) | |
download | external_mesa3d-0b6554ba6f2aa8a771852566340c24205e406d02.zip external_mesa3d-0b6554ba6f2aa8a771852566340c24205e406d02.tar.gz external_mesa3d-0b6554ba6f2aa8a771852566340c24205e406d02.tar.bz2 |
gallivm,llvmpipe: handle TXF (texelFetch) instruction, including offsets
This also adds some code to handle per-quad lods for more than 4-wide fetches,
because otherwise I'd have to integrate the texelFetch function into
the splitting stuff... (but it is not used yet outside texelFetch).
passes piglit fs-texelFetch-2D, fails fs-texelFetchOffset-2D due to I believe
a test error (results are undefined for out-of-bounds fetches, we return
whatever is at offset 0, whereas the test expects [0,0,0,1]).
Texel offsets are only handled by texelFetch for now, though the interface
can handle it for everything.
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_llvm_sample.c')
-rw-r--r-- | src/gallium/auxiliary/draw/draw_llvm_sample.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/draw/draw_llvm_sample.c b/src/gallium/auxiliary/draw/draw_llvm_sample.c index 0892d16..67d4e93 100644 --- a/src/gallium/auxiliary/draw/draw_llvm_sample.c +++ b/src/gallium/auxiliary/draw/draw_llvm_sample.c @@ -171,9 +171,10 @@ static void draw_llvm_sampler_soa_emit_fetch_texel(const struct lp_build_sampler_soa *base, struct gallivm_state *gallivm, struct lp_type type, + boolean is_fetch, unsigned unit, - unsigned num_coords, const LLVMValueRef *coords, + const LLVMValueRef *offsets, const struct lp_derivatives *derivs, LLVMValueRef lod_bias, /* optional */ LLVMValueRef explicit_lod, /* optional */ @@ -187,8 +188,10 @@ draw_llvm_sampler_soa_emit_fetch_texel(const struct lp_build_sampler_soa *base, &sampler->dynamic_state.static_state[unit], &sampler->dynamic_state.base, type, + is_fetch, unit, - num_coords, coords, + coords, + offsets, derivs, lod_bias, explicit_lod, texel); @@ -213,7 +216,7 @@ draw_llvm_sampler_soa_emit_size_query(const struct lp_build_sampler_soa *base, lp_build_size_query_soa(gallivm, &sampler->dynamic_state.static_state[unit], &sampler->dynamic_state.base, - type, + type, unit, explicit_lod, sizes_out); |