nir,radeonsi: add and implement nir_load_alpha_reference_amd

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21552>
This commit is contained in:
Qiang Yu 2023-02-24 14:39:17 +08:00 committed by Marge Bot
parent 67f295f1e2
commit c9d60547ef
5 changed files with 10 additions and 1 deletions

View file

@ -207,6 +207,7 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
case nir_intrinsic_load_lds_ngg_gs_out_vertex_base_amd:
case nir_intrinsic_load_btd_shader_type_intel:
case nir_intrinsic_load_base_workgroup_id:
case nir_intrinsic_load_alpha_reference_amd:
is_divergent = false;
break;

View file

@ -1598,6 +1598,9 @@ system_value("lds_ngg_gs_out_vertex_base_amd", 1)
# FLAGS = AC_EXP_FLAG_*
intrinsic("export_amd", [0], indices=[BASE, WRITE_MASK, FLAGS])
# Alpha test reference value
system_value("alpha_reference_amd", 1)
# V3D-specific instrinc for tile buffer color reads.
#
# The hardware requires that we read the samples and components of a pixel

View file

@ -478,6 +478,9 @@ static bool lower_abi_instr(nir_builder *b, nir_instr *instr, struct lower_abi_s
case nir_intrinsic_load_ring_tess_factors_offset_amd:
replacement = ac_nir_load_arg(b, &args->ac, args->ac.tcs_factor_offset);
break;
case nir_intrinsic_load_alpha_reference_amd:
replacement = ac_nir_load_arg(b, &args->ac, args->alpha_reference);
break;
default:
return false;
}

View file

@ -662,7 +662,8 @@ void si_init_shader_args(struct si_shader *shader, struct si_shader_args *args)
case MESA_SHADER_FRAGMENT:
declare_global_desc_pointers(args);
declare_per_stage_desc_pointers(args, shader, true);
si_add_arg_checked(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, NULL, SI_PARAM_ALPHA_REF);
si_add_arg_checked(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->alpha_reference,
SI_PARAM_ALPHA_REF);
si_add_arg_checked(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.prim_mask,
SI_PARAM_PRIM_MASK);

View file

@ -81,6 +81,7 @@ struct si_shader_args {
struct ac_arg tes_offchip_addr;
/* PS */
struct ac_arg pos_fixed_pt;
struct ac_arg alpha_reference;
/* CS */
struct ac_arg block_size;
struct ac_arg cs_user_data;