Mesa (main): nir: Add modes filter to nir_sort_variables
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jun 24 20:25:11 UTC 2021
Module: Mesa
Branch: main
Commit: 8a5333c105f4d99c139c866af1074366dcd7adb4
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8a5333c105f4d99c139c866af1074366dcd7adb4
Author: Enrico Galli <enrico.galli at intel.com>
Date: Thu Jun 10 13:46:15 2021 -0700
nir: Add modes filter to nir_sort_variables
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10989>
---
src/compiler/nir/nir.c | 17 +++++++++++------
src/compiler/nir/nir.h | 7 ++++---
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c
index 41fe6ae0cec..70b934e0ce0 100644
--- a/src/compiler/nir/nir.c
+++ b/src/compiler/nir/nir.c
@@ -280,14 +280,20 @@ var_sort_cmp(const void *_a, const void *_b, void *_cmp)
}
void
-nir_sort_variables(nir_shader *shader,
- int (*cmp)(const nir_variable *, const nir_variable *))
+nir_sort_variables_with_modes(nir_shader *shader,
+ int (*cmp)(const nir_variable *,
+ const nir_variable *),
+ nir_variable_mode modes)
{
- const unsigned num_vars = exec_list_length(&shader->variables);
+ unsigned num_vars = 0;
+ nir_foreach_variable_with_modes(var, shader, modes) {
+ ++num_vars;
+ }
struct var_cmp *vars = ralloc_array(shader, struct var_cmp, num_vars);
unsigned i = 0;
- nir_foreach_variable_in_shader(var, shader) {
- vars[i++] = (struct var_cmp) {
+ nir_foreach_variable_with_modes_safe(var, shader, modes) {
+ exec_node_remove(&var->node);
+ vars[i++] = (struct var_cmp){
.var = var,
.cmp = cmp,
};
@@ -296,7 +302,6 @@ nir_sort_variables(nir_shader *shader,
util_qsort_r(vars, num_vars, sizeof(*vars), var_sort_cmp, cmp);
- exec_list_make_empty(&shader->variables);
for (i = 0; i < num_vars; i++)
exec_list_push_tail(&shader->variables, &vars[i].var->node);
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 9af1264191c..59e46d05541 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -3622,9 +3622,10 @@ nir_variable *nir_find_variable_with_driver_location(nir_shader *shader,
nir_variable_mode mode,
unsigned location);
-void nir_sort_variables(nir_shader *shader,
- int (*compar)(const nir_variable *,
- const nir_variable *));
+void nir_sort_variables_with_modes(nir_shader *shader,
+ int (*compar)(const nir_variable *,
+ const nir_variable *),
+ nir_variable_mode modes);
/** creates a function and adds it to the shader's list of functions */
nir_function *nir_function_create(nir_shader *shader, const char *name);
More information about the mesa-commit
mailing list