nir/has_divergent_loop: require divergence metadata, check all function impls

instead of forcing callers to call nir_divergence_analysis

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38597>
This commit is contained in:
Marek Olšák
2025-11-21 12:44:22 -05:00
committed by Marge Bot
parent d0b83dd7ce
commit e14f8ee0e4
+7 -5
View File
@@ -1587,12 +1587,14 @@ nir_vertex_divergence_analysis(nir_shader *shader)
bool
nir_has_divergent_loop(nir_shader *shader)
{
nir_function_impl *func = nir_shader_get_entrypoint(shader);
nir_foreach_function_impl(impl, shader) {
nir_metadata_require(impl, nir_metadata_divergence);
foreach_list_typed(nir_cf_node, node, node, &func->body) {
if (node->type == nir_cf_node_loop) {
if (nir_cf_node_as_loop(node)->divergent_break)
return true;
foreach_list_typed(nir_cf_node, node, node, &impl->body) {
if (node->type == nir_cf_node_loop) {
if (nir_cf_node_as_loop(node)->divergent_break)
return true;
}
}
}