Skip to content

r300: Remove broken optimization in rc_transform_KILL

Pavel Ondračka requested to merge ondracka/mesa:r300_kilp_fix into main

The logic was reversed so this was not only not working but it was also removing random instructions around.

For example:

Fragment Program: after 'rewrite depth out'
....
  7:   IF temp[2].xxxx;
  8:     ADD temp[0].x, temp[0].xxxx, temp[0].1111;
  9:   ELSE;
 10:     KILP;
 11:     ADD temp[0].x, temp[0].xxxx, temp[0].1111;
 12:   ENDIF;
....
Fragment Program: after 'transform KILP'
....
  7:   IF temp[2].xxxx;
  8:     ADD temp[0].x, temp[0].xxxx, temp[0].1111;
  9:     KIL -|temp[2].xxxx|;
 10:   ENDIF;
....

The special IF-KILP-ENDIF case this optimization was targeting is already transformed to KILL_IF in the TGSI, so remove this altogether.

This fixes piglit glsl-fs-discard-04

Closes: #343 (closed) Signed-off-by: Pavel Ondračka pavel.ondracka@gmail.com

Edited by Pavel Ondračka

Merge request reports