diff options
author | José Fonseca <jfonseca@vmware.com> | 2009-09-07 14:27:06 +0100 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2009-09-07 15:02:07 +0100 |
commit | fa0f4b35be17f68667edd6a2757b89086a11a833 (patch) | |
tree | 027e7608fc79baa80f3fded15e68119c539e8e04 /src/gallium/drivers/llvmpipe/lp_bld_arit.c | |
parent | 4da20234f3ea9b1606522fd0a9f4ef5c4b903906 (diff) |
llvmpipe: Utility functions for linear and bilinear interpolation.
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_bld_arit.c')
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_bld_arit.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_bld_arit.c b/src/gallium/drivers/llvmpipe/lp_bld_arit.c index eb9e579bdd..a1d8a89774 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_arit.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_arit.c @@ -502,6 +502,31 @@ lp_build_div(struct lp_build_context *bld, } +LLVMValueRef +lp_build_lerp(struct lp_build_context *bld, + LLVMValueRef x, + LLVMValueRef v0, + LLVMValueRef v1) +{ + return lp_build_add(bld, v0, lp_build_mul(bld, x, lp_build_sub(bld, v1, v0))); +} + + +LLVMValueRef +lp_build_lerp_2d(struct lp_build_context *bld, + LLVMValueRef x, + LLVMValueRef y, + LLVMValueRef v00, + LLVMValueRef v01, + LLVMValueRef v10, + LLVMValueRef v11) +{ + LLVMValueRef v0 = lp_build_lerp(bld, x, v00, v01); + LLVMValueRef v1 = lp_build_lerp(bld, x, v10, v11); + return lp_build_lerp(bld, y, v0, v1); +} + + /** * Generate min(a, b) * Do checks for special cases. |