From e68ab8651e4f13c97f2983ee6336d86c166bd95d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Fri, 29 Mar 2024 22:36:26 +0100 Subject: [PATCH] ac/llvm, radeonsi: Handle tess_rel_patch_id in common code. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We'll need to clean this up later, but for now it's better to have it in common code than in RadeonSI. Signed-off-by: Timur Kristóf Reviewed-by: Marek Olšák Part-of: --- src/amd/llvm/ac_nir_to_llvm.c | 14 +++++++++++++- src/gallium/drivers/radeonsi/si_shader_llvm.c | 3 --- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index 99d40516eb1..dd0795e0e7a 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -3074,9 +3074,21 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, nir_intrinsic_instr *ins result = ac_build_gather_values(&ctx->ac, values, 3); break; } + case nir_intrinsic_load_tess_rel_patch_id_amd: + switch (ctx->stage) { + case MESA_SHADER_TESS_CTRL: + result = ac_unpack_param(&ctx->ac, ac_get_arg(&ctx->ac, ctx->args->tcs_rel_ids), 0, 8); + break; + case MESA_SHADER_TESS_EVAL: + result = ctx->abi->tes_rel_patch_id_replaced ? ctx->abi->tes_rel_patch_id_replaced : + ac_get_arg(&ctx->ac, ctx->args->tes_rel_patch_id); + break; + default: + unreachable("invalid stage"); + } + break; case nir_intrinsic_load_base_vertex: case nir_intrinsic_load_first_vertex: - case nir_intrinsic_load_tess_rel_patch_id_amd: case nir_intrinsic_load_ring_attr_amd: case nir_intrinsic_load_lds_ngg_scratch_base_amd: case nir_intrinsic_load_lds_ngg_gs_out_vertex_base_amd: diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm.c b/src/gallium/drivers/radeonsi/si_shader_llvm.c index bb82217a9d8..821762e0c11 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm.c @@ -485,9 +485,6 @@ static LLVMValueRef si_llvm_load_intrinsic(struct ac_shader_abi *abi, nir_intrin struct si_shader_context *ctx = si_shader_context_from_abi(abi); switch (intrin->intrinsic) { - case nir_intrinsic_load_tess_rel_patch_id_amd: - return si_get_rel_patch_id(ctx); - case nir_intrinsic_load_lds_ngg_scratch_base_amd: return LLVMBuildPtrToInt(ctx->ac.builder, ctx->gs_ngg_scratch.value, ctx->ac.i32, "");