From ffdc6d3c752fb46bf170a097e5d51d3bd1072e53 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Thu, 19 Mar 2026 12:27:03 -0400 Subject: [PATCH] nak: Move lowering of load_*_id to lower_vtg_io.c Reviewed-by: Mary Guillemard Part-of: --- src/nouveau/compiler/nak_nir.c | 17 ----------------- src/nouveau/compiler/nak_nir_lower_vtg_io.c | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/nouveau/compiler/nak_nir.c b/src/nouveau/compiler/nak_nir.c index 249e9771589..66d82fb3cc3 100644 --- a/src/nouveau/compiler/nak_nir.c +++ b/src/nouveau/compiler/nak_nir.c @@ -474,23 +474,6 @@ nak_nir_lower_system_value_intrin(nir_builder *b, nir_intrinsic_instr *intrin, nir_def *val; switch (intrin->intrinsic) { - case nir_intrinsic_load_primitive_id: - case nir_intrinsic_load_instance_id: - case nir_intrinsic_load_vertex_id: { - assert(b->shader->info.stage != MESA_SHADER_VERTEX || - b->shader->info.stage != MESA_SHADER_TESS_CTRL || - b->shader->info.stage == MESA_SHADER_TESS_EVAL || - b->shader->info.stage == MESA_SHADER_GEOMETRY); - const gl_system_value sysval = - nir_system_value_from_intrinsic(intrin->intrinsic); - const uint32_t addr = nak_sysval_attr_addr(nak, sysval); - val = nir_ald_nv(b, 1, nir_imm_int(b, 0), nir_imm_int(b, 0), - .base = addr, .flags = 0, - .range_base = addr, .range = 4, - .access = ACCESS_CAN_REORDER); - break; - } - case nir_intrinsic_load_patch_vertices_in: { val = nak_nir_load_sysval(b, NAK_SV_PRIM_TYPE, ACCESS_CAN_REORDER); val = nir_extract_u8(b, val, nir_imm_int(b, 1)); diff --git a/src/nouveau/compiler/nak_nir_lower_vtg_io.c b/src/nouveau/compiler/nak_nir_lower_vtg_io.c index e48fe34aec8..33fd29380fa 100644 --- a/src/nouveau/compiler/nak_nir_lower_vtg_io.c +++ b/src/nouveau/compiler/nak_nir_lower_vtg_io.c @@ -58,6 +58,21 @@ lower_vtg_io_intrin(nir_builder *b, nir_def *vtx = NULL, *offset = NULL, *data = NULL; switch (intrin->intrinsic) { + case nir_intrinsic_load_primitive_id: + case nir_intrinsic_load_instance_id: + case nir_intrinsic_load_vertex_id: { + /* These still input loads but they're a special case */ + const gl_system_value sysval = + nir_system_value_from_intrinsic(intrin->intrinsic); + const uint32_t addr = nak_sysval_attr_addr(nak, sysval); + nir_def *val = nir_ald_nv(b, 1, nir_imm_int(b, 0), nir_imm_int(b, 0), + .base = addr, .flags = 0, + .range_base = addr, .range = 4, + .access = ACCESS_CAN_REORDER); + nir_def_rewrite_uses(&intrin->def, val); + return true; + } + case nir_intrinsic_load_input: case nir_intrinsic_load_output: offset = intrin->src[0].ssa;