From: Timothy Arceri Date: Thu, 5 Apr 2018 06:36:09 +0000 (+1000) Subject: st/mesa: finalise tcs/tes/geom NIR before storing it to the cache X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6066f08ee937ad73dd06ec763dff0223d5268874;p=mesa.git 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 --- diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index a740c874c9e..3f8df31da18 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;