From: Alyssa Rosenzweig Date: Tue, 2 Jun 2020 00:34:34 +0000 (-0400) Subject: panfrost: Explicitly convert to 32-bit for logic-ops X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3e4a0c2bca32fcf9f13363fa0c54b6a9b70c086b;p=mesa.git panfrost: Explicitly convert to 32-bit for logic-ops Signed-off-by: Alyssa Rosenzweig Reported-by: Icecream95 Fixes: 19b4e586f62 ("panfrost: Switch to pan_lower_framebuffer") Part-of: --- diff --git a/src/gallium/drivers/panfrost/nir/nir_lower_blend.c b/src/gallium/drivers/panfrost/nir/nir_lower_blend.c index f46f635da48..13cef5d6e14 100644 --- a/src/gallium/drivers/panfrost/nir/nir_lower_blend.c +++ b/src/gallium/drivers/panfrost/nir/nir_lower_blend.c @@ -215,6 +215,11 @@ nir_blend_logicop( const struct util_format_description *format_desc = util_format_description(options.format); + if (options.half) { + src = nir_f2f32(b, src); + dst = nir_f2f32(b, dst); + } + assert(src->num_components <= 4); assert(dst->num_components <= 4); @@ -235,7 +240,12 @@ nir_blend_logicop( out = nir_iand(b, out, nir_build_imm(b, 4, 32, mask)); } - return nir_format_unorm_to_float(b, out, bits); + out = nir_format_unorm_to_float(b, out, bits); + + if (options.half) + out = nir_f2f16(b, out); + + return out; } /* Given a blend state, the source color, and the destination color,