ac/llvm,radeonsi: lower nir_load_point_coord_maybe_flipped in nir

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/22523>
This commit is contained in:
Qiang Yu 2023-04-15 13:04:05 +08:00 committed by Marge Bot
parent f7f0d31fcc
commit feeae0f18f
4 changed files with 10 additions and 13 deletions

View file

@ -3812,14 +3812,6 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, nir_intrinsic_instr *ins
nir_intrinsic_io_semantics(instr).high_16bits);
break;
}
case nir_intrinsic_load_point_coord_maybe_flipped: {
LLVMValueRef interp_param = lookup_interp_param(ctx, INTERP_MODE_NONE, INTERP_CENTER);
/* Load point coordinates (x, y) which are written by the hw after the interpolated inputs */
result = load_interpolated_input(ctx, interp_param, ctx->abi->num_interp, 2,
instr->dest.ssa.num_components, instr->dest.ssa.bit_size,
false);
break;
}
case nir_intrinsic_emit_vertex_with_counter: {
unsigned stream = nir_intrinsic_stream_id(instr);
LLVMValueRef next_vertex = get_src(ctx, instr->src[0]);

View file

@ -121,9 +121,6 @@ struct ac_shader_abi {
/* Equal to radeon_info::conformant_trunc_coord. */
bool conformant_trunc_coord;
/* Number of all interpolated inputs */
unsigned num_interp;
};
#endif /* AC_SHADER_ABI_H */

View file

@ -513,6 +513,16 @@ static bool lower_abi_instr(nir_builder *b, nir_instr *instr, struct lower_abi_s
replacement = nir_vec(b, color, 4);
break;
}
case nir_intrinsic_load_point_coord_maybe_flipped: {
nir_ssa_def *interp_param =
nir_load_barycentric_pixel(b, 32, .interp_mode = INTERP_MODE_NONE);
/* Load point coordinates (x, y) which are written by the hw after the interpolated inputs */
replacement = nir_load_interpolated_input(b, 2, 32, interp_param, nir_imm_int(b, 0),
.base = si_get_ps_num_interp(shader),
.component = 2);
break;
}
default:
return false;
}

View file

@ -832,8 +832,6 @@ static bool si_llvm_translate_nir(struct si_shader_context *ctx, struct si_shade
break;
case MESA_SHADER_FRAGMENT: {
ctx->abi.num_interp = si_get_ps_num_interp(shader);
ctx->abi.kill_ps_if_inf_interp =
ctx->screen->options.no_infinite_interp &&
(ctx->shader->selector->info.uses_persp_center ||