Mesa (main): nir: Rename nir_get_io_vertex_index_src and include per-primitive I/O.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Nov 16 08:20:39 UTC 2021
Module: Mesa
Branch: main
Commit: 5aa39253cbb700876569b2e400ae8eb66dfc2507
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5aa39253cbb700876569b2e400ae8eb66dfc2507
Author: Timur Kristóf <timur.kristof at gmail.com>
Date: Thu Oct 14 18:14:12 2021 +0200
nir: Rename nir_get_io_vertex_index_src and include per-primitive I/O.
Signed-off-by: Timur Kristóf <timur.kristof at gmail.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13466>
---
src/amd/common/ac_nir_lower_esgs_io_to_mem.c | 2 +-
src/amd/common/ac_nir_lower_tess_io_to_mem.c | 8 ++++----
src/amd/compiler/aco_instruction_selection.cpp | 2 +-
src/amd/llvm/ac_nir_to_llvm.c | 4 ++--
src/compiler/nir/nir.h | 2 +-
src/compiler/nir/nir_gather_info.c | 4 ++--
src/compiler/nir/nir_lower_io.c | 4 +++-
src/intel/compiler/brw_nir.c | 2 +-
8 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/src/amd/common/ac_nir_lower_esgs_io_to_mem.c b/src/amd/common/ac_nir_lower_esgs_io_to_mem.c
index 0dbe7107a27..0e8fe599e77 100644
--- a/src/amd/common/ac_nir_lower_esgs_io_to_mem.c
+++ b/src/amd/common/ac_nir_lower_esgs_io_to_mem.c
@@ -192,7 +192,7 @@ gs_per_vertex_input_offset(nir_builder *b,
lower_esgs_io_state *st,
nir_intrinsic_instr *instr)
{
- nir_src *vertex_src = nir_get_io_vertex_index_src(instr);
+ nir_src *vertex_src = nir_get_io_arrayed_index_src(instr);
nir_ssa_def *vertex_offset = st->chip_class >= GFX9
? gs_per_vertex_input_vertex_offset_gfx9(b, vertex_src)
: gs_per_vertex_input_vertex_offset_gfx6(b, vertex_src);
diff --git a/src/amd/common/ac_nir_lower_tess_io_to_mem.c b/src/amd/common/ac_nir_lower_tess_io_to_mem.c
index 2137b4f9c0f..e3935a67d56 100644
--- a/src/amd/common/ac_nir_lower_tess_io_to_mem.c
+++ b/src/amd/common/ac_nir_lower_tess_io_to_mem.c
@@ -253,7 +253,7 @@ filter_load_tcs_per_vertex_input(const nir_instr *instr,
* can use temporaries, no need to use shared memory.
*/
nir_src *off_src = nir_get_io_offset_src(intrin);
- nir_src *vertex_index_src = nir_get_io_vertex_index_src(intrin);
+ nir_src *vertex_index_src = nir_get_io_arrayed_index_src(intrin);
nir_instr *vertex_index_instr = vertex_index_src->ssa->parent_instr;
bool can_use_temps = nir_src_is_const(*off_src) &&
@@ -275,7 +275,7 @@ hs_per_vertex_input_lds_offset(nir_builder *b,
nir_ssa_def *tcs_in_patch_stride = nir_imul_imm(b, tcs_in_vtxcnt, tcs_in_vertex_stride);
nir_ssa_def *tcs_in_current_patch_offset = nir_imul(b, rel_patch_id, tcs_in_patch_stride);
- nir_ssa_def *vertex_index = nir_get_io_vertex_index_src(instr)->ssa;
+ nir_ssa_def *vertex_index = nir_get_io_arrayed_index_src(instr)->ssa;
nir_ssa_def *vertex_index_off = nir_imul_imm(b, vertex_index, tcs_in_vertex_stride);
nir_ssa_def *io_offset = nir_build_calc_io_offset(b, instr, nir_imm_int(b, 16u), 4u);
@@ -310,7 +310,7 @@ hs_output_lds_offset(nir_builder *b,
nir_ssa_def *output_patch_offset = nir_iadd_nuw(b, patch_offset, output_patch0_offset);
if (per_vertex) {
- nir_ssa_def *vertex_index = nir_ssa_for_src(b, *nir_get_io_vertex_index_src(intrin), 1);
+ nir_ssa_def *vertex_index = nir_ssa_for_src(b, *nir_get_io_arrayed_index_src(intrin), 1);
nir_ssa_def *vertex_index_off = nir_imul_imm(b, vertex_index, output_vertex_size);
off = nir_iadd_nuw(b, off, vertex_index_off);
@@ -337,7 +337,7 @@ hs_per_vertex_output_vmem_offset(nir_builder *b,
nir_ssa_def *rel_patch_id = nir_build_load_tess_rel_patch_id_amd(b);
nir_ssa_def *patch_offset = nir_imul(b, rel_patch_id, nir_imul_imm(b, out_vertices_per_patch, 16u));
- nir_ssa_def *vertex_index = nir_ssa_for_src(b, *nir_get_io_vertex_index_src(intrin), 1);
+ nir_ssa_def *vertex_index = nir_ssa_for_src(b, *nir_get_io_arrayed_index_src(intrin), 1);
nir_ssa_def *vertex_index_off = nir_imul_imm(b, vertex_index, 16u);
return nir_iadd_nuw(b, nir_iadd_nuw(b, patch_offset, vertex_index_off), io_offset);
diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp
index 66c818b4a44..4712d885c55 100644
--- a/src/amd/compiler/aco_instruction_selection.cpp
+++ b/src/amd/compiler/aco_instruction_selection.cpp
@@ -4716,7 +4716,7 @@ load_input_from_temps(isel_context* ctx, nir_intrinsic_instr* instr, Temp dst)
return false;
nir_src* off_src = nir_get_io_offset_src(instr);
- nir_src* vertex_index_src = nir_get_io_vertex_index_src(instr);
+ nir_src* vertex_index_src = nir_get_io_arrayed_index_src(instr);
nir_instr* vertex_index_instr = vertex_index_src->ssa->parent_instr;
bool can_use_temps =
nir_src_is_const(*off_src) && vertex_index_instr->type == nir_instr_type_intrinsic &&
diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c
index bd72e39a0af..0c585d7d9f8 100644
--- a/src/amd/llvm/ac_nir_to_llvm.c
+++ b/src/amd/llvm/ac_nir_to_llvm.c
@@ -2323,7 +2323,7 @@ static void visit_store_output(struct ac_nir_context *ctx, nir_intrinsic_instr *
writemask <<= component;
if (ctx->stage == MESA_SHADER_TESS_CTRL) {
- nir_src *vertex_index_src = nir_get_io_vertex_index_src(instr);
+ nir_src *vertex_index_src = nir_get_io_arrayed_index_src(instr);
LLVMValueRef vertex_index = vertex_index_src ? get_src(ctx, *vertex_index_src) : NULL;
unsigned location = nir_intrinsic_io_semantics(instr).location;
@@ -3379,7 +3379,7 @@ static LLVMValueRef visit_load(struct ac_nir_context *ctx, nir_intrinsic_instr *
unsigned base = nir_intrinsic_base(instr);
unsigned component = nir_intrinsic_component(instr);
unsigned count = instr->dest.ssa.num_components;
- nir_src *vertex_index_src = nir_get_io_vertex_index_src(instr);
+ nir_src *vertex_index_src = nir_get_io_arrayed_index_src(instr);
LLVMValueRef vertex_index = vertex_index_src ? get_src(ctx, *vertex_index_src) : NULL;
nir_src offset = *nir_get_io_offset_src(instr);
LLVMValueRef indir_index = NULL;
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 780959b6906..4e83281ad6a 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -4974,7 +4974,7 @@ nir_lower_shader_calls(nir_shader *shader,
void *mem_ctx);
nir_src *nir_get_io_offset_src(nir_intrinsic_instr *instr);
-nir_src *nir_get_io_vertex_index_src(nir_intrinsic_instr *instr);
+nir_src *nir_get_io_arrayed_index_src(nir_intrinsic_instr *instr);
nir_src *nir_get_shader_call_payload_src(nir_intrinsic_instr *call);
bool nir_is_arrayed_io(const nir_variable *var, gl_shader_stage stage);
diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c
index 4da3a11be0c..d1544ee24fe 100644
--- a/src/compiler/nir/nir_gather_info.c
+++ b/src/compiler/nir/nir_gather_info.c
@@ -527,7 +527,7 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader,
if (shader->info.stage == MESA_SHADER_TESS_CTRL &&
instr->intrinsic == nir_intrinsic_load_per_vertex_input &&
- !src_is_invocation_id(nir_get_io_vertex_index_src(instr)))
+ !src_is_invocation_id(nir_get_io_arrayed_index_src(instr)))
shader->info.tess.tcs_cross_invocation_inputs_read |= slot_mask;
break;
@@ -550,7 +550,7 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader,
if (shader->info.stage == MESA_SHADER_TESS_CTRL &&
instr->intrinsic == nir_intrinsic_load_per_vertex_output &&
- !src_is_invocation_id(nir_get_io_vertex_index_src(instr)))
+ !src_is_invocation_id(nir_get_io_arrayed_index_src(instr)))
shader->info.tess.tcs_cross_invocation_outputs_read |= slot_mask;
if (shader->info.stage == MESA_SHADER_FRAGMENT &&
diff --git a/src/compiler/nir/nir_lower_io.c b/src/compiler/nir/nir_lower_io.c
index faaa1d717c2..f160390fd4d 100644
--- a/src/compiler/nir/nir_lower_io.c
+++ b/src/compiler/nir/nir_lower_io.c
@@ -2513,13 +2513,15 @@ nir_get_io_offset_src(nir_intrinsic_instr *instr)
* Return the vertex index source for a load/store per_vertex intrinsic.
*/
nir_src *
-nir_get_io_vertex_index_src(nir_intrinsic_instr *instr)
+nir_get_io_arrayed_index_src(nir_intrinsic_instr *instr)
{
switch (instr->intrinsic) {
case nir_intrinsic_load_per_vertex_input:
case nir_intrinsic_load_per_vertex_output:
+ case nir_intrinsic_load_per_primitive_output:
return &instr->src[0];
case nir_intrinsic_store_per_vertex_output:
+ case nir_intrinsic_store_per_primitive_output:
return &instr->src[1];
default:
return NULL;
diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c
index d50feb093bb..6d9d0cef88a 100644
--- a/src/intel/compiler/brw_nir.c
+++ b/src/intel/compiler/brw_nir.c
@@ -128,7 +128,7 @@ remap_patch_urb_offsets(nir_block *block, nir_builder *b,
assert(vue_slot != -1);
intrin->const_index[0] = vue_slot;
- nir_src *vertex = nir_get_io_vertex_index_src(intrin);
+ nir_src *vertex = nir_get_io_arrayed_index_src(intrin);
if (vertex) {
if (nir_src_is_const(*vertex)) {
intrin->const_index[0] += nir_src_as_uint(*vertex) *
More information about the mesa-commit
mailing list