Dead code elimination would get rid of the extra instructions, but skipping this saves iterations through the optimization loop.
>From shader-db: N Min Max Median Avg Stddev x 14672 3 16 3 3.1334515 0.59904168 + 14672 1 16 3 2.8955153 0.77732963 Difference at 95.0% confidence -0.237936 +/- 0.0158798 -7.59342% +/- 0.506783% (Student's t, pooled s = 0.693935) Embarassingly, the classic shadow mapping shader: void main() { } used to require three iterations through the optimization loop. With this patch, it only requires one (which makes no progress). Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> Cc: Matt Turner <matts...@gmail.com> --- src/mesa/drivers/dri/i965/brw_fs.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 65a4b66..a3268fb 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -3025,10 +3025,12 @@ fs_visitor::run() emit_shader_time_begin(); calculate_urb_setup(); - if (brw->gen < 6) - emit_interpolation_setup_gen4(); - else - emit_interpolation_setup_gen6(); + if (fp->Base.InputsRead > 0) { + if (brw->gen < 6) + emit_interpolation_setup_gen4(); + else + emit_interpolation_setup_gen6(); + } /* We handle discards by keeping track of the still-live pixels in f0.1. * Initialize it with the dispatched pixels. -- 1.8.3.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev