From c0b3d7a91629a4f3f36c16a830fad4b3df7a125b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Wed, 4 Sep 2024 10:04:41 +0200 Subject: [PATCH] nir/divergence: require nir_metadata_block_index This allows for fast checks whether some value is defined inside a loop. Reviewed-by: Rhys Perry Part-of: --- src/compiler/nir/nir_divergence_analysis.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index ffdc7642a8e..056ce6e7111 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -1267,6 +1267,8 @@ visit_cf_list(struct exec_list *list, struct divergence_state *state) void nir_divergence_analysis_impl(nir_function_impl *impl, nir_divergence_options options) { + nir_metadata_require(impl, nir_metadata_block_index); + struct divergence_state state = { .stage = impl->function->shader->info.stage, .shader = impl->function->shader, @@ -1278,6 +1280,8 @@ nir_divergence_analysis_impl(nir_function_impl *impl, nir_divergence_options opt }; visit_cf_list(&impl->body, &state); + + nir_metadata_preserve(impl, nir_metadata_all); } void @@ -1305,7 +1309,10 @@ nir_vertex_divergence_analysis(nir_shader *shader) .first_visit = true, }; + nir_metadata_require(nir_shader_get_entrypoint(shader), + nir_metadata_block_index); visit_cf_list(&nir_shader_get_entrypoint(shader)->body, &state); + nir_metadata_preserve(nir_shader_get_entrypoint(shader), nir_metadata_all); } bool