ac/nir: don't put lod into args if it's zero.
authorDave Airlie <airlied@redhat.com>
Wed, 7 Mar 2018 03:24:25 +0000 (03:24 +0000)
committerDave Airlie <airlied@redhat.com>
Wed, 7 Mar 2018 03:34:59 +0000 (03:34 +0000)
If it's zero but put it in args we still end up consuming a
register for it.

This fixes some spilling in the NIR paths in Dirt Rally that
isn't seen with TGSI.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/common/ac_nir_to_llvm.c

index ea51c3a54a9469d2788806e213d0dfeab469c03d..cca796de71b1a2b858fed14f9f054049f802b4df 100644 (file)
@@ -5070,8 +5070,7 @@ static void visit_tex(struct ac_nir_context *ctx, nir_tex_instr *instr)
        }
 
        /* Pack LOD */
-       if (lod && ((instr->op == nir_texop_txl && !lod_is_zero) ||
-                   instr->op == nir_texop_txf)) {
+       if (lod && ((instr->op == nir_texop_txl || instr->op == nir_texop_txf) && !lod_is_zero)) {
                address[count++] = lod;
        } else if (instr->op == nir_texop_txf_ms && sample_index) {
                address[count++] = sample_index;