mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-23 05:10:36 +02:00
freedreno/ir3: move nir finalization to after cache miss
In cases where every variant is a shader-cache-hit, we never need the post-finalize round of nir opt/lowering passes. So defer this until the first shader-cache-miss to avoid doing pointless work. Signed-off-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5372>
This commit is contained in:
parent
f97acb4bb4
commit
189a0fecf5
2 changed files with 12 additions and 7 deletions
|
|
@ -248,6 +248,17 @@ create_variant(struct ir3_shader *shader, const struct ir3_shader_key *key)
|
|||
if (ir3_disk_cache_retrieve(shader->compiler, v))
|
||||
return v;
|
||||
|
||||
if (!shader->nir_finalized) {
|
||||
ir3_nir_post_finalize(shader->compiler, shader->nir);
|
||||
|
||||
if (ir3_shader_debug & IR3_DBG_DISASM) {
|
||||
printf("dump nir%d: type=%d", shader->id, shader->type);
|
||||
nir_print_shader(shader->nir, stdout);
|
||||
}
|
||||
|
||||
shader->nir_finalized = true;
|
||||
}
|
||||
|
||||
if (!compile_variant(v))
|
||||
goto fail;
|
||||
|
||||
|
|
@ -454,13 +465,6 @@ ir3_shader_from_nir(struct ir3_compiler *compiler, nir_shader *nir,
|
|||
|
||||
ir3_disk_cache_init_shader_key(compiler, shader);
|
||||
|
||||
ir3_nir_post_finalize(compiler, nir);
|
||||
|
||||
if (ir3_shader_debug & IR3_DBG_DISASM) {
|
||||
printf("dump nir%d: type=%d", shader->id, shader->type);
|
||||
nir_print_shader(shader->nir, stdout);
|
||||
}
|
||||
|
||||
ir3_setup_used_key(shader);
|
||||
|
||||
return shader;
|
||||
|
|
|
|||
|
|
@ -690,6 +690,7 @@ struct ir3_shader {
|
|||
|
||||
unsigned num_reserved_user_consts;
|
||||
|
||||
bool nir_finalized;
|
||||
struct nir_shader *nir;
|
||||
struct ir3_stream_output_info stream_output;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue