diff options
author | José Fonseca <jfonseca@vmware.com> | 2010-10-08 19:11:32 +0100 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2010-10-08 19:11:52 +0100 |
commit | 438390418d27838bcfcb5bbb4c486db45dbaa44d (patch) | |
tree | eb3642e3ba83fedaeb358bc647cc95fe491e54c8 /src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | |
parent | f5b5fb32d3a9eb8667f91907bcf065fe8bd4988d (diff) |
llvmpipe: First minify the texture size, then broadcast.
Diffstat (limited to 'src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c')
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 158c6e6a79..b8cf938acf 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -1170,7 +1170,7 @@ lp_build_sample_soa(LLVMBuilderRef builder, bld.int_coord_type = lp_int_type(type); bld.float_size_type = lp_type_float(32); bld.float_size_type.length = dims > 1 ? 4 : 1; - bld.uint_size_type = lp_uint_type(bld.float_size_type); + bld.int_size_type = lp_int_type(bld.float_size_type); bld.texel_type = type; float_vec_type = lp_type_float_vec(32); @@ -1181,7 +1181,7 @@ lp_build_sample_soa(LLVMBuilderRef builder, lp_build_context_init(&bld.coord_bld, builder, bld.coord_type); lp_build_context_init(&bld.uint_coord_bld, builder, bld.uint_coord_type); lp_build_context_init(&bld.int_coord_bld, builder, bld.int_coord_type); - lp_build_context_init(&bld.uint_size_bld, builder, bld.uint_size_type); + lp_build_context_init(&bld.int_size_bld, builder, bld.int_size_type); lp_build_context_init(&bld.float_size_bld, builder, bld.float_size_type); lp_build_context_init(&bld.texel_bld, builder, bld.texel_type); @@ -1198,28 +1198,23 @@ lp_build_sample_soa(LLVMBuilderRef builder, t = coords[1]; r = coords[2]; - /* width, height, depth as single uint vector */ + /* width, height, depth as single int vector */ if (dims <= 1) { - bld.uint_size = bld.width; + bld.int_size = bld.width; } else { - bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size_bld.undef, - bld.width, LLVMConstInt(i32t, 0, 0), ""); + bld.int_size = LLVMBuildInsertElement(builder, bld.int_size_bld.undef, + bld.width, LLVMConstInt(i32t, 0, 0), ""); if (dims >= 2) { - bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size, - bld.height, LLVMConstInt(i32t, 1, 0), ""); + bld.int_size = LLVMBuildInsertElement(builder, bld.int_size, + bld.height, LLVMConstInt(i32t, 1, 0), ""); if (dims >= 3) { - bld.uint_size = LLVMBuildInsertElement(builder, bld.uint_size, - bld.depth, LLVMConstInt(i32t, 2, 0), ""); + bld.int_size = LLVMBuildInsertElement(builder, bld.int_size, + bld.depth, LLVMConstInt(i32t, 2, 0), ""); } } } - /* width, height, depth as uint vectors */ - bld.width_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, bld.width); - bld.height_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, bld.height); - bld.depth_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, bld.depth); - if (0) { /* For debug: no-op texture sampling */ lp_build_sample_nop(bld.texel_type, texel_out); |