From 19b26cb0a2c7a8fa2f462fa16a1b55a68d85604b Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 22 Apr 2010 14:35:54 -0600 Subject: [PATCH] gallivm: remove Z/stencil special case code in lp_build_sample_offset() Fixes progs/tests/zreaddraw.c and progs/demos/shadowtex.c --- src/gallium/auxiliary/gallivm/lp_bld_sample.c | 54 ++++----------------------- 1 file changed, 8 insertions(+), 46 deletions(-) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index eb75b9b..e1b029a 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -181,54 +181,16 @@ lp_build_sample_offset(struct lp_build_context *bld, LLVMValueRef offset; x_stride = lp_build_const_vec(bld->type, format_desc->block.bits/8); + offset = lp_build_mul(bld, x, x_stride); - if(format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS) { - LLVMValueRef x_lo, x_hi; - LLVMValueRef y_lo, y_hi; - LLVMValueRef x_stride_lo, x_stride_hi; - LLVMValueRef y_stride_lo, y_stride_hi; - LLVMValueRef x_offset_lo, x_offset_hi; - LLVMValueRef y_offset_lo, y_offset_hi; - LLVMValueRef offset_lo, offset_hi; - - /* XXX 1D & 3D addressing not done yet */ - assert(!z); - assert(!z_stride); - - x_lo = LLVMBuildAnd(bld->builder, x, bld->one, ""); - y_lo = LLVMBuildAnd(bld->builder, y, bld->one, ""); - - x_hi = LLVMBuildLShr(bld->builder, x, bld->one, ""); - y_hi = LLVMBuildLShr(bld->builder, y, bld->one, ""); - - x_stride_lo = x_stride; - y_stride_lo = lp_build_const_vec(bld->type, 2*format_desc->block.bits/8); - - x_stride_hi = lp_build_const_vec(bld->type, 4*format_desc->block.bits/8); - y_stride_hi = LLVMBuildShl(bld->builder, y_stride, bld->one, ""); - - x_offset_lo = lp_build_mul(bld, x_lo, x_stride_lo); - y_offset_lo = lp_build_mul(bld, y_lo, y_stride_lo); - offset_lo = lp_build_add(bld, x_offset_lo, y_offset_lo); - - x_offset_hi = lp_build_mul(bld, x_hi, x_stride_hi); - y_offset_hi = lp_build_mul(bld, y_hi, y_stride_hi); - offset_hi = lp_build_add(bld, x_offset_hi, y_offset_hi); - - offset = lp_build_add(bld, offset_hi, offset_lo); + if (y && y_stride) { + LLVMValueRef y_offset = lp_build_mul(bld, y, y_stride); + offset = lp_build_add(bld, offset, y_offset); } - else { - offset = lp_build_mul(bld, x, x_stride); - - if (y && y_stride) { - LLVMValueRef y_offset = lp_build_mul(bld, y, y_stride); - offset = lp_build_add(bld, offset, y_offset); - } - - if (z && z_stride) { - LLVMValueRef z_offset = lp_build_mul(bld, z, z_stride); - offset = lp_build_add(bld, offset, z_offset); - } + + if (z && z_stride) { + LLVMValueRef z_offset = lp_build_mul(bld, z, z_stride); + offset = lp_build_add(bld, offset, z_offset); } return offset; -- 2.7.4