This was first fixed in commit b3f9c5c and then broken again in commit fe2d2c7, which removed the abs modifier from input registers.
v2: Don't change the size of struct ureg. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91342 Signed-off-by: Daniel Scharrer <dan...@constexpr.org> Cc: "12.0" <mesa-sta...@lists.freedesktop.org> --- src/mesa/main/ffvertex_prog.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/mesa/main/ffvertex_prog.c b/src/mesa/main/ffvertex_prog.c index f4ae690..eff1cf6 100644 --- a/src/mesa/main/ffvertex_prog.c +++ b/src/mesa/main/ffvertex_prog.c @@ -297,10 +297,9 @@ struct ureg { GLuint file:4; GLint idx:9; /* relative addressing may be negative */ /* sizeof(idx) should == sizeof(prog_src_reg::Index) */ - GLuint abs:1; GLuint negate:1; GLuint swz:12; - GLuint pad:5; + GLuint pad:6; }; @@ -348,7 +347,6 @@ static struct ureg make_ureg(GLuint file, GLint idx) struct ureg reg; reg.file = file; reg.idx = idx; - reg.abs = 0; reg.negate = 0; reg.swz = SWIZZLE_NOOP; reg.pad = 0; @@ -356,15 +354,6 @@ static struct ureg make_ureg(GLuint file, GLint idx) } - -static struct ureg absolute( struct ureg reg ) -{ - reg.abs = 1; - reg.negate = 0; - return reg; -} - - static struct ureg negate( struct ureg reg ) { reg.negate ^= 1; @@ -965,7 +954,8 @@ static struct ureg calculate_light_attenuation( struct tnl_program *p, emit_op2(p, OPCODE_DP3, spot, 0, negate(VPpli), spot_dir_norm); emit_op2(p, OPCODE_SLT, slt, 0, swizzle1(spot_dir_norm,W), spot); - emit_op2(p, OPCODE_POW, spot, 0, absolute(spot), swizzle1(attenuation, W)); + emit_op1(p, OPCODE_ABS, spot, 0, spot); + emit_op2(p, OPCODE_POW, spot, 0, spot, swizzle1(attenuation, W)); emit_op2(p, OPCODE_MUL, att, 0, slt, spot); release_temp(p, spot); -- 2.9.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev