---
 src/gallium/drivers/radeonsi/si_pipe.c |  4 ----
 src/mesa/state_tracker/st_program.c    | 15 +++++++++++----
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_pipe.c 
b/src/gallium/drivers/radeonsi/si_pipe.c
index 676d199618..c096165b03 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -621,10 +621,6 @@ static void si_disk_cache_create(struct si_screen *sscreen)
        if (sscreen->debug_flags & DBG_ALL_SHADERS)
                return;
 
-       /* TODO: remove this once gallium supports a nir cache */
-       if (sscreen->debug_flags & DBG(NIR))
-               return;
-
        uint32_t mesa_timestamp;
        if (disk_cache_get_function_timestamp(si_disk_cache_create,
                                              &mesa_timestamp)) {
diff --git a/src/mesa/state_tracker/st_program.c 
b/src/mesa/state_tracker/st_program.c
index de9c5d1654..b3926eaa02 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -466,6 +466,7 @@ st_translate_vertex_program(struct st_context *st,
                                           &stvp->tgsi.stream_output);
       }
 
+      st_store_ir_in_disk_cache(st, &stvp->Base, true);
       return true;
    }
 
@@ -900,9 +901,11 @@ st_translate_fragment_program(struct st_context *st,
       }
    }
 
-   /* We have already compiler to NIR so just return */
-   if (stfp->shader_program)
+   /* We have already compiled to NIR so just return */
+   if (stfp->shader_program) {
+      st_store_ir_in_disk_cache(st, &stfp->Base, true);
       return true;
+   }
 
    ureg = ureg_create_with_screen(PIPE_SHADER_FRAGMENT, st->pipe->screen);
    if (ureg == NULL)
@@ -1472,6 +1475,7 @@ st_translate_geometry_program(struct st_context *st,
    /* We have already compiled to NIR so just return */
    if (stgp->shader_program) {
       st_translate_program_stream_output(&stgp->Base, 
&stgp->tgsi.stream_output);
+      st_store_ir_in_disk_cache(st, &stgp->Base, true);
       return true;
    }
 
@@ -1571,8 +1575,10 @@ st_translate_tessctrl_program(struct st_context *st,
    struct ureg_program *ureg;
 
    /* We have already compiled to NIR so just return */
-   if (sttcp->shader_program)
+   if (sttcp->shader_program) {
+      st_store_ir_in_disk_cache(st, &sttcp->Base, true);
       return true;
+   }
 
    ureg = ureg_create_with_screen(PIPE_SHADER_TESS_CTRL, st->pipe->screen);
    if (ureg == NULL)
@@ -1602,6 +1608,7 @@ st_translate_tesseval_program(struct st_context *st,
    /* We have already compiled to NIR so just return */
    if (sttep->shader_program) {
       st_translate_program_stream_output(&sttep->Base, 
&sttep->tgsi.stream_output);
+      st_store_ir_in_disk_cache(st, &sttep->Base, true);
       return true;
    }
 
@@ -1652,7 +1659,7 @@ st_translate_compute_program(struct st_context *st,
       /* no compute variants: */
       st_finalize_nir(st, &stcp->Base, stcp->shader_program,
                       (struct nir_shader *) stcp->tgsi.prog);
-
+      st_store_ir_in_disk_cache(st, &stcp->Base, true);
       return true;
    }
 
-- 
2.14.3

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to