panfrost: Fix fixed-function blend on bifrost
authorBoris Brezillon <boris.brezillon@collabora.com>
Fri, 9 Oct 2020 12:00:28 +0000 (14:00 +0200)
committerBoris Brezillon <boris.brezillon@collabora.com>
Thu, 15 Oct 2020 06:05:23 +0000 (08:05 +0200)
The conversion from a 32b float to a 16b fixed-point number was wrong.

Fixes: 8389976b7c09 ("panfrost: XML-ify the blend descriptors")
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>

src/gallium/drivers/panfrost/pan_cmdstream.c

index 52f3abc..e95e414 100644 (file)
@@ -311,7 +311,7 @@ panfrost_emit_bifrost_blend(struct panfrost_batch *batch,
                                 cfg.bifrost.equation = blend[i].equation.equation;
 
                                 /* Fixed point constant */
-                                u16 constant = blend[i].equation.constant / ((1 << chan_size) - 1);
+                                u16 constant = blend[i].equation.constant * ((1 << chan_size) - 1);
                                 constant <<= 16 - chan_size;
                                 cfg.bifrost.constant = constant;