mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 02:38:04 +02:00
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:
parent
d0b83dd7ce
commit
e14f8ee0e4
1 changed files with 7 additions and 5 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue