summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci/ignore-image-argb32.txt1
-rw-r--r--.gitlab-ci/ignore-image-rgb24.txt11
-rw-r--r--.gitlab-ci/ignore-quartz-rgb24.txt7
-rw-r--r--.gitlab-ci/ignore-recording-rgb24.txt8
-rw-r--r--.gitlab-ci/ignore-xcb-fallback-rgb24.txt6
-rw-r--r--.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt6
-rw-r--r--.gitlab-ci/ignore-xcb-rgb24.txt4
-rw-r--r--.gitlab-ci/ignore-xcb-window&-rgb24.txt3
-rw-r--r--.gitlab-ci/ignore-xcb-window-rgb24.txt1
-rw-r--r--.gitlab-ci/ignore-xlib-fallback-rgb24.txt4
-rw-r--r--.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt4
-rw-r--r--.gitlab-ci/ignore-xlib-rgb24.txt3
-rw-r--r--.gitlab-ci/ignore-xlib-window-rgb24.txt2
-rw-r--r--test/pdiff/pdiff.c38
14 files changed, 72 insertions, 26 deletions
diff --git a/.gitlab-ci/ignore-image-argb32.txt b/.gitlab-ci/ignore-image-argb32.txt
index 84a246f17..c5b96d732 100644
--- a/.gitlab-ci/ignore-image-argb32.txt
+++ b/.gitlab-ci/ignore-image-argb32.txt
@@ -18,3 +18,4 @@ text-antialias-subpixel-vrgb
text-pattern
text-rotate
text-unhinted-metrics
+user-font-mask
diff --git a/.gitlab-ci/ignore-image-rgb24.txt b/.gitlab-ci/ignore-image-rgb24.txt
index 2ed564551..9017df695 100644
--- a/.gitlab-ci/ignore-image-rgb24.txt
+++ b/.gitlab-ci/ignore-image-rgb24.txt
@@ -1,13 +1,23 @@
+bug-source-cu
clip-text
culled-glyphs
+dash-zero-length
+degenerate-path
extended-blend-alpha-mask
+fill-and-stroke
+fill-missed-stop
+finer-grained-fallbacks
ft-show-glyphs-positioning
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
+gradient-alpha
+gradient-constant-alpha
halo-transform
+new-sub-path
overlapping-glyphs
record1414x-select-font-face
record1414x-text-transform
+rel-path
shifted-operator
show-glyphs-advance
subsurface
@@ -20,3 +30,4 @@ text-antialias-subpixel-vrgb
text-pattern
text-rotate
text-unhinted-metrics
+user-font-mask
diff --git a/.gitlab-ci/ignore-quartz-rgb24.txt b/.gitlab-ci/ignore-quartz-rgb24.txt
index d2084bd31..58d226784 100644
--- a/.gitlab-ci/ignore-quartz-rgb24.txt
+++ b/.gitlab-ci/ignore-quartz-rgb24.txt
@@ -2,17 +2,18 @@ bug-361
bug-431
bug-448
bug-image-compositor
+bug-source-cu
coverage-rhombus
culled-glyphs
-extended-blend
extended-blend-alpha
extended-blend-alpha-mask
extended-blend-mask
-extended-blend-solid
extended-blend-solid-alpha
+fill-missed-stop
ft-show-glyphs-positioning
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
+gradient-alpha
negative-stride-image
operator-www
radial-gradient
@@ -41,6 +42,8 @@ record-replay-extend-reflect
record-replay-extend-repeat
record-select-font-face
record-text-transform
+rel-path
+set-source
shifted-operator
simple-edge
subsurface
diff --git a/.gitlab-ci/ignore-recording-rgb24.txt b/.gitlab-ci/ignore-recording-rgb24.txt
index 9ad61875d..39ba6df2e 100644
--- a/.gitlab-ci/ignore-recording-rgb24.txt
+++ b/.gitlab-ci/ignore-recording-rgb24.txt
@@ -3,12 +3,19 @@ clear-source
clip-text
coverage-rectangles
culled-glyphs
+dash-zero-length
+degenerate-path
extended-blend-alpha-mask
+fill-and-stroke
+fill-missed-stop
finer-grained-fallbacks
ft-show-glyphs-positioning
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
+gradient-alpha
+gradient-constant-alpha
halo-transform
+new-sub-path
overlapping-glyphs
pthread-same-source
record1414x-fill-alpha
@@ -22,6 +29,7 @@ recording-surface-extend-reflect
recording-surface-extend-repeat
recording-surface-over
recording-surface-source
+rel-path
scale-offset-similar
show-glyphs-advance
subsurface
diff --git a/.gitlab-ci/ignore-xcb-fallback-rgb24.txt b/.gitlab-ci/ignore-xcb-fallback-rgb24.txt
index 902ffa63d..9c4cd185e 100644
--- a/.gitlab-ci/ignore-xcb-fallback-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-fallback-rgb24.txt
@@ -1,15 +1,21 @@
clip-text
coverage-intersecting-triangles
culled-glyphs
+dash-zero-length
+degenerate-path
extended-blend-alpha-mask
fallback
+fill-missed-stop
ft-show-glyphs-positioning
ft-text-vertical-layout-type1
ft-text-vertical-layout-type3
halo-transform
+new-sub-path
overlapping-glyphs
record1414x-select-font-face
record1414x-text-transform
+record-replay-extend-pad
+rel-path
show-glyphs-advance
subsurface
subsurface-scale
diff --git a/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt b/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt
index 1578b7e9a..c2d889e19 100644
--- a/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt
@@ -8,11 +8,15 @@ clip-stroke-unbounded
clip-twice
coverage-intersecting-triangles
culled-glyphs
+dash-zero-length
+degenerate-path
extended-blend-alpha-mask
fallback
+fill-missed-stop
ft-text-vertical-layout-type1
hatchings
mask
+new-sub-path
operator-source
radial-gradient
radial-gradient-mask
@@ -25,8 +29,10 @@ recording-surface-extend-none
recording-surface-over
record-neg-extents-bounded
record-paint-alpha-solid-clip
+record-replay-extend-pad
record-replay-extend-reflect
record-replay-extend-repeat
+rel-path
rotated-clip
text-antialias-subpixel
text-antialias-subpixel-bgr
diff --git a/.gitlab-ci/ignore-xcb-rgb24.txt b/.gitlab-ci/ignore-xcb-rgb24.txt
index 6baceeb65..cbb1b2d37 100644
--- a/.gitlab-ci/ignore-xcb-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-rgb24.txt
@@ -3,7 +3,6 @@ arc-looping-dash
bug-51910
bug-84115
bug-image-compositor
-bug-source-cu
bug-spline
caps-05
caps-1
@@ -54,8 +53,6 @@ partial-clip-text-bottom
partial-clip-text-left
partial-coverage-reference
partial-coverage-three-quarter-reference
-push-group
-push-group-color
radial-gradient
radial-gradient-mask
radial-gradient-mask-source
@@ -115,6 +112,7 @@ text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
text-glyph-range
+text-pattern
text-rotate
text-transform
tighten-bounds
diff --git a/.gitlab-ci/ignore-xcb-window&-rgb24.txt b/.gitlab-ci/ignore-xcb-window&-rgb24.txt
index 8f6f96d5c..10b9c9c3a 100644
--- a/.gitlab-ci/ignore-xcb-window&-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-window&-rgb24.txt
@@ -46,8 +46,6 @@ partial-clip-text-bottom
partial-clip-text-left
partial-coverage-reference
partial-coverage-three-quarter-reference
-push-group
-push-group-color
radial-outer-focus
record1414x-fill-alpha
record1414x-self-intersecting
@@ -102,6 +100,7 @@ text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
text-glyph-range
+text-pattern
text-rotate
text-transform
tighten-bounds
diff --git a/.gitlab-ci/ignore-xcb-window-rgb24.txt b/.gitlab-ci/ignore-xcb-window-rgb24.txt
index 8f6f96d5c..26df57963 100644
--- a/.gitlab-ci/ignore-xcb-window-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-window-rgb24.txt
@@ -102,6 +102,7 @@ text-antialias-subpixel-rgb
text-antialias-subpixel-vbgr
text-antialias-subpixel-vrgb
text-glyph-range
+text-pattern
text-rotate
text-transform
tighten-bounds
diff --git a/.gitlab-ci/ignore-xlib-fallback-rgb24.txt b/.gitlab-ci/ignore-xlib-fallback-rgb24.txt
index d86d694a1..f4effb215 100644
--- a/.gitlab-ci/ignore-xlib-fallback-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-fallback-rgb24.txt
@@ -28,10 +28,12 @@ dash-infinite-loop
dash-scale
dash-zero-length
degenerate-curve-to
+degenerate-path
degenerate-pen
degenerate-rel-curve-to
extended-blend-alpha-mask
fallback
+fill-missed-stop
filter-bilinear-extents
finer-grained-fallbacks
font-matrix-translation
@@ -52,6 +54,7 @@ line-width-tolerance
long-dashed-lines
mask-transformed-image
mask-transformed-similar
+new-sub-path
operator-alpha-alpha
over-above-source
over-around-source
@@ -71,6 +74,7 @@ recording-surface-extend-none
recording-surface-over
rectilinear-miter-limit
reflected-stroke
+rel-path
select-font-face
self-copy
shifted-operator
diff --git a/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt b/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt
index a5f0ec34f..fc31fb370 100644
--- a/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt
@@ -7,11 +7,14 @@ clip-text
coverage-intersecting-triangles
culled-glyphs
curve-to-as-line-to
+dash-zero-length
+degenerate-path
extended-blend-alpha-mask
fallback
fill-and-stroke
fill-and-stroke-alpha
fill-and-stroke-alpha-add
+fill-missed-stop
finer-grained-fallbacks
ft-show-glyphs-positioning
ft-text-vertical-layout-type1
@@ -22,6 +25,7 @@ infinite-join
large-twin-antialias-mixed
leaky-polygon
mask
+new-sub-path
operator-clear
operator-source
overlapping-glyphs
diff --git a/.gitlab-ci/ignore-xlib-rgb24.txt b/.gitlab-ci/ignore-xlib-rgb24.txt
index 0a4c9f616..b7b11523b 100644
--- a/.gitlab-ci/ignore-xlib-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-rgb24.txt
@@ -4,7 +4,6 @@ bug-51910
bug-84115
bug-extents
bug-image-compositor
-bug-source-cu
bug-spline
caps-joins-05
caps-joins-curve
@@ -76,8 +75,6 @@ partial-coverage-reference
partial-coverage-three-quarter-reference
path-stroke-twice
pthread-show-text
-push-group
-push-group-color
radial-gradient
radial-gradient-mask
radial-gradient-mask-source
diff --git a/.gitlab-ci/ignore-xlib-window-rgb24.txt b/.gitlab-ci/ignore-xlib-window-rgb24.txt
index 814bd7da6..ac83dd920 100644
--- a/.gitlab-ci/ignore-xlib-window-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-window-rgb24.txt
@@ -73,8 +73,6 @@ partial-coverage-reference
partial-coverage-three-quarter-reference
path-stroke-twice
pthread-show-text
-push-group
-push-group-color
radial-outer-focus
record1414x-fill-alpha
record1414x-select-font-face
diff --git a/test/pdiff/pdiff.c b/test/pdiff/pdiff.c
index 6e05552d6..119369858 100644
--- a/test/pdiff/pdiff.c
+++ b/test/pdiff/pdiff.c
@@ -17,6 +17,7 @@
#include "config.h"
#include "lpyramid.h"
+#include <assert.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
@@ -171,18 +172,21 @@ XYZToLAB (float x, float y, float z, float *L, float *A, float *B)
}
static uint32_t
-_get_pixel (const uint32_t *data, int i)
+_get_pixel (const uint32_t *data, int i, cairo_format_t format)
{
- return data[i];
+ if (format == CAIRO_FORMAT_ARGB32)
+ return data[i];
+ else
+ return data[i] | 0xff000000;
}
static unsigned char
-_get_red (const uint32_t *data, int i)
+_get_red (const uint32_t *data, int i, cairo_format_t format)
{
uint32_t pixel;
uint8_t alpha;
- pixel = _get_pixel (data, i);
+ pixel = _get_pixel (data, i, format);
alpha = (pixel & 0xff000000) >> 24;
if (alpha == 0)
return 0;
@@ -191,12 +195,12 @@ _get_red (const uint32_t *data, int i)
}
static unsigned char
-_get_green (const uint32_t *data, int i)
+_get_green (const uint32_t *data, int i, cairo_format_t format)
{
uint32_t pixel;
uint8_t alpha;
- pixel = _get_pixel (data, i);
+ pixel = _get_pixel (data, i, format);
alpha = (pixel & 0xff000000) >> 24;
if (alpha == 0)
return 0;
@@ -205,12 +209,12 @@ _get_green (const uint32_t *data, int i)
}
static unsigned char
-_get_blue (const uint32_t *data, int i)
+_get_blue (const uint32_t *data, int i, cairo_format_t format)
{
uint32_t pixel;
uint8_t alpha;
- pixel = _get_pixel (data, i);
+ pixel = _get_pixel (data, i, format);
alpha = (pixel & 0xff000000) >> 24;
if (alpha == 0)
return 0;
@@ -269,6 +273,7 @@ pdiff_compare (cairo_surface_t *surface_a,
float F_freq[MAX_PYR_LEVELS - 2];
float csf_max;
const uint32_t *data_a, *data_b;
+ cairo_format_t format_a, format_b;
unsigned int pixels_failed;
@@ -277,6 +282,11 @@ pdiff_compare (cairo_surface_t *surface_a,
if (w < 3 || h < 3) /* too small for the Laplacian convolution */
return -1;
+ format_a = cairo_image_surface_get_format (surface_a);
+ format_b = cairo_image_surface_get_format (surface_b);
+ assert (format_a == CAIRO_FORMAT_RGB24 || format_a == CAIRO_FORMAT_ARGB32);
+ assert (format_b == CAIRO_FORMAT_RGB24 || format_b == CAIRO_FORMAT_ARGB32);
+
aX = xmalloc (dim * sizeof (float));
aY = xmalloc (dim * sizeof (float));
aZ = xmalloc (dim * sizeof (float));
@@ -297,15 +307,15 @@ pdiff_compare (cairo_surface_t *surface_a,
for (x = 0; x < w; x++) {
float r, g, b, l;
i = x + y * w;
- r = powf(_get_red (data_a, i) / 255.0f, gamma);
- g = powf(_get_green (data_a, i) / 255.0f, gamma);
- b = powf(_get_blue (data_a, i) / 255.0f, gamma);
+ r = powf(_get_red (data_a, i, format_a) / 255.0f, gamma);
+ g = powf(_get_green (data_a, i, format_a) / 255.0f, gamma);
+ b = powf(_get_blue (data_a, i, format_a) / 255.0f, gamma);
AdobeRGBToXYZ(r,g,b,&aX[i],&aY[i],&aZ[i]);
XYZToLAB(aX[i], aY[i], aZ[i], &l, &aA[i], &aB[i]);
- r = powf(_get_red (data_b, i) / 255.0f, gamma);
- g = powf(_get_green (data_b, i) / 255.0f, gamma);
- b = powf(_get_blue (data_b, i) / 255.0f, gamma);
+ r = powf(_get_red (data_b, i, format_b) / 255.0f, gamma);
+ g = powf(_get_green (data_b, i, format_b) / 255.0f, gamma);
+ b = powf(_get_blue (data_b, i, format_b) / 255.0f, gamma);
AdobeRGBToXYZ(r,g,b,&bX[i],&bY[i],&bZ[i]);
XYZToLAB(bX[i], bY[i], bZ[i], &l, &bA[i], &bB[i]);