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:
@@ -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, "");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user