Module: Mesa
Branch: master
Commit: 6066f08ee937ad73dd06ec763dff0223d5268874
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6066f08ee937ad73dd06ec763dff0223d5268874

Author: Timothy Arceri <tarc...@itsqueeze.com>
Date:   Thu Apr  5 16:36:09 2018 +1000

st/mesa: finalise tcs/tes/geom NIR before storing it to the cache

We don't create variants of the NIR so here we finalise it before
caching to avoid unnecessary processing when restoring it.

Reviewed-by: Marek Olšák <marek.ol...@amd.com>

---

 src/mesa/state_tracker/st_program.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/mesa/state_tracker/st_program.c 
b/src/mesa/state_tracker/st_program.c
index a740c874c9..3f8df31da1 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -1473,6 +1473,9 @@ st_translate_geometry_program(struct st_context *st,
 
    /* We have already compiled to NIR so just return */
    if (stgp->shader_program) {
+      /* No variants */
+      st_finalize_nir(st, &stgp->Base, stgp->shader_program,
+                      stgp->tgsi.ir.nir);
       st_translate_program_stream_output(&stgp->Base, 
&stgp->tgsi.stream_output);
       st_store_ir_in_disk_cache(st, &stgp->Base, true);
       return true;
@@ -1530,8 +1533,6 @@ st_get_basic_variant(struct st_context *st,
         if (prog->tgsi.type == PIPE_SHADER_IR_NIR) {
            tgsi.type = PIPE_SHADER_IR_NIR;
            tgsi.ir.nir = nir_shader_clone(NULL, prog->tgsi.ir.nir);
-           st_finalize_nir(st, &prog->Base, prog->shader_program,
-                            tgsi.ir.nir);
             tgsi.stream_output = prog->tgsi.stream_output;
         } else
            tgsi = prog->tgsi;
@@ -1575,6 +1576,9 @@ st_translate_tessctrl_program(struct st_context *st,
 
    /* We have already compiled to NIR so just return */
    if (sttcp->shader_program) {
+      /* No variants */
+      st_finalize_nir(st, &sttcp->Base, sttcp->shader_program,
+                      sttcp->tgsi.ir.nir);
       st_store_ir_in_disk_cache(st, &sttcp->Base, true);
       return true;
    }
@@ -1606,6 +1610,9 @@ st_translate_tesseval_program(struct st_context *st,
 
    /* We have already compiled to NIR so just return */
    if (sttep->shader_program) {
+      /* No variants */
+      st_finalize_nir(st, &sttep->Base, sttep->shader_program,
+                      sttep->tgsi.ir.nir);
       st_translate_program_stream_output(&sttep->Base, 
&sttep->tgsi.stream_output);
       st_store_ir_in_disk_cache(st, &sttep->Base, true);
       return true;

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to