Module: Mesa Branch: master Commit: df80ffa4aaf18433d8e3e97b7cb86426a1e8654b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=df80ffa4aaf18433d8e3e97b7cb86426a1e8654b
Author: Ian Romanick <[email protected]> Date: Fri Jun 16 19:02:48 2017 -0700 ffvertex: Don't try to read output registers in fog calculation Gallium drivers use _mesa_remove_output_reads() via st_program to lower output reads away. It seems better to just generate the right thing in the first place. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> --- src/mesa/main/ffvertex_prog.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/mesa/main/ffvertex_prog.c b/src/mesa/main/ffvertex_prog.c index 1c755592bd..dfb494bd8c 100644 --- a/src/mesa/main/ffvertex_prog.c +++ b/src/mesa/main/ffvertex_prog.c @@ -1297,12 +1297,14 @@ static void build_fog( struct tnl_program *p ) struct ureg input; switch (p->state->fog_distance_mode) { - case FDM_EYE_RADIAL: /* Z = sqrt(Xe*Xe + Ye*Ye + Ze*Ze) */ + case FDM_EYE_RADIAL: { /* Z = sqrt(Xe*Xe + Ye*Ye + Ze*Ze) */ + struct ureg tmp = get_temp(p); input = get_eye_position(p); - emit_op2(p, OPCODE_DP3, fog, WRITEMASK_X, input, input); - emit_op1(p, OPCODE_RSQ, fog, WRITEMASK_X, fog); - emit_op1(p, OPCODE_RCP, fog, WRITEMASK_X, fog); + emit_op2(p, OPCODE_DP3, tmp, WRITEMASK_X, input, input); + emit_op1(p, OPCODE_RSQ, tmp, WRITEMASK_X, tmp); + emit_op1(p, OPCODE_RCP, fog, WRITEMASK_X, tmp); break; + } case FDM_EYE_PLANE: /* Z = Ze */ input = get_eye_position_z(p); emit_op1(p, OPCODE_MOV, fog, WRITEMASK_X, input); _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
