mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
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:
parent
f7f0d31fcc
commit
feeae0f18f
4 changed files with 10 additions and 13 deletions
|
|
@ -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]);
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 ||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue