ac/llvm, radeonsi: Handle tess_rel_patch_id in common code.

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 <timur.kristof@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28425>
This commit is contained in:
Timur Kristóf
2024-03-29 22:36:26 +01:00
parent 3ee81ffe14
commit e68ab8651e
2 changed files with 13 additions and 4 deletions
+13 -1
View File
@@ -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:
@@ -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, "");