st/mesa: call nir_sweep in st_finalize_nir
authorMarek Olšák <marek.olsak@amd.com>
Tue, 19 Nov 2019 21:35:59 +0000 (16:35 -0500)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 19 Nov 2019 23:02:06 +0000 (18:02 -0500)
This is invoked sooner before (pre-)compiling the first variant and is
also applied to fixed-func and ARB programs.

src/mesa/state_tracker/st_glsl_to_nir.cpp
src/mesa/state_tracker/st_program.c

index a236908c1b17edef92286cf17234bd4637f583e2..27ad14518a1bbdd634497d1c3c0acdbee0b15d3c 100644 (file)
@@ -821,8 +821,6 @@ st_link_nir(struct gl_context *ctx,
          return false;
       }
 
-      nir_sweep(prog->nir);
-
       /* The GLSL IR won't be needed anymore. */
       ralloc_free(shader->ir);
       shader->ir = NULL;
index 62d4de3d5b57a1312938724d12d308b31827a4f4..12061ed91f1072d5710556f0f1af24be97bdb816 100644 (file)
@@ -2064,6 +2064,9 @@ st_finalize_program(struct st_context *st, struct gl_program *prog)
          st->dirty |= ((struct st_program *)prog)->affected_states;
    }
 
+   if (prog->nir)
+      nir_sweep(prog->nir);
+
    /* Create Gallium shaders now instead of on demand. */
    if (ST_DEBUG & DEBUG_PRECOMPILE ||
        st->shader_has_one_variant[prog->info.stage])