mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 07:30:09 +01:00
nak: Pass offset to load_frag_w
This fix IPA.OFFSET getting an undef for the offset and restore previous
behavior.
Fixes: 618bdb8571 ("nak: Rework FS input interpolation")
Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26239>
This commit is contained in:
parent
1f582bad0a
commit
8d8d93fab9
1 changed files with 7 additions and 4 deletions
|
|
@ -557,8 +557,11 @@ nak_xfb_from_nir(const struct nir_xfb_info *nir_xfb)
|
|||
}
|
||||
|
||||
static nir_def *
|
||||
load_frag_w(nir_builder *b, enum nak_interp_loc interp_loc)
|
||||
load_frag_w(nir_builder *b, enum nak_interp_loc interp_loc, nir_def *offset)
|
||||
{
|
||||
if (offset == NULL)
|
||||
offset = nir_imm_int(b, 0);
|
||||
|
||||
const uint16_t w_addr =
|
||||
nak_sysval_attr_addr(SYSTEM_VALUE_FRAG_COORD) + 12;
|
||||
|
||||
|
|
@ -570,7 +573,7 @@ load_frag_w(nir_builder *b, enum nak_interp_loc interp_loc)
|
|||
uint32_t flags_u32;
|
||||
memcpy(&flags_u32, &flags, sizeof(flags_u32));
|
||||
|
||||
return nir_ipa_nv(b, nir_imm_float(b, 0), nir_imm_int(b, 0),
|
||||
return nir_ipa_nv(b, nir_imm_float(b, 0), offset,
|
||||
.base = w_addr, .flags = flags_u32);
|
||||
}
|
||||
|
||||
|
|
@ -639,7 +642,7 @@ lower_fs_input_intrin(nir_builder *b, nir_intrinsic_instr *intrin, void *data)
|
|||
nak_sysval_attr_addr(SYSTEM_VALUE_POINT_COORD) :
|
||||
nak_sysval_attr_addr(SYSTEM_VALUE_FRAG_COORD);
|
||||
|
||||
nir_def *w = load_frag_w(b, interp_loc);
|
||||
nir_def *w = load_frag_w(b, interp_loc, NULL);
|
||||
nir_def *coord = load_interpolated_input(b, intrin->def.num_components,
|
||||
addr,
|
||||
NAK_INTERP_MODE_PERSPECTIVE,
|
||||
|
|
@ -742,7 +745,7 @@ lower_fs_input_intrin(nir_builder *b, nir_intrinsic_instr *intrin, void *data)
|
|||
|
||||
nir_def *inv_w = NULL;
|
||||
if (interp_mode == NAK_INTERP_MODE_PERSPECTIVE)
|
||||
inv_w = nir_frcp(b, load_frag_w(b, interp_loc));
|
||||
inv_w = nir_frcp(b, load_frag_w(b, interp_loc, offset));
|
||||
|
||||
nir_def *res = load_interpolated_input(b, intrin->def.num_components,
|
||||
addr, interp_mode, interp_loc,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue