From 48c1c6247ccf4039af872947d2d550f434cc728d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 17 Nov 2024 11:30:56 -0500 Subject: [PATCH] radeonsi: handle nir_intrinsic_component in kill_ps_outputs The assertion was failing with AMD_DEBUG=mono. Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/radeonsi/si_shader.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 724787571b4..067becb1baf 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -1748,8 +1748,8 @@ static bool kill_ps_outputs_cb(struct nir_builder *b, nir_instr *instr, void *_k } /* Color outputs. */ - unsigned comp_mask = BITFIELD_MASK(intr->num_components); - assert(nir_intrinsic_component(intr) == 0); + unsigned component = nir_intrinsic_component(intr); + unsigned comp_mask = BITFIELD_RANGE(component, intr->num_components); unsigned cb_shader_mask = ac_get_cb_shader_mask(key->ps.part.epilog.spi_shader_col_format); /* Preserve alpha if ALPHA_TESTING is enabled. */ @@ -1779,7 +1779,7 @@ static bool kill_ps_outputs_cb(struct nir_builder *b, nir_instr *instr, void *_k nir_def *new_value = intr->src[0].ssa; nir_def *undef = nir_undef(b, 1, new_value->bit_size); - unsigned kill_mask = ~output_mask & comp_mask; + unsigned kill_mask = (~output_mask & comp_mask) >> component; u_foreach_bit(i, kill_mask) { new_value = nir_vector_insert_imm(b, new_value, undef, i); }