Mesa (main): anv: use nir_shader_instructions_pass in anv_nir_add_base_work_group_id
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Oct 5 10:29:39 UTC 2021
Module: Mesa
Branch: main
Commit: 8c592e386a430d6b213da645d78fb88a3124d4c8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c592e386a430d6b213da645d78fb88a3124d4c8
Author: Marcin Ślusarz <marcin.slusarz at intel.com>
Date: Fri Aug 6 14:42:35 2021 +0200
anv: use nir_shader_instructions_pass in anv_nir_add_base_work_group_id
No functional changes.
Signed-off-by: Marcin Ślusarz <marcin.slusarz at intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13189>
---
src/intel/vulkan/anv_nir_add_base_work_group_id.c | 63 ++++++++++-------------
1 file changed, 27 insertions(+), 36 deletions(-)
diff --git a/src/intel/vulkan/anv_nir_add_base_work_group_id.c b/src/intel/vulkan/anv_nir_add_base_work_group_id.c
index 97596214de9..1283cb73eaa 100644
--- a/src/intel/vulkan/anv_nir_add_base_work_group_id.c
+++ b/src/intel/vulkan/anv_nir_add_base_work_group_id.c
@@ -25,48 +25,39 @@
#include "nir/nir_builder.h"
#include "compiler/brw_compiler.h"
-bool
-anv_nir_add_base_work_group_id(nir_shader *shader)
+static bool
+anv_nir_add_base_work_group_id_instr(nir_builder *b,
+ nir_instr *instr,
+ UNUSED void *cb_data)
{
- assert(shader->info.stage == MESA_SHADER_COMPUTE);
-
- nir_builder b;
- bool progress = false;
- nir_foreach_function(function, shader) {
- if (!function->impl)
- continue;
-
- nir_builder_init(&b, function->impl);
-
- nir_foreach_block(block, function->impl) {
- nir_foreach_instr_safe(instr, block) {
- if (instr->type != nir_instr_type_intrinsic)
- continue;
+ if (instr->type != nir_instr_type_intrinsic)
+ return false;
- nir_intrinsic_instr *load_id = nir_instr_as_intrinsic(instr);
- if (load_id->intrinsic != nir_intrinsic_load_workgroup_id)
- continue;
+ nir_intrinsic_instr *load_id = nir_instr_as_intrinsic(instr);
+ if (load_id->intrinsic != nir_intrinsic_load_workgroup_id)
+ return false;
- b.cursor = nir_after_instr(&load_id->instr);
+ b->cursor = nir_after_instr(&load_id->instr);
- nir_ssa_def *load_base =
- nir_load_push_constant(&b, 3, 32, nir_imm_int(&b, 0),
- .base = offsetof(struct anv_push_constants, cs.base_work_group_id),
- .range = 3 * sizeof(uint32_t));
+ nir_ssa_def *load_base =
+ nir_load_push_constant(b, 3, 32, nir_imm_int(b, 0),
+ .base = offsetof(struct anv_push_constants, cs.base_work_group_id),
+ .range = 3 * sizeof(uint32_t));
- nir_ssa_def *id = nir_iadd(&b, &load_id->dest.ssa,
- load_base);
+ nir_ssa_def *id = nir_iadd(b, &load_id->dest.ssa, load_base);
- nir_ssa_def_rewrite_uses_after(&load_id->dest.ssa,
- id,
- id->parent_instr);
- progress = true;
- }
- }
+ nir_ssa_def_rewrite_uses_after(&load_id->dest.ssa, id, id->parent_instr);
+ return true;
+}
- nir_metadata_preserve(function->impl, nir_metadata_block_index |
- nir_metadata_dominance);
- }
+bool
+anv_nir_add_base_work_group_id(nir_shader *shader)
+{
+ assert(shader->info.stage == MESA_SHADER_COMPUTE);
- return progress;
+ return nir_shader_instructions_pass(shader,
+ anv_nir_add_base_work_group_id_instr,
+ nir_metadata_block_index |
+ nir_metadata_dominance,
+ NULL);
}
More information about the mesa-commit
mailing list