tgsi_to_nir: use pipe_screen::finalize_nir
authorMarek Olšák <marek.olsak@amd.com>
Fri, 27 Sep 2019 18:55:58 +0000 (14:55 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 24 Oct 2019 01:12:52 +0000 (21:12 -0400)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/gallium/auxiliary/nir/tgsi_to_nir.c

index 3753ac75e92edf50def6ae1d87edbe0a01baa251..bd0b47a856f228afd2996b80ff064db0d572e37c 100644 (file)
@@ -2626,7 +2626,7 @@ ttn_optimize_nir(nir_shader *nir)
  * so we have to do it here too.
  */
 static void
-ttn_finalize_nir(struct ttn_compile *c)
+ttn_finalize_nir(struct ttn_compile *c, struct pipe_screen *screen)
 {
    struct nir_shader *nir = c->build.shader;
 
@@ -2644,8 +2644,13 @@ ttn_finalize_nir(struct ttn_compile *c)
    if (!c->cap_samplers_as_deref)
       NIR_PASS_V(nir, nir_lower_samplers);
 
-   ttn_optimize_nir(nir);
-   nir_shader_gather_info(nir, c->build.impl);
+   if (screen->finalize_nir) {
+      screen->finalize_nir(screen, nir, true);
+   } else {
+      ttn_optimize_nir(nir);
+      nir_shader_gather_info(nir, c->build.impl);
+   }
+
    nir_validate_shader(nir, "TTN: after all optimizations");
 }
 
@@ -2658,7 +2663,7 @@ tgsi_to_nir(const void *tgsi_tokens,
 
    c = ttn_compile_init(tgsi_tokens, NULL, screen);
    s = c->build.shader;
-   ttn_finalize_nir(c);
+   ttn_finalize_nir(c, screen);
    ralloc_free(c);
 
    return s;