[Mesa-dev] [PATCH 01/10] radeonsi: fix the offset in cube map coordinate conversion

Nicolai Hähnle nhaehnle at gmail.com
Tue Jan 10 15:12:13 UTC 2017


From: Nicolai Hähnle <nicolai.haehnle at amd.com>

The correct offset is really 0.5, both intuitively and according to the
formulas in Section 8.13 (Cube Map Texture Selection) of the OpenGL spec.
This mistake probably never hurt because wrap-around is constrained to
individual cube faces.
---
 src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c b/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c
index 0a49bc2..277ed5b 100644
--- a/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c
+++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c
@@ -954,21 +954,21 @@ static void si_llvm_cube_to_2d_coords(struct lp_build_tgsi_context *bld_base,
 
 	for (i = 0; i < 4; ++i)
 		coords[i] = LLVMBuildExtractElement(builder, v,
 						    lp_build_const_int32(gallivm, i), "");
 
 	coords[2] = lp_build_intrinsic(builder, "llvm.fabs.f32",
 			type, &coords[2], 1, LP_FUNC_ATTR_READNONE);
 	coords[2] = lp_build_emit_llvm_unary(bld_base, TGSI_OPCODE_RCP, coords[2]);
 
 	mad_args[1] = coords[2];
-	mad_args[2] = LLVMConstReal(type, 1.5);
+	mad_args[2] = LLVMConstReal(type, 0.5);
 
 	mad_args[0] = coords[0];
 	coords[0] = lp_build_emit_llvm_ternary(bld_base, TGSI_OPCODE_MAD,
 			mad_args[0], mad_args[1], mad_args[2]);
 
 	mad_args[0] = coords[1];
 	coords[1] = lp_build_emit_llvm_ternary(bld_base, TGSI_OPCODE_MAD,
 			mad_args[0], mad_args[1], mad_args[2]);
 
 	/* apply xyz = yxw swizzle to cooords */
-- 
2.7.4



More information about the mesa-dev mailing list