On 10.01.2017 16:12, Nicolai Hähnle wrote:
From: Nicolai Hähnle <nicolai.haeh...@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.
Oddly, this actually breaks some tests. I don't yet understand why, but
reverting to adding 1.5 fixes at least the tests I've looked at... I'll
run some more comprehensive tests later.
Nicolai
---
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 */
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev