From 3e4a0c2bca32fcf9f13363fa0c54b6a9b70c086b Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 1 Jun 2020 20:34:34 -0400 Subject: 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: --- src/gallium/drivers/panfrost/nir/nir_lower_blend.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/gallium/drivers/panfrost/nir') 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, -- cgit v1.2.3