4.4.0: gsk blend-normal, blend-difference tests fail on some architectures: colour of fully-transparent pixels differs
While trying to herd GTK 4.4.0 into Debian so we can upgrade to GNOME 40, I'm trying to resolve test failures in gsk.
On mipsel and mips64el, using swrast_dri.so
(I think that means llvmpipe, which we'll be using on all architectures because our autobuilders don't have access to a real GPU?), I'm seeing failures for blend-normal
and blend-difference
, under both gl
and ngl
. The PNG images that are generated are identical to the reference (I mean literally identical, the same bytes), but the diff-images report differences in the parts of the image that are fully transparent.
Adding some debug indicates that the difference is: the Cairo surfaces being compared are 32-bit ARGB, and one surface is fully transparent black (0x00000000), but the other is fully transparent white (0x00ffffff). Obviously this has no practical effect, and while saving to PNG, the difference is optimized away during compression (making this particularly troublesome to pin down by comparing PNGs!) - but it makes the test fail.