---
 src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c 
b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
index db25c89..e1670ce 100644
--- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
+++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
@@ -519,23 +519,20 @@ void radeon_llvm_emit_prepare_cube_coords(
                LLVMValueRef *arg,
                 unsigned target)
 {
-       boolean shadowcube = (target == TGSI_TEXTURE_SHADOWCUBE);
        struct gallivm_state * gallivm = bld_base->base.gallivm;
        LLVMBuilderRef builder = gallivm->builder;
        LLVMTypeRef type = bld_base->base.elem_type;
        LLVMValueRef coords[4];
        LLVMValueRef mad_args[3];
-       unsigned i, cnt;
+       LLVMValueRef idx;
+       unsigned i;
 
        LLVMValueRef v = build_intrinsic(builder, "llvm.AMDGPU.cube",
                        LLVMVectorType(type, 4),
                        arg, 1, LLVMReadNoneAttribute);
 
-       /* save src.w for shadow cube */
-       cnt = shadowcube ? 3 : 4;
-
-       for (i = 0; i < cnt; ++i) {
-               LLVMValueRef idx = lp_build_const_int32(gallivm, i);
+       for (i = 0; i < 4; ++i) {
+               idx = lp_build_const_int32(gallivm, i);
                coords[i] = LLVMBuildExtractElement(builder, v, idx, "");
        }
 
@@ -554,12 +551,16 @@ void radeon_llvm_emit_prepare_cube_coords(
        coords[1] = lp_build_emit_llvm_ternary(bld_base, TGSI_OPCODE_MAD,
                        mad_args[0], mad_args[1], mad_args[2]);
 
-       /* apply yxwy swizzle to cooords */
+       /* apply xyz = yxw swizzle to cooords */
        coords[2] = coords[3];
        coords[3] = coords[1];
        coords[1] = coords[0];
        coords[0] = coords[3];
 
+       /* use original w component */
+       idx = lp_build_const_int32(gallivm, 3);
+       coords[3] = LLVMBuildExtractElement(builder, *arg, idx, "");
+
        *arg = lp_build_gather_values(bld_base->base.gallivm, coords, 4);
 }
 
-- 
1.8.0.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to