[gtk/gtk-4-4] reftest-compare: Treat colour channels as undefined if alpha is zero
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/gtk-4-4] reftest-compare: Treat colour channels as undefined if alpha is zero
- Date: Sun, 31 Oct 2021 21:52:12 +0000 (UTC)
commit e67e51be14f1d96d39481e9beb8b4e18f68d8af8
Author: Simon McVittie <smcv debian org>
Date: Thu Sep 2 22:34:14 2021 +0100
reftest-compare: Treat colour channels as undefined if alpha is zero
If the alpha channel is zero, it doesn't matter what the values of the
red, green and blue channels are: the pixel is still fully transparent.
On most architectures, fully transparent pixels end up all-zeroes
(fully transparent black), matching what's in the reference PNG file;
but on mips*el the blend-difference and blend-normal tests get all-ones
(fully transparent white) and a test failure.
Resolves: https://gitlab.gnome.org/GNOME/gtk/-/issues/4227
Signed-off-by: Simon McVittie <smcv debian org>
testsuite/reftests/reftest-compare.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
---
diff --git a/testsuite/reftests/reftest-compare.c b/testsuite/reftests/reftest-compare.c
index 5c682e1591..5bccb697b8 100644
--- a/testsuite/reftests/reftest-compare.c
+++ b/testsuite/reftests/reftest-compare.c
@@ -104,7 +104,12 @@ buffer_diff_core (const guchar *buf_a,
/* check if the pixels are the same */
if (row_a[x] == row_b[x])
continue;
-
+
+ /* even if they're not literally the same, fully-transparent
+ * pixels are effectively the same regardless of colour */
+ if ((row_a[x] & 0xff000000) == 0 && (row_b[x] & 0xff000000) == 0)
+ continue;
+
if (diff == NULL)
{
diff = cairo_image_surface_create (CAIRO_FORMAT_RGB24,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]