diff --git a/src/panfrost/compiler/bifrost_compile.c b/src/panfrost/compiler/bifrost_compile.c index 5f2f3a971a1..1fe8d30de2c 100644 --- a/src/panfrost/compiler/bifrost_compile.c +++ b/src/panfrost/compiler/bifrost_compile.c @@ -837,15 +837,18 @@ bi_emit_fragment_out(bi_builder *b, nir_intrinsic_instr *instr) nir_alu_type T = nir_intrinsic_src_type(instr); bi_index rgba = bi_src_index(&instr->src[0]); - bi_index alpha = (T == nir_type_float16) - ? bi_half(bi_extract(b, rgba, 1), true) - : (T == nir_type_float32) ? bi_extract(b, rgba, 3) - : bi_dontcare(b); + bi_index alpha; - /* Don't read out-of-bounds */ - if (nir_src_num_components(instr->src[0]) < 4) + if (nir_src_num_components(instr->src[0]) < 4) { + /* Don't read out-of-bounds */ alpha = bi_imm_f32(1.0); - + } else if (T == nir_type_float16) { + alpha = bi_half(bi_extract(b, rgba, 1), true); + } else if (T == nir_type_float32) { + alpha = bi_extract(b, rgba, 3); + } else { + alpha = bi_dontcare(b); + } bi_emit_atest(b, alpha); }