ac/nir/ngg: Fix packing 16-bit MS outputs.

Fixes: 9f36fba9be

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Georg Lehmann <dadschoorse@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28765>
This commit is contained in:
Timur Kristóf 2024-04-16 16:54:55 +02:00
parent c6c9da0336
commit 65f5f1559f

View file

@ -3908,15 +3908,14 @@ ms_store_arrayed_output(nir_builder *b,
}
u_foreach_bit(comp, write_mask_32) {
nir_def *val = nir_channel(b, store_val, comp);
unsigned idx = io_sem.location * 4 + comp + component_offset;
nir_def *val = nir_channel(b, store_val, comp);
nir_def *v = nir_load_var(b, s->out_variables[idx]);
if (lo_16b) {
nir_def *v = nir_channel(b, nir_load_var(b, s->out_variables[idx]), comp + component_offset);
nir_def *var_hi = nir_unpack_32_2x16_split_y(b, v);
val = nir_pack_32_2x16_split(b, val, var_hi);
} else if (hi_16b) {
nir_def *v = nir_channel(b, nir_load_var(b, s->out_variables[idx]), comp + component_offset);
nir_def *var_lo = nir_unpack_32_2x16_split_x(b, v);
val = nir_pack_32_2x16_split(b, var_lo, val);
}