radeonsi: only touch first three coordinates in si_prepare_cube_coords
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Tue, 10 Jan 2017 13:54:22 +0000 (14:54 +0100)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Thu, 12 Jan 2017 23:39:07 +0000 (00:39 +0100)
Sourcing coords_arg[4] is actually never correct, since bias is handled
differently in tex_fetch_args anyway.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c

index c410a8b540a0dc1a6d849ef0bd67818423a688b2..11bd45d1b83458cb3d3a249a99fddb535c46bb75 100644 (file)
@@ -1027,7 +1027,7 @@ void si_prepare_cube_coords(struct lp_build_tgsi_context *bld_base,
        LLVMBuilderRef builder = gallivm->builder;
        LLVMTypeRef type = bld_base->base.elem_type;
        struct cube_selection_coords selcoords;
-       LLVMValueRef coords[4];
+       LLVMValueRef coords[3];
        LLVMValueRef invma;
 
        build_cube_intrinsic(gallivm, coords_arg, &selcoords);
@@ -1100,16 +1100,5 @@ void si_prepare_cube_coords(struct lp_build_tgsi_context *bld_base,
                                                       coords_arg[3], lp_build_const_float(gallivm, 8.0), coords[2]);
        }
 
-       /* Preserve compare/lod/bias. Put it in coords.w. */
-       if (opcode == TGSI_OPCODE_TEX2 ||
-           opcode == TGSI_OPCODE_TXB2 ||
-           opcode == TGSI_OPCODE_TXL2) {
-               coords[3] = coords_arg[4];
-       } else if (opcode == TGSI_OPCODE_TXB ||
-                  opcode == TGSI_OPCODE_TXL ||
-                  target == TGSI_TEXTURE_SHADOWCUBE) {
-               coords[3] = coords_arg[3];
-       }
-
        memcpy(coords_arg, coords, sizeof(coords));
 }