nir: Fix non-determinism in lower_global_vars_to_local

Using a hash-table walk means that variables will get inserted in
different orders on different runs. Just walk the list of globals
instead, even if some of them can't be turned into locals.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Connor Abbott 2019-10-22 17:50:07 +02:00
parent f512965b0b
commit f9fd04aca1

View file

@ -83,8 +83,11 @@ nir_lower_global_vars_to_local(nir_shader *shader)
}
}
hash_table_foreach(var_func_table, entry) {
nir_variable *var = (void *)entry->key;
nir_foreach_variable_safe(var, &shader->globals) {
struct hash_entry *entry = _mesa_hash_table_search(var_func_table, var);
if (!entry)
continue;
nir_function_impl *impl = entry->data;
assert(var->data.mode == nir_var_shader_temp);