From 4287358f59b65deaf953934c8d88362de7c864d6 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sat, 13 Apr 2024 13:34:49 +0200 Subject: [PATCH] ac/nir: explicitly use pack_half_2x16_rtz rtz matters for constant folding. Reviewed-by: Alyssa Rosenzweig Reviewed-by: Rhys Perry Part-of: --- src/amd/common/ac_nir_lower_ps.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/amd/common/ac_nir_lower_ps.c b/src/amd/common/ac_nir_lower_ps.c index d5e62a90622..dfd7d3730b2 100644 --- a/src/amd/common/ac_nir_lower_ps.c +++ b/src/amd/common/ac_nir_lower_ps.c @@ -547,7 +547,7 @@ emit_ps_color_export(nir_builder *b, lower_ps_state *s, gl_frag_result slot, uns switch (spi_shader_col_format) { case V_028714_SPI_SHADER_FP16_ABGR: if (type_size == 32) - pack_op = nir_op_pack_half_2x16; + pack_op = nir_op_pack_half_2x16_rtz_split; break; case V_028714_SPI_SHADER_UINT16_ABGR: if (type_size == 32) { @@ -606,9 +606,13 @@ emit_ps_color_export(nir_builder *b, lower_ps_state *s, gl_frag_result slot, uns lo = lo ? lo : nir_undef(b, 1, type_size); hi = hi ? hi : nir_undef(b, 1, type_size); - nir_def *vec = nir_vec2(b, lo, hi); - outputs[i] = nir_build_alu1(b, pack_op, vec); + if (nir_op_infos[pack_op].num_inputs == 2) { + outputs[i] = nir_build_alu2(b, pack_op, lo, hi); + } else { + nir_def *vec = nir_vec2(b, lo, hi); + outputs[i] = nir_build_alu1(b, pack_op, vec); + } if (s->options->gfx_level >= GFX11) write_mask |= BITFIELD_BIT(i);