mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-20 16:30:50 +02:00
ac/nir/ngg,radv: use nir_load_viewport_xy_scale_and_offset
Acked-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Timur Kristóf <timur.kristof@gmail.com> Signed-off-by: Qiang Yu <yuq825@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17651>
This commit is contained in:
parent
a19dcdf9d5
commit
035d70f721
2 changed files with 17 additions and 15 deletions
|
|
@ -108,15 +108,17 @@ cull_small_primitive(nir_builder *b, nir_ssa_def *bbox_min[3], nir_ssa_def *bbox
|
|||
|
||||
nir_if *if_cull_small_prims = nir_push_if(b, nir_load_cull_small_primitives_enabled_amd(b));
|
||||
{
|
||||
nir_ssa_def *vp_scale[2] = { nir_load_viewport_x_scale(b), nir_load_viewport_y_scale(b), };
|
||||
nir_ssa_def *vp_translate[2] = { nir_load_viewport_x_offset(b), nir_load_viewport_y_offset(b), };
|
||||
nir_ssa_def *vp = nir_load_viewport_xy_scale_and_offset(b);
|
||||
nir_ssa_def *small_prim_precision = nir_load_cull_small_prim_precision_amd(b);
|
||||
prim_is_small = prim_is_small_else;
|
||||
|
||||
for (unsigned chan = 0; chan < 2; ++chan) {
|
||||
nir_ssa_def *vp_scale = nir_channel(b, vp, chan);
|
||||
nir_ssa_def *vp_translate = nir_channel(b, vp, 2 + chan);
|
||||
|
||||
/* Convert the position to screen-space coordinates. */
|
||||
nir_ssa_def *min = nir_ffma(b, bbox_min[chan], vp_scale[chan], vp_translate[chan]);
|
||||
nir_ssa_def *max = nir_ffma(b, bbox_max[chan], vp_scale[chan], vp_translate[chan]);
|
||||
nir_ssa_def *min = nir_ffma(b, bbox_min[chan], vp_scale, vp_translate);
|
||||
nir_ssa_def *max = nir_ffma(b, bbox_max[chan], vp_scale, vp_translate);
|
||||
|
||||
/* Scale the bounding box according to precision. */
|
||||
min = nir_fsub(b, min, small_prim_precision);
|
||||
|
|
|
|||
|
|
@ -174,18 +174,18 @@ lower_abi_instr(nir_builder *b, nir_instr *instr, void *state)
|
|||
replacement = nir_ldexp(b, nir_imm_float(b, 1.0f), exponent);
|
||||
break;
|
||||
}
|
||||
case nir_intrinsic_load_viewport_x_scale:
|
||||
replacement = ac_nir_load_arg(b, &s->args->ac, s->args->ngg_viewport_scale[0]);
|
||||
break;
|
||||
case nir_intrinsic_load_viewport_x_offset:
|
||||
replacement = ac_nir_load_arg(b, &s->args->ac, s->args->ngg_viewport_translate[0]);
|
||||
break;
|
||||
case nir_intrinsic_load_viewport_y_scale:
|
||||
replacement = ac_nir_load_arg(b, &s->args->ac, s->args->ngg_viewport_scale[1]);
|
||||
break;
|
||||
case nir_intrinsic_load_viewport_y_offset:
|
||||
replacement = ac_nir_load_arg(b, &s->args->ac, s->args->ngg_viewport_translate[1]);
|
||||
|
||||
case nir_intrinsic_load_viewport_xy_scale_and_offset: {
|
||||
nir_ssa_def *comps[] = {
|
||||
ac_nir_load_arg(b, &s->args->ac, s->args->ngg_viewport_scale[0]),
|
||||
ac_nir_load_arg(b, &s->args->ac, s->args->ngg_viewport_scale[1]),
|
||||
ac_nir_load_arg(b, &s->args->ac, s->args->ngg_viewport_translate[0]),
|
||||
ac_nir_load_arg(b, &s->args->ac, s->args->ngg_viewport_translate[1]),
|
||||
};
|
||||
replacement = nir_vec(b, comps, 4);
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_intrinsic_load_ring_task_draw_amd:
|
||||
replacement = load_ring(b, RING_TS_DRAW, s);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue