[cairo-commit] 4 commits - .gitlab-ci/ignore-image16-rgb24.txt .gitlab-ci/ignore-image-argb32.txt .gitlab-ci/ignore-image-rgb24.txt .gitlab-ci/ignore-pdf-argb32.txt .gitlab-ci/ignore-pdf-rgb24.txt .gitlab-ci/ignore-quartz-argb32.txt .gitlab-ci/ignore-quartz-rgb24.txt .gitlab-ci/ignore-recording-argb32.txt .gitlab-ci/ignore-recording-rgb24.txt .gitlab-ci/ignore-script-argb32.txt .gitlab-ci/ignore-svg11-argb32.txt .gitlab-ci/ignore-svg11-rgb24.txt .gitlab-ci/ignore-xcb-argb32.txt .gitlab-ci/ignore-xcb-fallback-rgb24.txt .gitlab-ci/ignore-xcb-render-0-0-argb32.txt .gitlab-ci/ignore-xcb-render-0-0-rgb24.txt .gitlab-ci/ignore-xcb-rgb24.txt .gitlab-ci/ignore-xcb-window&-rgb24.txt .gitlab-ci/ignore-xcb-window-rgb24.txt .gitlab-ci/ignore-xlib-argb32.txt .gitlab-ci/ignore-xlib-fallback-rgb24.txt .gitlab-ci/ignore-xlib-render-0-0-rgb24.txt .gitlab-ci/ignore-xlib-rgb24.txt .gitlab-ci/ignore-xlib-window-rgb24.txt test/buffer-diff.c test/pdiff

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Sep 17 13:48:48 UTC 2021


 .gitlab-ci/ignore-image-argb32.txt          |   11 +
 .gitlab-ci/ignore-image-rgb24.txt           |   63 ++++++++++-
 .gitlab-ci/ignore-image16-rgb24.txt         |  147 +++++++++++++++-----------
 .gitlab-ci/ignore-pdf-argb32.txt            |   44 +------
 .gitlab-ci/ignore-pdf-rgb24.txt             |   84 +++++++--------
 .gitlab-ci/ignore-quartz-argb32.txt         |   33 +++--
 .gitlab-ci/ignore-quartz-rgb24.txt          |   74 +++++++++----
 .gitlab-ci/ignore-recording-argb32.txt      |   20 +--
 .gitlab-ci/ignore-recording-rgb24.txt       |   70 ++++++++++--
 .gitlab-ci/ignore-script-argb32.txt         |  156 ++++------------------------
 .gitlab-ci/ignore-svg11-argb32.txt          |   31 +----
 .gitlab-ci/ignore-svg11-rgb24.txt           |   87 +++++++++++----
 .gitlab-ci/ignore-xcb-argb32.txt            |   38 +++---
 .gitlab-ci/ignore-xcb-fallback-rgb24.txt    |   61 +++++++++-
 .gitlab-ci/ignore-xcb-render-0-0-argb32.txt |   16 +-
 .gitlab-ci/ignore-xcb-render-0-0-rgb24.txt  |   73 ++++++++++---
 .gitlab-ci/ignore-xcb-rgb24.txt             |  148 ++++++++++----------------
 .gitlab-ci/ignore-xcb-window&-rgb24.txt     |  135 +++++++++---------------
 .gitlab-ci/ignore-xcb-window-rgb24.txt      |  133 +++++++++--------------
 .gitlab-ci/ignore-xlib-argb32.txt           |   60 +++++-----
 .gitlab-ci/ignore-xlib-fallback-rgb24.txt   |  130 +++++++++--------------
 .gitlab-ci/ignore-xlib-render-0-0-rgb24.txt |   69 +++++++++---
 .gitlab-ci/ignore-xlib-rgb24.txt            |  151 +++++++++++----------------
 .gitlab-ci/ignore-xlib-window-rgb24.txt     |  141 +++++++++++--------------
 test/buffer-diff.c                          |   43 +++++--
 test/pdiff/pdiff.c                          |   38 ++++--
 26 files changed, 1057 insertions(+), 999 deletions(-)

New commits:
commit 4f761bd5aae51a2ea9cc45931e993a46dd05c93a
Merge: 994e33215 664751159
Author: Uli Schlachter <psychon at znc.in>
Date:   Fri Sep 17 13:48:46 2021 +0000

    Merge branch 'fix-core-diff' into 'master'
    
    Explicitly handle image formats in buffer_diff_core and pdiff_compare
    
    Closes #25
    
    See merge request cairo/cairo!243

commit 6647511593ce0ab1de3dbd514796e926e232d644
Author: Manuel Stoeckl <code at mstoeckl.com>
Date:   Wed Aug 25 21:08:36 2021 -0400

    test: explicitly handle image formats in buffer_diff_core
    
    In practice, the A and B images may be any mixture of RGB24 and
    ARGB32 formats, so this change accepts all combinations of these
    types, and converts the pixel values to a common (ARGB32) format
    as needed.
    
    Some of the newly added test failures are cases where the image
    output is RGB24, but the matching reference image is ARGB32 with
    noticeable transparency. Some of the newly passing tests are cases
    where the unused 'alpha' channel of an RGB24 image was not equal
    to 0xff, and the previous code had incorrectly used this channel
    in max_diff calculations.

diff --git a/.gitlab-ci/ignore-image-rgb24.txt b/.gitlab-ci/ignore-image-rgb24.txt
index 9017df695..3b9f32f9f 100644
--- a/.gitlab-ci/ignore-image-rgb24.txt
+++ b/.gitlab-ci/ignore-image-rgb24.txt
@@ -1,26 +1,65 @@
+a1-clip-fill-rule
+alpha-similar
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
+bug-361
+bug-431
 bug-source-cu
+clip-device-offset
+clip-fill-rule-pixel-aligned
 clip-text
+clip-unbounded
 culled-glyphs
 dash-zero-length
 degenerate-path
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
 fill-and-stroke
+fill-empty
 fill-missed-stop
 finer-grained-fallbacks
+ft-color-font
 ft-show-glyphs-positioning
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
 gradient-alpha
 gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 halo-transform
+image-surface-source
+linear-gradient-one-stop
+mask-ctm
+mask-surface-ctm
 new-sub-path
+nil-surface
+overlapping-boxes
 overlapping-glyphs
+pass-through
+pdf-surface-source
+pixman-downscale-best-24
+pixman-rotate
+ps-surface-source
+radial-gradient-source
 record1414x-select-font-face
 record1414x-text-transform
+record-neg-extents-bounded
+record-neg-extents-unbounded
+record-replay-extend-none
+record-replay-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
 rel-path
+scale-source-surface-paint
+set-source
 shifted-operator
 show-glyphs-advance
+source-surface-scale-paint
 subsurface
+subsurface-outside-target
 subsurface-scale
 text-antialias-subpixel
 text-antialias-subpixel-bgr
@@ -30,4 +69,7 @@ text-antialias-subpixel-vrgb
 text-pattern
 text-rotate
 text-unhinted-metrics
+thin-lines
 user-font-mask
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-image16-rgb24.txt b/.gitlab-ci/ignore-image16-rgb24.txt
index 0e2533821..7b1c2e906 100644
--- a/.gitlab-ci/ignore-image16-rgb24.txt
+++ b/.gitlab-ci/ignore-image16-rgb24.txt
@@ -1,9 +1,15 @@
 a1-bug
+a1-clip-fill-rule
 a1-tiger
 aliasing
+alpha-similar
 arc-direction
 arc-looping-dash
+big-empty-box
+big-empty-triangle
 big-line
+big-little-box
+bitmap-font
 bug-84115
 bug-bo-ricotz
 bug-extents
@@ -19,11 +25,13 @@ caps-joins-alpha
 caps-joins-curve
 caps-tails-curve
 clear-source
+clip-device-offset
 clip-disjoint
 clip-disjoint-quad
 clip-fill
 clip-fill-eo-unbounded
 clip-fill-nz-unbounded
+clip-fill-rule-pixel-aligned
 clip-image
 clip-intersect
 clip-operator
@@ -33,6 +41,7 @@ clip-stroke
 clip-stroke-unbounded
 clip-text
 clip-twice
+clip-unbounded
 close-path-current-point
 copy-path
 coverage-abutting
@@ -54,6 +63,8 @@ degenerate-curve-to
 degenerate-path
 degenerate-pen
 degenerate-rel-curve-to
+device-offset
+device-offset-positive
 drunkard-tails
 extended-blend
 extended-blend-alpha
@@ -69,6 +80,7 @@ fill-and-stroke
 fill-and-stroke-alpha
 fill-and-stroke-alpha-add
 fill-degenerate-sort-order
+fill-empty
 fill-image
 fill-missed-stop
 fill-rule
@@ -82,6 +94,8 @@ ft-text-vertical-layout-type3
 glyph-cache-pressure
 gradient-alpha
 gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 group-unaligned
 halo
 halo-transform
@@ -97,6 +111,7 @@ large-font
 large-twin-antialias-mixed
 leaky-dashed-stroke
 linear-gradient
+linear-gradient-one-stop
 linear-gradient-reflect
 linear-gradient-subset
 line-width-overlap-offset
@@ -115,6 +130,7 @@ mesh-pattern-fold
 mesh-pattern-overlap
 mesh-pattern-transformed
 new-sub-path
+nil-surface
 operator-source
 over-around-source
 overlapping-boxes
@@ -193,6 +209,7 @@ record-neg-extents-unbounded
 record-paint-alpha
 record-paint-alpha-clip
 record-paint-alpha-clip-mask
+record-replay-extend-none
 record-replay-extend-pad
 record-replay-extend-reflect
 record-replay-extend-repeat
@@ -207,6 +224,7 @@ rounded-rectangle-fill
 rounded-rectangle-stroke
 scale-offset-image
 scale-offset-similar
+scale-source-surface-paint
 select-font-face
 set-source
 shape-general-convex
@@ -221,11 +239,13 @@ smask-mask
 smask-paint
 smask-stroke
 smask-text
+source-surface-scale-paint
 spline-decomposition
 stroke-ctm-caps
 stroke-image
 stroke-pattern
 subsurface
+subsurface-outside-target
 subsurface-scale
 surface-pattern
 surface-pattern-operator
@@ -242,6 +262,7 @@ text-pattern
 text-rotate
 text-transform
 text-unhinted-metrics
+thin-lines
 tiger
 tighten-bounds
 transforms
diff --git a/.gitlab-ci/ignore-pdf-argb32.txt b/.gitlab-ci/ignore-pdf-argb32.txt
index bb7abf93a..cea0d4256 100644
--- a/.gitlab-ci/ignore-pdf-argb32.txt
+++ b/.gitlab-ci/ignore-pdf-argb32.txt
@@ -9,30 +9,15 @@ fallback
 filter-bilinear-extents
 filter-nearest-offset
 filter-nearest-transformed
-font-matrix-translation
 ft-show-glyphs-positioning
-ft-show-glyphs-table
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
-glyph-cache-pressure
-halo
 halo-transform
-inverse-text
-large-font
 linear-gradient-reflect
 mask
-operator-alpha-alpha
 overlapping-glyphs
-paint-with-alpha-clip
-partial-clip-text-bottom
-partial-clip-text-left
-pixman-downscale-best-24
 pixman-downscale-best-95
-pixman-downscale-bilinear-24
-pixman-downscale-fast-24
 pixman-downscale-fast-95
-pixman-downscale-good-24
-pixman-downscale-nearest-24
 pixman-downscale-nearest-95
 pthread-same-source
 pthread-show-text
@@ -44,32 +29,19 @@ radial-gradient-source
 record1414x-select-font-face
 record1414x-text-transform
 record2x-text-transform
-recording-surface-extend-reflect
-recording-surface-extend-repeat
-recording-surface-over
 record-replay-extend-reflect
-record-replay-extend-repeat
 rectilinear-dash
-rectilinear-miter-limit
 rectilinear-stroke
 rotate-clip-image-surface-paint
 rotate-image-surface-paint
-select-font-face
-self-copy
 show-glyphs-advance
-show-text-current-point
 smask-text
-smp-glyph
 surface-pattern
 surface-pattern-operator
 surface-pattern-scale-down
-text-glyph-range
 text-pattern
 text-rotate
-text-transform
 text-unhinted-metrics
 thin-lines
-trap-clip
 twin
-user-font-proxy
 user-font-rescale
diff --git a/.gitlab-ci/ignore-pdf-rgb24.txt b/.gitlab-ci/ignore-pdf-rgb24.txt
index 33b8694f6..380d37710 100644
--- a/.gitlab-ci/ignore-pdf-rgb24.txt
+++ b/.gitlab-ci/ignore-pdf-rgb24.txt
@@ -1,37 +1,44 @@
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
+bug-361
 bug-image-compositor
 clear-source
+clip-device-offset
+clip-fill-rule-pixel-aligned
 clip-text
 culled-glyphs
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
-extended-blend-solid
+fill-empty
 filter-bilinear-extents
 filter-nearest-offset
 filter-nearest-transformed
-font-matrix-translation
+ft-color-font
 ft-show-glyphs-positioning
-ft-show-glyphs-table
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
-glyph-cache-pressure
-halo
+gradient-zero-stops
+gradient-zero-stops-mask
 halo-transform
-inverse-text
-large-font
+image-surface-source
+linear-gradient-one-stop
 linear-gradient-reflect
 mask
-operator-alpha-alpha
+mask-ctm
+mask-surface-ctm
+nil-surface
+overlapping-boxes
 overlapping-glyphs
-paint-with-alpha-clip
-partial-clip-text-bottom
-partial-clip-text-left
-pixman-downscale-best-24
+pass-through
+pdf-surface-source
 pixman-downscale-best-95
-pixman-downscale-bilinear-24
-pixman-downscale-fast-24
 pixman-downscale-fast-95
-pixman-downscale-good-24
-pixman-downscale-nearest-24
 pixman-downscale-nearest-95
+pixman-rotate
+ps-surface-source
 pthread-same-source
 pthread-show-text
 radial-gradient
@@ -50,41 +57,30 @@ record2x-paint-alpha-clip-mask
 record2x-select-font-face
 record2x-text-transform
 record90-paint-alpha-clip
-record90-paint-alpha-clip-mask
 record90-select-font-face
-record90-text-transform
 recordflip-select-font-face
-recordflip-text-transform
 recordflip-whole-select-font-face
 recordflip-whole-self-intersecting
 recordflip-whole-text-transform
-recording-surface-extend-repeat
-recording-surface-over
 record-paint-alpha-clip
-record-replay-extend-reflect
-record-replay-extend-repeat
+record-replay-extend-pad
 record-select-font-face
-record-text-transform
 rectilinear-dash
-rectilinear-miter-limit
 rectilinear-stroke
 rel-path
 rotate-clip-image-surface-paint
 rotate-image-surface-paint
-select-font-face
-self-copy
+set-source
 show-glyphs-advance
-show-text-current-point
 smask-text
-smp-glyph
+source-surface-scale-paint
 surface-pattern
 surface-pattern-scale-down
-text-glyph-range
 text-pattern
 text-rotate
-text-transform
 text-unhinted-metrics
-trap-clip
+thin-lines
 twin
-user-font-proxy
 user-font-rescale
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-quartz-argb32.txt b/.gitlab-ci/ignore-quartz-argb32.txt
index e00077831..b09168133 100644
--- a/.gitlab-ci/ignore-quartz-argb32.txt
+++ b/.gitlab-ci/ignore-quartz-argb32.txt
@@ -14,6 +14,7 @@ ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
 negative-stride-image
 operator-www
+pdf-operators-text
 radial-gradient
 radial-gradient-mask
 radial-gradient-mask-source
diff --git a/.gitlab-ci/ignore-quartz-rgb24.txt b/.gitlab-ci/ignore-quartz-rgb24.txt
index 58d226784..277ad4bca 100644
--- a/.gitlab-ci/ignore-quartz-rgb24.txt
+++ b/.gitlab-ci/ignore-quartz-rgb24.txt
@@ -1,21 +1,46 @@
+a1-clip-fill-rule
+alpha-similar
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
 bug-361
 bug-431
 bug-448
 bug-image-compositor
 bug-source-cu
+clip-device-offset
+clip-fill-rule-pixel-aligned
+clip-unbounded
 coverage-rhombus
 culled-glyphs
-extended-blend-alpha
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
 extended-blend-mask
-extended-blend-solid-alpha
+fill-and-stroke
+fill-empty
 fill-missed-stop
 ft-show-glyphs-positioning
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
 gradient-alpha
+gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
+hatchings
+image-surface-source
+linear-gradient-one-stop
+mask-ctm
+mask-surface-ctm
 negative-stride-image
+nil-surface
 operator-www
+overlapping-boxes
+pass-through
+pdf-surface-source
+ps-surface-source
+quartz-surface-source
 radial-gradient
 radial-gradient-mask
 radial-gradient-mask-source
@@ -37,15 +62,18 @@ record-mesh
 record-neg-extents-bounded
 record-neg-extents-unbounded
 record-paint-alpha-clip-mask
+record-replay-extend-none
 record-replay-extend-pad
 record-replay-extend-reflect
 record-replay-extend-repeat
 record-select-font-face
 record-text-transform
 rel-path
+scale-source-surface-paint
 set-source
 shifted-operator
 simple-edge
+source-surface-scale-paint
 subsurface
 subsurface-scale
 text-antialias-subpixel
@@ -54,4 +82,5 @@ text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
 text-antialias-subpixel-vrgb
 text-unhinted-metrics
+thin-lines
 user-font-proxy
diff --git a/.gitlab-ci/ignore-recording-rgb24.txt b/.gitlab-ci/ignore-recording-rgb24.txt
index 39ba6df2e..90eb1d5fe 100644
--- a/.gitlab-ci/ignore-recording-rgb24.txt
+++ b/.gitlab-ci/ignore-recording-rgb24.txt
@@ -1,23 +1,52 @@
+a1-clip-fill-rule
+alpha-similar
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
+bug-361
+bug-431
 bug-source-cu
 clear-source
+clip-device-offset
+clip-fill-rule-pixel-aligned
 clip-text
+clip-unbounded
 coverage-rectangles
 culled-glyphs
 dash-zero-length
 degenerate-path
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
 fill-and-stroke
+fill-empty
 fill-missed-stop
 finer-grained-fallbacks
+ft-color-font
 ft-show-glyphs-positioning
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
 gradient-alpha
 gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 halo-transform
+image-surface-source
+linear-gradient-one-stop
+mask-ctm
+mask-surface-ctm
 new-sub-path
+nil-surface
+overlapping-boxes
 overlapping-glyphs
+pass-through
+pdf-surface-source
+pixman-downscale-best-24
+pixman-rotate
+ps-surface-source
 pthread-same-source
+radial-gradient-source
 record1414x-fill-alpha
 record1414x-select-font-face
 record1414x-text-transform
@@ -29,10 +58,20 @@ recording-surface-extend-reflect
 recording-surface-extend-repeat
 recording-surface-over
 recording-surface-source
+record-neg-extents-bounded
+record-neg-extents-unbounded
+record-replay-extend-none
+record-replay-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
 rel-path
 scale-offset-similar
+scale-source-surface-paint
+set-source
 show-glyphs-advance
+source-surface-scale-paint
 subsurface
+subsurface-outside-target
 subsurface-scale
 text-antialias-subpixel
 text-antialias-subpixel-bgr
@@ -42,3 +81,6 @@ text-antialias-subpixel-vrgb
 text-pattern
 text-rotate
 text-unhinted-metrics
+thin-lines
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-script-argb32.txt b/.gitlab-ci/ignore-script-argb32.txt
index dd8b6ee8c..8ea8607c2 100644
--- a/.gitlab-ci/ignore-script-argb32.txt
+++ b/.gitlab-ci/ignore-script-argb32.txt
@@ -1,124 +1,44 @@
-a1-bug
 a1-fill
-arc-looping-dash
 bilevel-image
 bitmap-font
-bug-51910
-bug-84115
-bug-seams
-caps
-caps-05
-caps-1
-caps-2
-caps-joins-05
-caps-joins-1
-caps-joins-2
-caps-joins-curve
-caps-sub-paths
-caps-tails-curve
-checkerboard
 clear-source
 clip-device-offset
-clip-disjoint-quad
-clip-image
-clip-mixed-antialias
-clip-polygons
-clip-push-group
 clip-text
-close-path
-close-path-current-point
 composite-integer-translate-over-repeat
-copy-path
 coverage-abutting
-coverage-intersecting-quads
 coverage-intersecting-triangles
 coverage-rectangles
 culled-glyphs
-dash-caps-joins
-dash-curve
-dash-infinite-loop
-dash-scale
-dash-state
-degenerate-curve-to
-degenerate-linear-gradient
-degenerate-pen
-degenerate-radial-gradient
-degenerate-rel-curve-to
 device-offset-scale
-extend-pad-border
-fill-and-stroke-alpha
-fill-and-stroke-alpha-add
-filter-bilinear-extents
-font-matrix-translation
 ft-show-glyphs-positioning
-ft-show-glyphs-table
 ft-text-antialias-none
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
-glyph-cache-pressure
-halo
 halo-transform
-huge-radial
 image-surface-source
-infinite-join
-inverse-text
-joins
-large-font
 large-source
 large-twin-antialias-mixed
 leaky-dashed-rectangle
-leaky-dashed-stroke
-leaky-polygon
-linear-gradient-extend
 linear-gradient-reflect
-line-width-scale
-line-width-tolerance
-long-dashed-lines
 map-all-to-image
 map-bit-to-image
 map-to-image-fill
-mask-transformed-image
-mask-transformed-similar
 mesh-pattern
-mesh-pattern-conical
-mesh-pattern-control-points
-mesh-pattern-fold
-mesh-pattern-overlap
-mesh-pattern-transformed
 negative-stride-image
-operator-alpha-alpha
 overlapping-glyphs
 paint-source-alpha
-paint-with-alpha
-paint-with-alpha-clip
-paint-with-alpha-solid-clip
-partial-clip-text-bottom
-partial-clip-text-left
-partial-coverage-half-reference
-partial-coverage-reference
-partial-coverage-three-quarter-reference
-path-stroke-twice
 pdf-surface-source
 ps-surface-source
 pthread-show-text
 push-group-color
 radial-gradient
-radial-gradient-extend
 radial-gradient-mask
 radial-gradient-mask-source
-radial-gradient-one-stop
 radial-gradient-source
-record1414x-paint-alpha
-record1414x-paint-alpha-clip
-record1414x-paint-alpha-solid-clip
 record1414x-select-font-face
 record1414x-text-transform
-record2x-paint-alpha
-record2x-paint-alpha-clip
-record2x-paint-alpha-solid-clip
 record2x-select-font-face
 record2x-text-transform
-record90-paint-alpha-clip-mask
 record90-select-font-face
 record90-text-transform
 recordflip-select-font-face
@@ -130,61 +50,37 @@ recording-surface-extend-reflect
 recording-surface-extend-repeat
 recording-surface-over
 recording-surface-source
-record-mesh
 record-neg-extents-bounded
-record-paint-alpha-clip
-record-paint-alpha-solid-clip
 record-replay-extend-none
 record-replay-extend-pad
 record-replay-extend-reflect
 record-replay-extend-repeat
 record-select-font-face
 record-text-transform
-rectilinear-miter-limit
-reflected-stroke
 scale-offset-image
 scale-offset-similar
-select-font-face
-self-copy
-shape-sierpinski
 show-glyphs-advance
-show-text-current-point
 smask
-smask-image-mask
-smask-mask
-smask-paint
 smask-text
 stride-12-image
-stroke-ctm-caps
 subsurface
 subsurface-scale
-surface-pattern
-surface-pattern-scale-up
-text-antialias-gray
 text-antialias-subpixel
 text-antialias-subpixel-bgr
 text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
 text-antialias-subpixel-vrgb
-text-glyph-range
 text-pattern
 text-rotate
-text-transform
 text-unhinted-metrics
-transforms
 twin
 twin-antialias-gray
 twin-antialias-mixed
 twin-antialias-none
 twin-antialias-subpixel
-unclosed-strokes
 user-font
 user-font-proxy
 user-font-rescale
-world-map
-world-map-fill
-world-map-stroke
 xcb-stress-cache
 xcb-surface-source
-xcomposite-projection
 xlib-surface-source
diff --git a/.gitlab-ci/ignore-svg11-argb32.txt b/.gitlab-ci/ignore-svg11-argb32.txt
index f231e26dc..c0f6bb287 100644
--- a/.gitlab-ci/ignore-svg11-argb32.txt
+++ b/.gitlab-ci/ignore-svg11-argb32.txt
@@ -13,16 +13,12 @@ ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
 halo-transform
 linear-gradient-reflect
-mask-transformed-image
 operator-alpha-alpha
 overlapping-glyphs
 paint-source-alpha
 paint-with-alpha
 paint-with-alpha-clip
 paint-with-alpha-clip-mask
-pthread-similar
-radial-gradient
-radial-gradient-mask
 record1414x-fill-alpha
 record1414x-paint-alpha
 record1414x-paint-alpha-clip
@@ -45,14 +41,7 @@ record-paint-alpha-clip
 record-paint-alpha-clip-mask
 scale-offset-image
 scale-source-surface-paint
-self-copy
 show-glyphs-advance
-smask
-smask-image-mask
-smask-mask
-smask-paint
-smask-stroke
-smask-text
 surface-pattern
 surface-pattern-operator
 surface-pattern-scale-up
diff --git a/.gitlab-ci/ignore-svg11-rgb24.txt b/.gitlab-ci/ignore-svg11-rgb24.txt
index cb52865d2..f344cb841 100644
--- a/.gitlab-ci/ignore-svg11-rgb24.txt
+++ b/.gitlab-ci/ignore-svg11-rgb24.txt
@@ -1,39 +1,72 @@
 alpha-similar
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
+bug-361
+bug-source-cu
 clear-source
+clip-device-offset
+clip-fill-eo-unbounded
+clip-fill-nz-unbounded
+clip-fill-rule-pixel-aligned
 clip-operator
+clip-stroke-unbounded
 clip-text
+clip-unbounded
 culled-glyphs
+dash-zero-length
+degenerate-path
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
 extended-blend-solid
 extended-blend-solid-alpha
+fill-and-stroke
+fill-empty
+fill-missed-stop
 filter-bilinear-extents
 filter-nearest-offset
 filter-nearest-transformed
+finer-grained-fallbacks
+ft-color-font
 ft-show-glyphs-positioning
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
 gradient-alpha
 gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 halo-transform
+image-surface-source
+linear-gradient-one-stop
 linear-gradient-reflect
-mask
-mask-transformed-image
+mask-ctm
+mask-surface-ctm
+new-sub-path
+nil-surface
 operator-alpha-alpha
+operator-source
+overlapping-boxes
 overlapping-glyphs
 paint-source-alpha
 paint-with-alpha
 paint-with-alpha-clip
 paint-with-alpha-clip-mask
-pthread-similar
-radial-gradient
-radial-gradient-mask
+pass-through
+pdf-surface-source
+pixman-rotate
+ps-surface-source
 radial-gradient-mask-source
 radial-gradient-source
 record1414x-fill-alpha
+record1414x-paint
 record1414x-paint-alpha
 record1414x-paint-alpha-clip
 record1414x-paint-alpha-clip-mask
+record1414x-paint-alpha-solid-clip
 record1414x-select-font-face
+record1414x-self-intersecting
 record1414x-text-transform
 record2x-paint-alpha
 record2x-paint-alpha-clip
@@ -46,24 +79,32 @@ recordflip-paint-alpha-clip-mask
 recordflip-whole-paint-alpha
 recordflip-whole-paint-alpha-clip
 recordflip-whole-paint-alpha-clip-mask
+recording-surface-extend-none
+recording-surface-extend-reflect
+recording-surface-over
+recording-surface-source
+record-neg-extents-bounded
+record-neg-extents-unbounded
 record-paint-alpha
 record-paint-alpha-clip
 record-paint-alpha-clip-mask
+record-replay-extend-none
+record-replay-extend-pad
+record-replay-extend-reflect
+rel-path
 scale-offset-image
 scale-source-surface-paint
-self-copy
+set-source
 show-glyphs-advance
-smask
-smask-image-mask
-smask-mask
-smask-paint
-smask-stroke
-smask-text
+source-surface-scale-paint
 surface-pattern
 surface-pattern-operator
 surface-pattern-scale-up
 text-pattern
 text-rotate
 text-unhinted-metrics
+thin-lines
 tighten-bounds
 unbounded-operator
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-xcb-fallback-rgb24.txt b/.gitlab-ci/ignore-xcb-fallback-rgb24.txt
index 9c4cd185e..42f15e80a 100644
--- a/.gitlab-ci/ignore-xcb-fallback-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-fallback-rgb24.txt
@@ -1,23 +1,63 @@
+a1-clip-fill-rule
+alpha-similar
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
+bug-361
+bug-431
+clip-device-offset
+clip-fill-rule-pixel-aligned
 clip-text
+clip-unbounded
 coverage-intersecting-triangles
 culled-glyphs
 dash-zero-length
 degenerate-path
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
-fallback
+fill-and-stroke
+fill-empty
 fill-missed-stop
+finer-grained-fallbacks
+ft-color-font
 ft-show-glyphs-positioning
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
+gradient-alpha
+gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 halo-transform
+image-surface-source
+linear-gradient-one-stop
+mask-ctm
+mask-surface-ctm
 new-sub-path
+nil-surface
+overlapping-boxes
 overlapping-glyphs
+pass-through
+pdf-surface-source
+pixman-downscale-best-24
+pixman-rotate
+ps-surface-source
 record1414x-select-font-face
 record1414x-text-transform
+record-neg-extents-bounded
+record-neg-extents-unbounded
+record-replay-extend-none
 record-replay-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
 rel-path
+scale-source-surface-paint
+set-source
 show-glyphs-advance
+source-surface-scale-paint
 subsurface
+subsurface-outside-target
 subsurface-scale
 text-antialias-subpixel
 text-antialias-subpixel-bgr
@@ -27,3 +67,6 @@ text-antialias-subpixel-vrgb
 text-pattern
 text-rotate
 text-unhinted-metrics
+thin-lines
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt b/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt
index c2d889e19..69e5f75d7 100644
--- a/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt
@@ -1,23 +1,53 @@
+a1-clip-fill-rule
+alpha-similar
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
+bug-361
+bug-431
+bug-source-cu
+clip-device-offset
 clip-disjoint-hatching
 clip-fill-eo-unbounded
 clip-fill-nz-unbounded
+clip-fill-rule-pixel-aligned
 clip-operator
 clip-polygons
 clip-shape
 clip-stroke-unbounded
-clip-twice
+clip-unbounded
 coverage-intersecting-triangles
 culled-glyphs
 dash-zero-length
 degenerate-path
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
-fallback
+fill-and-stroke
+fill-empty
 fill-missed-stop
+finer-grained-fallbacks
+ft-color-font
 ft-text-vertical-layout-type1
+gradient-alpha
+gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 hatchings
-mask
+image-surface-source
+linear-gradient-one-stop
+mask-ctm
+mask-surface-ctm
 new-sub-path
-operator-source
+nil-surface
+overlapping-boxes
+overlapping-glyphs
+pass-through
+pdf-surface-source
+pixman-downscale-best-24
+pixman-rotate
+ps-surface-source
 radial-gradient
 radial-gradient-mask
 radial-gradient-mask-source
@@ -25,18 +55,25 @@ radial-gradient-source
 random-clip
 record1414x-select-font-face
 record1414x-text-transform
-recording-surface-extend-none
-recording-surface-over
 record-neg-extents-bounded
+record-neg-extents-unbounded
 record-paint-alpha-solid-clip
+record-replay-extend-none
 record-replay-extend-pad
 record-replay-extend-reflect
 record-replay-extend-repeat
 rel-path
 rotated-clip
+scale-source-surface-paint
+set-source
+source-surface-scale-paint
+subsurface-outside-target
 text-antialias-subpixel
 text-antialias-subpixel-bgr
 text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
 text-antialias-subpixel-vrgb
-trap-clip
+text-pattern
+thin-lines
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-xcb-rgb24.txt b/.gitlab-ci/ignore-xcb-rgb24.txt
index cbb1b2d37..eb56f6949 100644
--- a/.gitlab-ci/ignore-xcb-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-rgb24.txt
@@ -1,19 +1,16 @@
+a1-clip-fill-rule
 a1-tiger
-arc-looping-dash
-bug-51910
-bug-84115
-bug-image-compositor
+alpha-similar
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
+bug-431
 bug-spline
-caps-05
-caps-1
-caps-2
-caps-joins-05
-caps-joins-1
-caps-joins-2
-clear-source
+clip-device-offset
+clip-fill-rule-pixel-aligned
 clip-operator
-clip-text
-coverage-abutting
+clip-unbounded
 coverage-column-triangles
 coverage-intersecting-quads
 coverage-intersecting-triangles
@@ -22,37 +19,32 @@ coverage-rhombus
 coverage-row-triangles
 coverage-triangles
 culled-glyphs
-dash-curve
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
-fallback
+fill-empty
 fill-image
-filter-bilinear-extents
-font-matrix-translation
-ft-show-glyphs-positioning
-ft-show-glyphs-table
+ft-color-font
 ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
-glyph-cache-pressure
+gradient-alpha
+gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 halo
 halo-transform
 hatchings
-inverse-text
-large-font
-linear-gradient
-linear-gradient-subset
-mask
-mask-transformed-image
-mask-transformed-similar
-operator-alpha-alpha
-operator-clear
+image-surface-source
+linear-gradient-one-stop
+mask-ctm
+mask-surface-ctm
+nil-surface
 operator-source
 overlapping-boxes
-overlapping-dash-caps
-overlapping-glyphs
-partial-clip-text-bottom
-partial-clip-text-left
-partial-coverage-reference
-partial-coverage-three-quarter-reference
+pass-through
+pdf-surface-source
+pixman-downscale-best-24
+pixman-rotate
+ps-surface-source
 radial-gradient
 radial-gradient-mask
 radial-gradient-mask-source
@@ -61,70 +53,44 @@ radial-outer-focus
 random-clip
 record1414x-fill-alpha
 record1414x-self-intersecting
-record1414x-text-transform
 record2x-fill-alpha
 record2x-paint-alpha-clip-mask
-record90-fill-alpha
 record90-paint-alpha-clip
 record90-paint-alpha-solid-clip
 record90-self-intersecting
-recordflip-fill-alpha
 recordflip-paint-alpha-clip-mask
 recordflip-self-intersecting
 recordflip-whole-fill-alpha
 recordflip-whole-paint-alpha-clip-mask
 recordflip-whole-self-intersecting
-recording-surface-extend-none
 recording-surface-extend-pad
-recording-surface-extend-reflect
-recording-surface-extend-repeat
-recording-surface-over
-recording-surface-source
 record-neg-extents-bounded
 record-neg-extents-unbounded
+record-replay-extend-none
 record-replay-extend-pad
 record-replay-extend-reflect
 record-replay-extend-repeat
 record-self-intersecting
-reflected-stroke
 rotated-clip
-select-font-face
-show-glyphs-advance
-show-text-current-point
+scale-source-surface-paint
+set-source
 simple-edge
-smask
-smask-fill
-smask-image-mask
-smask-mask
-smask-paint
-smask-stroke
-smp-glyph
+source-surface-scale-paint
 stroke-clipped
 stroke-image
-subsurface
-subsurface-scale
-surface-pattern-operator
-surface-pattern-scale-up
-text-antialias-gray
+subsurface-outside-target
 text-antialias-subpixel
 text-antialias-subpixel-bgr
 text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
 text-antialias-subpixel-vrgb
-text-glyph-range
 text-pattern
 text-rotate
-text-transform
+thin-lines
 tighten-bounds
-trap-clip
-twin
-twin-antialias-gray
 twin-antialias-none
-twin-antialias-subpixel
 unantialiased-shapes
-unbounded-operator
 user-font
 user-font-proxy
-world-map
-world-map-fill
-xcomposite-projection
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-xcb-window&-rgb24.txt b/.gitlab-ci/ignore-xcb-window&-rgb24.txt
index 10b9c9c3a..105fcfc6f 100644
--- a/.gitlab-ci/ignore-xcb-window&-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-window&-rgb24.txt
@@ -1,16 +1,15 @@
-arc-looping-dash
-bug-51910
+a1-clip-fill-rule
+alpha-similar
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
+bug-431
 bug-spline
-caps-05
-caps-1
-caps-2
-caps-joins-05
-caps-joins-1
-caps-joins-2
-clear-source
+clip-device-offset
+clip-fill-rule-pixel-aligned
 clip-operator
-clip-text
-coverage-abutting
+clip-unbounded
 coverage-column-triangles
 coverage-intersecting-quads
 coverage-intersecting-triangles
@@ -18,97 +17,70 @@ coverage-rectangles
 coverage-row-triangles
 coverage-triangles
 culled-glyphs
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
-fallback
+fill-empty
 fill-image
-filter-bilinear-extents
-font-matrix-translation
-ft-show-glyphs-positioning
-ft-show-glyphs-table
+ft-color-font
 ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
-glyph-cache-pressure
+gradient-alpha
+gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 halo
 halo-transform
-inverse-text
-linear-gradient
-linear-gradient-subset
-mask
-mask-transformed-image
-mask-transformed-similar
-operator-alpha-alpha
-operator-clear
+image-surface-source
+linear-gradient-one-stop
+mask-ctm
+mask-surface-ctm
+nil-surface
 operator-source
 overlapping-boxes
-overlapping-dash-caps
-overlapping-glyphs
-partial-clip-text-bottom
-partial-clip-text-left
-partial-coverage-reference
-partial-coverage-three-quarter-reference
+pass-through
+pdf-surface-source
+pixman-downscale-best-24
+pixman-rotate
+ps-surface-source
 radial-outer-focus
 record1414x-fill-alpha
 record1414x-self-intersecting
-record1414x-text-transform
 record2x-fill-alpha
 record2x-paint-alpha-clip-mask
-record90-fill-alpha
 record90-paint-alpha-clip
 record90-paint-alpha-solid-clip
 record90-self-intersecting
-recordflip-fill-alpha
 recordflip-paint-alpha-clip-mask
 recordflip-self-intersecting
 recordflip-whole-fill-alpha
 recordflip-whole-paint-alpha-clip-mask
 recordflip-whole-self-intersecting
-recording-surface-extend-none
 recording-surface-extend-pad
-recording-surface-extend-reflect
-recording-surface-extend-repeat
-recording-surface-over
-recording-surface-source
 record-neg-extents-bounded
 record-neg-extents-unbounded
+record-replay-extend-none
 record-replay-extend-pad
 record-replay-extend-reflect
 record-replay-extend-repeat
 record-self-intersecting
-reflected-stroke
 rotated-clip
-select-font-face
-show-glyphs-advance
-show-text-current-point
+scale-source-surface-paint
+set-source
 simple-edge
-smask
-smask-fill
-smask-image-mask
-smask-mask
-smask-paint
-smask-stroke
-smp-glyph
+source-surface-scale-paint
 stroke-clipped
 stroke-image
-subsurface
-subsurface-scale
-surface-pattern-operator
-surface-pattern-scale-up
-text-antialias-gray
+subsurface-outside-target
 text-antialias-subpixel
 text-antialias-subpixel-bgr
 text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
 text-antialias-subpixel-vrgb
-text-glyph-range
 text-pattern
 text-rotate
-text-transform
+thin-lines
 tighten-bounds
-trap-clip
-twin
-twin-antialias-gray
 twin-antialias-none
-twin-antialias-subpixel
 unantialiased-shapes
-unbounded-operator
-xcomposite-projection
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-xcb-window-rgb24.txt b/.gitlab-ci/ignore-xcb-window-rgb24.txt
index 26df57963..1ecea73ed 100644
--- a/.gitlab-ci/ignore-xcb-window-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-window-rgb24.txt
@@ -1,16 +1,15 @@
-arc-looping-dash
-bug-51910
+a1-clip-fill-rule
+alpha-similar
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
+bug-431
 bug-spline
-caps-05
-caps-1
-caps-2
-caps-joins-05
-caps-joins-1
-caps-joins-2
-clear-source
+clip-device-offset
+clip-fill-rule-pixel-aligned
 clip-operator
-clip-text
-coverage-abutting
+clip-unbounded
 coverage-column-triangles
 coverage-intersecting-quads
 coverage-intersecting-triangles
@@ -18,99 +17,72 @@ coverage-rectangles
 coverage-row-triangles
 coverage-triangles
 culled-glyphs
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
-fallback
+fill-empty
 fill-image
-filter-bilinear-extents
-font-matrix-translation
-ft-show-glyphs-positioning
-ft-show-glyphs-table
+ft-color-font
 ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
-glyph-cache-pressure
+gradient-alpha
+gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 halo
 halo-transform
-inverse-text
-linear-gradient
-linear-gradient-subset
-mask
-mask-transformed-image
-mask-transformed-similar
-operator-alpha-alpha
-operator-clear
+image-surface-source
+linear-gradient-one-stop
+mask-ctm
+mask-surface-ctm
+nil-surface
 operator-source
 overlapping-boxes
-overlapping-dash-caps
-overlapping-glyphs
-partial-clip-text-bottom
-partial-clip-text-left
-partial-coverage-reference
-partial-coverage-three-quarter-reference
+pass-through
+pdf-surface-source
+pixman-downscale-best-24
+pixman-rotate
+ps-surface-source
 push-group
 push-group-color
 radial-outer-focus
 record1414x-fill-alpha
 record1414x-self-intersecting
-record1414x-text-transform
 record2x-fill-alpha
 record2x-paint-alpha-clip-mask
-record90-fill-alpha
 record90-paint-alpha-clip
 record90-paint-alpha-solid-clip
 record90-self-intersecting
-recordflip-fill-alpha
 recordflip-paint-alpha-clip-mask
 recordflip-self-intersecting
 recordflip-whole-fill-alpha
 recordflip-whole-paint-alpha-clip-mask
 recordflip-whole-self-intersecting
-recording-surface-extend-none
 recording-surface-extend-pad
-recording-surface-extend-reflect
-recording-surface-extend-repeat
-recording-surface-over
-recording-surface-source
 record-neg-extents-bounded
 record-neg-extents-unbounded
+record-replay-extend-none
 record-replay-extend-pad
 record-replay-extend-reflect
 record-replay-extend-repeat
 record-self-intersecting
-reflected-stroke
 rotated-clip
-select-font-face
-show-glyphs-advance
-show-text-current-point
+scale-source-surface-paint
+set-source
 simple-edge
-smask
-smask-fill
-smask-image-mask
-smask-mask
-smask-paint
-smask-stroke
-smp-glyph
+source-surface-scale-paint
 stroke-clipped
 stroke-image
-subsurface
-subsurface-scale
-surface-pattern-operator
-surface-pattern-scale-up
-text-antialias-gray
+subsurface-outside-target
 text-antialias-subpixel
 text-antialias-subpixel-bgr
 text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
 text-antialias-subpixel-vrgb
-text-glyph-range
 text-pattern
 text-rotate
-text-transform
+thin-lines
 tighten-bounds
-trap-clip
-twin
-twin-antialias-gray
 twin-antialias-none
-twin-antialias-subpixel
 unantialiased-shapes
-unbounded-operator
-xcomposite-projection
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-xlib-fallback-rgb24.txt b/.gitlab-ci/ignore-xlib-fallback-rgb24.txt
index f4effb215..617d4d07d 100644
--- a/.gitlab-ci/ignore-xlib-fallback-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-fallback-rgb24.txt
@@ -1,112 +1,88 @@
-arc-looping-dash
-bug-51910
+a1-clip-fill-rule
+alpha-similar
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
+bug-361
+bug-431
 bug-seams
-caps
-caps-05
-caps-1
-caps-2
-caps-joins-05
-caps-joins-1
-caps-joins-2
-caps-joins-curve
-caps-sub-paths
-clear-source
-clip-disjoint-quad
-clip-image
-clip-mixed-antialias
-clip-polygons
-clip-push-group
+clip-device-offset
+clip-fill-rule-pixel-aligned
 clip-text
-close-path
-close-path-current-point
-copy-path
-coverage-abutting
-coverage-intersecting-quads
+clip-unbounded
 culled-glyphs
-dash-caps-joins
-dash-infinite-loop
-dash-scale
 dash-zero-length
-degenerate-curve-to
 degenerate-path
-degenerate-pen
-degenerate-rel-curve-to
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
 fallback
+fill-and-stroke
+fill-empty
 fill-missed-stop
-filter-bilinear-extents
 finer-grained-fallbacks
-font-matrix-translation
+ft-color-font
 ft-show-glyphs-positioning
-ft-show-glyphs-table
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
-glyph-cache-pressure
+gradient-alpha
+gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 halo-transform
-infinite-join
-inverse-text
-joins
+image-surface-source
 large-twin-antialias-mixed
-leaky-dashed-stroke
-leaky-polygon
-line-width-scale
-line-width-tolerance
-long-dashed-lines
-mask-transformed-image
-mask-transformed-similar
+linear-gradient-one-stop
+mask-ctm
+mask-surface-ctm
 new-sub-path
-operator-alpha-alpha
+nil-surface
 over-above-source
 over-around-source
 over-between-source
+overlapping-boxes
 overlapping-glyphs
-partial-clip-text-bottom
-partial-clip-text-left
-partial-coverage-reference
-partial-coverage-three-quarter-reference
-path-stroke-twice
+pass-through
+pdf-surface-source
+pixman-downscale-best-24
+pixman-rotate
+ps-surface-source
 pthread-show-text
 pthread-similar
 push-group-color
 record1414x-select-font-face
 record1414x-text-transform
-recording-surface-extend-none
-recording-surface-over
-rectilinear-miter-limit
-reflected-stroke
+record-neg-extents-bounded
+record-neg-extents-unbounded
+record-replay-extend-none
+record-replay-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
 rel-path
-select-font-face
-self-copy
+scale-source-surface-paint
+set-source
 shifted-operator
 show-glyphs-advance
-show-text-current-point
 smask
-smask-image-mask
-smask-mask
-smask-paint
 smask-text
-smp-glyph
-stroke-ctm-caps
+source-surface-scale-paint
 subsurface
+subsurface-outside-target
 subsurface-scale
 surface-pattern-scale-down-extend-none
-surface-pattern-scale-up
-text-antialias-gray
 text-antialias-subpixel
 text-antialias-subpixel-bgr
 text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
 text-antialias-subpixel-vrgb
-text-glyph-range
 text-pattern
 text-rotate
-text-transform
 text-unhinted-metrics
-transforms
-twin
+thin-lines
 twin-antialias-gray
 twin-antialias-mixed
 twin-antialias-none
 twin-antialias-subpixel
-unclosed-strokes
-xcomposite-projection
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt b/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt
index fc31fb370..004faf999 100644
--- a/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt
@@ -1,48 +1,82 @@
-caps-sub-paths
-clear-source
+a1-clip-fill-rule
+alpha-similar
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
+bug-361
+bug-431
+bug-source-cu
+clip-device-offset
+clip-fill-rule-pixel-aligned
 clip-operator
 clipped-group
-clip-push-group
 clip-text
+clip-unbounded
 coverage-intersecting-triangles
 culled-glyphs
 curve-to-as-line-to
-dash-zero-length
 degenerate-path
+device-offset
+device-offset-positive
 extended-blend-alpha-mask
-fallback
 fill-and-stroke
 fill-and-stroke-alpha
 fill-and-stroke-alpha-add
+fill-empty
 fill-missed-stop
 finer-grained-fallbacks
+ft-color-font
 ft-show-glyphs-positioning
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
+gradient-alpha
+gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 halo-transform
 horizontal-clip
-infinite-join
+image-surface-source
 large-twin-antialias-mixed
 leaky-polygon
+linear-gradient-one-stop
 mask
+mask-ctm
+mask-surface-ctm
 new-sub-path
+nil-surface
 operator-clear
 operator-source
+overlapping-boxes
 overlapping-glyphs
+pass-through
+pdf-surface-source
+pixman-downscale-best-24
+pixman-rotate
+ps-surface-source
 pthread-show-text
+radial-gradient-source
 radial-outer-focus
 record1414x-select-font-face
 record1414x-text-transform
-rectilinear-miter-limit
+record-neg-extents-bounded
+record-neg-extents-unbounded
+record-replay-extend-none
+record-replay-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
 rectilinear-stroke
 rel-path
+scale-source-surface-paint
+set-source
 show-glyphs-advance
 smask
 smask-text
+source-surface-scale-paint
 subsurface
+subsurface-outside-target
 subsurface-scale
 surface-pattern-operator
-text-antialias-gray
 text-antialias-subpixel
 text-antialias-subpixel-bgr
 text-antialias-subpixel-rgb
@@ -51,8 +85,11 @@ text-antialias-subpixel-vrgb
 text-pattern
 text-rotate
 text-unhinted-metrics
+thin-lines
 twin-antialias-gray
 twin-antialias-mixed
 twin-antialias-none
 twin-antialias-subpixel
 unbounded-operator
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-xlib-rgb24.txt b/.gitlab-ci/ignore-xlib-rgb24.txt
index b7b11523b..cf2d7239d 100644
--- a/.gitlab-ci/ignore-xlib-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-rgb24.txt
@@ -1,22 +1,26 @@
+a1-clip-fill-rule
 aliasing
+alpha-similar
 arc-looping-dash
-bug-51910
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
 bug-84115
 bug-extents
 bug-image-compositor
 bug-spline
-caps-joins-05
 caps-joins-curve
-caps-tails-curve
-clear-source
+clip-device-offset
 clip-disjoint
+clip-fill-rule-pixel-aligned
 clip-operator
 clip-shape
 clip-stroke
 clip-stroke-unbounded
 clip-text
+clip-unbounded
 close-path-current-point
-coverage-abutting
 coverage-column-triangles
 coverage-rhombus
 culled-glyphs
@@ -26,54 +30,50 @@ dash-scale
 degenerate-curve-to
 degenerate-pen
 degenerate-rel-curve-to
+device-offset
+device-offset-positive
 drunkard-tails
 extended-blend-alpha-mask
-extended-blend-mask
-fallback
 fill-and-stroke
 fill-and-stroke-alpha
 fill-and-stroke-alpha-add
+fill-empty
 fill-image
-filter-bilinear-extents
-font-matrix-translation
+ft-color-font
 ft-show-glyphs-positioning
-ft-show-glyphs-table
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
-glyph-cache-pressure
+gradient-alpha
+gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 halo
 halo-transform
 hatchings
-infinite-join
-inverse-text
+image-surface-source
 joins
 joins-loop
 joins-retrace
-joins-star
-large-font
 large-twin-antialias-mixed
 leaky-dashed-stroke
-linear-gradient
-linear-gradient-subset
+linear-gradient-one-stop
 line-width-scale
 line-width-tolerance
 long-dashed-lines
-mask
-mask-transformed-image
-mask-transformed-similar
-miter-precision
+mask-ctm
+mask-surface-ctm
 new-sub-path
-operator-alpha-alpha
-operator-clear
+nil-surface
 operator-source
 overlapping-boxes
 overlapping-dash-caps
 overlapping-glyphs
-partial-clip-text-bottom
-partial-clip-text-left
-partial-coverage-reference
-partial-coverage-three-quarter-reference
+pass-through
 path-stroke-twice
+pdf-surface-source
+pixman-downscale-best-24
+pixman-rotate
+ps-surface-source
 pthread-show-text
 radial-gradient
 radial-gradient-mask
@@ -93,13 +93,11 @@ record2x-fill-alpha
 record2x-paint-alpha-clip-mask
 record2x-select-font-face
 record2x-text-transform
-record90-fill-alpha
 record90-paint-alpha-clip
 record90-paint-alpha-solid-clip
 record90-select-font-face
 record90-self-intersecting
 record90-text-transform
-recordflip-fill-alpha
 recordflip-paint-alpha-clip-mask
 recordflip-select-font-face
 recordflip-self-intersecting
@@ -109,12 +107,7 @@ recordflip-whole-paint-alpha-clip-mask
 recordflip-whole-select-font-face
 recordflip-whole-self-intersecting
 recordflip-whole-text-transform
-recording-surface-extend-none
 recording-surface-extend-pad
-recording-surface-extend-reflect
-recording-surface-extend-repeat
-recording-surface-over
-recording-surface-source
 record-neg-extents-bounded
 record-neg-extents-unbounded
 record-replay-extend-none
@@ -126,57 +119,46 @@ record-self-intersecting
 record-text-transform
 reflected-stroke
 rel-path
-rotated-clip
 rounded-rectangle-stroke
 scale-offset-image
 scale-offset-similar
-select-font-face
+scale-source-surface-paint
+set-source
 shape-general-convex
 shape-sierpinski
 shifted-operator
 show-glyphs-advance
-show-text-current-point
 simple-edge
 smask
-smask-fill
-smask-image-mask
-smask-mask
-smask-paint
 smask-stroke
 smask-text
-smp-glyph
+source-surface-scale-paint
 spline-decomposition
 stroke-clipped
-stroke-ctm-caps
 stroke-image
 stroke-pattern
 subsurface
+subsurface-outside-target
 subsurface-scale
-surface-pattern-operator
-surface-pattern-scale-up
-text-antialias-gray
 text-antialias-subpixel
 text-antialias-subpixel-bgr
 text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
 text-antialias-subpixel-vrgb
-text-glyph-range
 text-pattern
 text-rotate
-text-transform
 text-unhinted-metrics
+thin-lines
 tighten-bounds
-trap-clip
 twin
 twin-antialias-gray
 twin-antialias-mixed
 twin-antialias-none
 twin-antialias-subpixel
-unbounded-operator
 unclosed-strokes
 user-font
 user-font-proxy
 world-map
-world-map-fill
 world-map-stroke
-xcomposite-projection
+xcb-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-xlib-window-rgb24.txt b/.gitlab-ci/ignore-xlib-window-rgb24.txt
index ac83dd920..e05790caa 100644
--- a/.gitlab-ci/ignore-xlib-window-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-window-rgb24.txt
@@ -1,19 +1,24 @@
+a1-clip-fill-rule
 aliasing
+alpha-similar
 arc-looping-dash
-bug-51910
+big-empty-box
+big-empty-triangle
+big-little-box
+bitmap-font
 bug-extents
 bug-spline
-caps-joins-05
 caps-joins-curve
-clear-source
+clip-device-offset
 clip-disjoint
+clip-fill-rule-pixel-aligned
 clip-operator
 clip-shape
 clip-stroke
 clip-stroke-unbounded
 clip-text
+clip-unbounded
 close-path-current-point
-coverage-abutting
 coverage-column-triangles
 coverage-intersecting-quads
 coverage-intersecting-triangles
@@ -26,52 +31,49 @@ dash-scale
 degenerate-curve-to
 degenerate-pen
 degenerate-rel-curve-to
+device-offset
+device-offset-positive
 drunkard-tails
 extended-blend-alpha-mask
-extended-blend-mask
-fallback
 fill-and-stroke
 fill-and-stroke-alpha
 fill-and-stroke-alpha-add
+fill-empty
 fill-image
-filter-bilinear-extents
-font-matrix-translation
+ft-color-font
 ft-show-glyphs-positioning
-ft-show-glyphs-table
 ft-text-vertical-layout-type1
 ft-text-vertical-layout-type3
-glyph-cache-pressure
+gradient-alpha
+gradient-constant-alpha
+gradient-zero-stops
+gradient-zero-stops-mask
 halo
 halo-transform
-infinite-join
-inverse-text
+image-surface-source
 joins
 joins-loop
 joins-retrace
-joins-star
 large-twin-antialias-mixed
 leaky-dashed-stroke
-linear-gradient
-linear-gradient-subset
+linear-gradient-one-stop
 line-width-scale
 line-width-tolerance
 long-dashed-lines
-mask
-mask-transformed-image
-mask-transformed-similar
-miter-precision
+mask-ctm
+mask-surface-ctm
 new-sub-path
-operator-alpha-alpha
-operator-clear
+nil-surface
 operator-source
 overlapping-boxes
 overlapping-dash-caps
 overlapping-glyphs
-partial-clip-text-bottom
-partial-clip-text-left
-partial-coverage-reference
-partial-coverage-three-quarter-reference
+pass-through
 path-stroke-twice
+pdf-surface-source
+pixman-downscale-best-24
+pixman-rotate
+ps-surface-source
 pthread-show-text
 radial-outer-focus
 record1414x-fill-alpha
@@ -82,13 +84,11 @@ record2x-fill-alpha
 record2x-paint-alpha-clip-mask
 record2x-select-font-face
 record2x-text-transform
-record90-fill-alpha
 record90-paint-alpha-clip
 record90-paint-alpha-solid-clip
 record90-select-font-face
 record90-self-intersecting
 record90-text-transform
-recordflip-fill-alpha
 recordflip-paint-alpha-clip-mask
 recordflip-select-font-face
 recordflip-self-intersecting
@@ -98,12 +98,7 @@ recordflip-whole-paint-alpha-clip-mask
 recordflip-whole-select-font-face
 recordflip-whole-self-intersecting
 recordflip-whole-text-transform
-recording-surface-extend-none
 recording-surface-extend-pad
-recording-surface-extend-reflect
-recording-surface-extend-repeat
-recording-surface-over
-recording-surface-source
 record-neg-extents-bounded
 record-neg-extents-unbounded
 record-replay-extend-none
@@ -115,51 +110,41 @@ record-self-intersecting
 record-text-transform
 reflected-stroke
 rel-path
-rotated-clip
 rounded-rectangle-stroke
 scale-offset-image
 scale-offset-similar
-select-font-face
+scale-source-surface-paint
+set-source
 shape-general-convex
 shifted-operator
 show-glyphs-advance
-show-text-current-point
 simple-edge
 smask
-smask-fill
-smask-image-mask
-smask-mask
-smask-paint
 smask-stroke
 smask-text
-smp-glyph
+source-surface-scale-paint
 spline-decomposition
 stroke-clipped
-stroke-ctm-caps
 stroke-image
 stroke-pattern
 subsurface
+subsurface-outside-target
 subsurface-scale
-surface-pattern-operator
-surface-pattern-scale-up
-text-antialias-gray
 text-antialias-subpixel
 text-antialias-subpixel-bgr
 text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
 text-antialias-subpixel-vrgb
-text-glyph-range
 text-pattern
 text-rotate
-text-transform
 text-unhinted-metrics
+thin-lines
 tighten-bounds
-trap-clip
 twin
 twin-antialias-gray
 twin-antialias-mixed
 twin-antialias-none
 twin-antialias-subpixel
-unbounded-operator
 unclosed-strokes
-xcomposite-projection
+xcb-surface-source
+xlib-surface-source
diff --git a/test/buffer-diff.c b/test/buffer-diff.c
index 6d2a6bf8a..0796ca42a 100644
--- a/test/buffer-diff.c
+++ b/test/buffer-diff.c
@@ -25,6 +25,7 @@
 
 #include "config.h"
 
+#include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
 #ifdef HAVE_UNISTD_H
@@ -48,15 +49,14 @@
  * result_ret.
  *
  * This function should be rewritten to compare all formats supported by
- * cairo_format_t instead of taking a mask as a parameter.
+ * cairo_format_t.
  */
 static void
-buffer_diff_core (const unsigned char *_buf_a, int stride_a,
-		  const unsigned char *_buf_b, int stride_b,
-		  unsigned char *_buf_diff, int stride_diff,
+buffer_diff_core (const unsigned char *_buf_a, int stride_a, cairo_format_t format_a,
+		  const unsigned char *_buf_b, int stride_b, cairo_format_t format_b,
+		  unsigned char *_buf_diff, int stride_diff, cairo_format_t format_diff,
 		  int		width,
 		  int		height,
-		  uint32_t mask,
 		  buffer_diff_result_t *result_ret)
 {
     const uint32_t *buf_a = (const uint32_t*) _buf_a;
@@ -65,6 +65,10 @@ buffer_diff_core (const unsigned char *_buf_a, int stride_a,
     int x, y;
     buffer_diff_result_t result = {0, 0};
 
+    assert (format_a == CAIRO_FORMAT_RGB24 || format_a == CAIRO_FORMAT_ARGB32);
+    assert (format_b == CAIRO_FORMAT_RGB24 || format_b == CAIRO_FORMAT_ARGB32);
+    assert (format_diff == CAIRO_FORMAT_RGB24 || format_diff == CAIRO_FORMAT_ARGB32);
+
     stride_a /= sizeof (uint32_t);
     stride_b /= sizeof (uint32_t);
     stride_diff /= sizeof (uint32_t);
@@ -74,24 +78,32 @@ buffer_diff_core (const unsigned char *_buf_a, int stride_a,
 	uint32_t *row = buf_diff + y * stride_diff;
 
 	for (x = 0; x < width; x++) {
+	    uint32_t pixel_a = row_a[x];
+	    uint32_t pixel_b = row_b[x];
+	    /* convert pixel data to ARGB32 if necessary */
+	    if (format_a == CAIRO_FORMAT_RGB24)
+		pixel_a |= 0xff000000;
+	    if (format_b == CAIRO_FORMAT_RGB24)
+		pixel_b |= 0xff000000;
+
 	    /* check if the pixels are the same */
-	    if ((row_a[x] & mask) != (row_b[x] & mask)) {
+	    if (pixel_a != pixel_b) {
 		int channel;
 		uint32_t diff_pixel = 0;
 
 		/* calculate a difference value for all 4 channels */
 		for (channel = 0; channel < 4; channel++) {
-		    int value_a = (row_a[x] >> (channel*8)) & 0xff;
-		    int value_b = (row_b[x] >> (channel*8)) & 0xff;
+		    int value_a = (pixel_a >> (channel*8)) & 0xff;
+		    int value_b = (pixel_b >> (channel*8)) & 0xff;
 		    unsigned int diff;
 		    diff = abs (value_a - value_b);
 		    if (diff > result.max_diff)
 			result.max_diff = diff;
 		    diff *= 4;  /* emphasize */
 		    if (diff)
-		        diff += 128; /* make sure it's visible */
+			diff += 128; /* make sure it's visible */
 		    if (diff > 255)
-		        diff = 255;
+			diff = 255;
 		    diff_pixel |= diff << (channel*8);
 		}
 
@@ -141,13 +153,15 @@ compare_surfaces (const cairo_test_context_t  *ctx,
      */
     buffer_diff_core (cairo_image_surface_get_data (surface_a),
 		      cairo_image_surface_get_stride (surface_a),
+		      cairo_image_surface_get_format (surface_a),
 		      cairo_image_surface_get_data (surface_b),
 		      cairo_image_surface_get_stride (surface_b),
+		      cairo_image_surface_get_format (surface_b),
 		      cairo_image_surface_get_data (surface_diff),
 		      cairo_image_surface_get_stride (surface_diff),
+		      cairo_image_surface_get_format (surface_diff),
 		      cairo_image_surface_get_width (surface_a),
 		      cairo_image_surface_get_height (surface_a),
-		      cairo_surface_get_content (surface_a) & CAIRO_CONTENT_ALPHA ?  0xffffffff : 0x00ffffff,
 		      result);
     if (result->pixels_changed == 0)
 	return;
@@ -185,11 +199,10 @@ buffer_diff_noalpha (const unsigned char *buf_a,
 		     int	   stride,
 		     buffer_diff_result_t *result)
 {
-    buffer_diff_core(buf_a, stride,
-		     buf_b, stride,
-		     buf_diff, stride,
+    buffer_diff_core(buf_a, stride, CAIRO_FORMAT_RGB24,
+		     buf_b, stride, CAIRO_FORMAT_RGB24,
+		     buf_diff, stride, CAIRO_FORMAT_RGB24,
 		     width, height,
-		     0x00ffffff,
 		     result);
 }
 
commit 04906075847dd5f13d9b02503032a2fbb557b32e
Author: Manuel Stoeckl <code at mstoeckl.com>
Date:   Wed Aug 25 21:44:00 2021 -0400

    pdiff: convert RGB24 image values to ARGB32 on read
    
    To avoid reading a potentially garbage alpha channel when users
    of pdiff_compare pass in RGB24 images, if the format is RGB24,
    force the alpha channel to be 0xff.
    
    This commit also updates CI to adjust for the new tests that have
    started/stopped failing. New failures often are cases where
    the reference image has alpha transparency, but the test output
    does not; new passing tests may indicate that the unused alpha
    channel of an RGB24 image was garbage, but now is ignored.

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]);
commit a8012953ed2821b1d9444b28e1dcc95846004dce
Author: Manuel Stoeckl <code at mstoeckl.com>
Date:   Sun Aug 29 11:54:36 2021 -0400

    ci: sort lists of ignored tests

diff --git a/.gitlab-ci/ignore-image-argb32.txt b/.gitlab-ci/ignore-image-argb32.txt
index 9b70c84a5..84a246f17 100644
--- a/.gitlab-ci/ignore-image-argb32.txt
+++ b/.gitlab-ci/ignore-image-argb32.txt
@@ -1,5 +1,8 @@
 clip-text
 culled-glyphs
+ft-show-glyphs-positioning
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 halo-transform
 overlapping-glyphs
 record1414x-select-font-face
@@ -8,13 +11,10 @@ show-glyphs-advance
 subsurface
 subsurface-scale
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-pattern
 text-rotate
 text-unhinted-metrics
-ft-show-glyphs-positioning
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-image-rgb24.txt b/.gitlab-ci/ignore-image-rgb24.txt
index abaa20111..2ed564551 100644
--- a/.gitlab-ci/ignore-image-rgb24.txt
+++ b/.gitlab-ci/ignore-image-rgb24.txt
@@ -1,6 +1,9 @@
 clip-text
 culled-glyphs
 extended-blend-alpha-mask
+ft-show-glyphs-positioning
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 halo-transform
 overlapping-glyphs
 record1414x-select-font-face
@@ -10,13 +13,10 @@ show-glyphs-advance
 subsurface
 subsurface-scale
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-pattern
 text-rotate
 text-unhinted-metrics
-ft-show-glyphs-positioning
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-image16-rgb24.txt b/.gitlab-ci/ignore-image16-rgb24.txt
index 6705caf6b..0e2533821 100644
--- a/.gitlab-ci/ignore-image16-rgb24.txt
+++ b/.gitlab-ci/ignore-image16-rgb24.txt
@@ -1,18 +1,19 @@
 a1-bug
+a1-tiger
 aliasing
 arc-direction
 arc-looping-dash
 big-line
-bug-spline
 bug-84115
 bug-bo-ricotz
-bug-source-cu
 bug-extents
-bug-seams
 bug-image-compositor
+bug-seams
+bug-source-cu
+bug-spline
 caps
-caps-2
 caps-05
+caps-2
 caps-joins-2
 caps-joins-alpha
 caps-joins-curve
@@ -20,28 +21,28 @@ caps-tails-curve
 clear-source
 clip-disjoint
 clip-disjoint-quad
-clip-stroke-unbounded
-clip-fill-nz-unbounded
-clip-fill-eo-unbounded
 clip-fill
+clip-fill-eo-unbounded
+clip-fill-nz-unbounded
 clip-image
 clip-intersect
 clip-operator
 clip-push-group
 clip-shape
 clip-stroke
+clip-stroke-unbounded
 clip-text
 clip-twice
 close-path-current-point
 copy-path
-coverage-rectangles
-coverage-rhombus
+coverage-abutting
+coverage-column-triangles
 coverage-intersecting-quads
 coverage-intersecting-triangles
+coverage-rectangles
+coverage-rhombus
 coverage-row-triangles
-coverage-column-triangles
 coverage-triangles
-coverage-abutting
 culled-glyphs
 dash-caps-joins
 dash-curve
@@ -54,13 +55,13 @@ degenerate-path
 degenerate-pen
 degenerate-rel-curve-to
 drunkard-tails
-extend-pad-border
 extended-blend
 extended-blend-alpha
-extended-blend-mask
 extended-blend-alpha-mask
+extended-blend-mask
 extended-blend-solid
 extended-blend-solid-alpha
+extend-pad-border
 fallback
 fill-alpha
 fill-alpha-pattern
@@ -74,6 +75,10 @@ fill-rule
 filter-bilinear-extents
 finer-grained-fallbacks
 font-matrix-translation
+ft-show-glyphs-positioning
+ft-show-glyphs-table
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 glyph-cache-pressure
 gradient-alpha
 gradient-constant-alpha
@@ -86,16 +91,16 @@ huge-radial
 inverse-text
 joins
 joins-loop
-joins-star
 joins-retrace
+joins-star
 large-font
 large-twin-antialias-mixed
 leaky-dashed-stroke
-line-width-overlap-offset
-line-width-scale
 linear-gradient
 linear-gradient-reflect
 linear-gradient-subset
+line-width-overlap-offset
+line-width-scale
 long-dashed-lines
 mask
 mask-alpha
@@ -113,8 +118,8 @@ new-sub-path
 operator-source
 over-around-source
 overlapping-boxes
-overlapping-glyphs
 overlapping-dash-caps
+overlapping-glyphs
 paint-source-alpha
 paint-with-alpha
 paint-with-alpha-clip
@@ -125,72 +130,74 @@ pass-through
 path-append
 path-stroke-twice
 pdf-isolated-group
+pixman-downscale-best-24
+pixman-downscale-best-96
+pixman-downscale-bilinear-96
 pixman-downscale-fast-96
 pixman-downscale-good-96
-pixman-downscale-best-96
-pixman-downscale-best-24
 pixman-downscale-nearest-96
-pixman-downscale-bilinear-96
 pixman-rotate
+pthread-same-source
+pthread-show-text
 push-group
 push-group-color
 radial-gradient
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
+radial-gradient-source
 random-clip
-random-intersections-eo
-random-intersections-nonzero
 random-intersections-curves-eo
 random-intersections-curves-nz
+random-intersections-eo
+random-intersections-nonzero
 raster-source
-record-paint-alpha
-record-paint-alpha-clip
-record-paint-alpha-clip-mask
-record-fill-alpha
-record-select-font-face
-record-text-transform
+record1414x-fill-alpha
 record1414x-paint-alpha
 record1414x-paint-alpha-clip
 record1414x-paint-alpha-clip-mask
-record1414x-fill-alpha
 record1414x-select-font-face
 record1414x-text-transform
+record2x-fill-alpha
 record2x-paint-alpha
 record2x-paint-alpha-clip
 record2x-paint-alpha-clip-mask
-record2x-fill-alpha
 record2x-select-font-face
 record2x-text-transform
+record90-fill-alpha
 record90-paint-alpha
 record90-paint-alpha-clip
 record90-paint-alpha-clip-mask
-record90-fill-alpha
 record90-select-font-face
 record90-text-transform
-recordflip-whole-paint-alpha
-recordflip-whole-paint-alpha-clip
-recordflip-whole-paint-alpha-clip-mask
-recordflip-whole-fill-alpha
-recordflip-whole-select-font-face
-recordflip-whole-text-transform
+record-fill-alpha
+recordflip-fill-alpha
 recordflip-paint-alpha
 recordflip-paint-alpha-clip
 recordflip-paint-alpha-clip-mask
-recordflip-fill-alpha
 recordflip-select-font-face
 recordflip-text-transform
-record-neg-extents-unbounded
-record-neg-extents-bounded
-record-mesh
-record-replay-extend-repeat
-record-replay-extend-reflect
-record-replay-extend-pad
-recording-surface-over
-recording-surface-source
+recordflip-whole-fill-alpha
+recordflip-whole-paint-alpha
+recordflip-whole-paint-alpha-clip
+recordflip-whole-paint-alpha-clip-mask
+recordflip-whole-select-font-face
+recordflip-whole-text-transform
 recording-surface-extend-none
-recording-surface-extend-repeat
 recording-surface-extend-reflect
+recording-surface-extend-repeat
+recording-surface-over
+recording-surface-source
+record-mesh
+record-neg-extents-bounded
+record-neg-extents-unbounded
+record-paint-alpha
+record-paint-alpha-clip
+record-paint-alpha-clip-mask
+record-replay-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-select-font-face
+record-text-transform
 rectilinear-dash-scale-unaligned
 reflected-stroke
 rel-path
@@ -200,15 +207,13 @@ rounded-rectangle-fill
 rounded-rectangle-stroke
 scale-offset-image
 scale-offset-similar
-stroke-ctm-caps
-stroke-image
 select-font-face
 set-source
+shape-general-convex
+shape-sierpinski
 shifted-operator
 show-glyphs-advance
 show-text-current-point
-shape-general-convex
-shape-sierpinski
 simple-edge
 smask
 smask-fill
@@ -217,6 +222,8 @@ smask-paint
 smask-stroke
 smask-text
 spline-decomposition
+stroke-ctm-caps
+stroke-image
 stroke-pattern
 subsurface
 subsurface-scale
@@ -226,18 +233,17 @@ surface-pattern-scale-down
 surface-pattern-scale-up
 text-antialias-gray
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-glyph-range
 text-pattern
 text-rotate
 text-transform
 text-unhinted-metrics
-tighten-bounds
 tiger
-a1-tiger
+tighten-bounds
 transforms
 trap-clip
 twin
@@ -251,14 +257,8 @@ user-font-mask
 user-font-proxy
 user-font-rescale
 world-map
-world-map-stroke
 world-map-fill
+world-map-stroke
 xcb-huge-image-shm
 xcb-huge-subimage
 xcomposite-projection
-pthread-same-source
-pthread-show-text
-ft-show-glyphs-positioning
-ft-show-glyphs-table
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-pdf-argb32.txt b/.gitlab-ci/ignore-pdf-argb32.txt
index 2fc1fa760..bb7abf93a 100644
--- a/.gitlab-ci/ignore-pdf-argb32.txt
+++ b/.gitlab-ci/ignore-pdf-argb32.txt
@@ -10,6 +10,10 @@ filter-bilinear-extents
 filter-nearest-offset
 filter-nearest-transformed
 font-matrix-translation
+ft-show-glyphs-positioning
+ft-show-glyphs-table
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 glyph-cache-pressure
 halo
 halo-transform
@@ -22,32 +26,34 @@ overlapping-glyphs
 paint-with-alpha-clip
 partial-clip-text-bottom
 partial-clip-text-left
-pixman-downscale-fast-95
+pixman-downscale-best-24
+pixman-downscale-best-95
+pixman-downscale-bilinear-24
 pixman-downscale-fast-24
+pixman-downscale-fast-95
 pixman-downscale-good-24
-pixman-downscale-best-95
-pixman-downscale-best-24
-pixman-downscale-nearest-95
 pixman-downscale-nearest-24
-pixman-downscale-bilinear-24
+pixman-downscale-nearest-95
+pthread-same-source
+pthread-show-text
 radial-gradient
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
 radial-gradient-one-stop
+radial-gradient-source
 record1414x-select-font-face
 record1414x-text-transform
 record2x-text-transform
-record-replay-extend-repeat
-record-replay-extend-reflect
-recording-surface-over
-recording-surface-extend-repeat
 recording-surface-extend-reflect
-rectilinear-miter-limit
+recording-surface-extend-repeat
+recording-surface-over
+record-replay-extend-reflect
+record-replay-extend-repeat
 rectilinear-dash
+rectilinear-miter-limit
 rectilinear-stroke
-rotate-image-surface-paint
 rotate-clip-image-surface-paint
+rotate-image-surface-paint
 select-font-face
 self-copy
 show-glyphs-advance
@@ -67,9 +73,3 @@ trap-clip
 twin
 user-font-proxy
 user-font-rescale
-pthread-same-source
-pthread-show-text
-ft-show-glyphs-positioning
-ft-show-glyphs-table
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-pdf-rgb24.txt b/.gitlab-ci/ignore-pdf-rgb24.txt
index ae5e7e994..33b8694f6 100644
--- a/.gitlab-ci/ignore-pdf-rgb24.txt
+++ b/.gitlab-ci/ignore-pdf-rgb24.txt
@@ -8,6 +8,10 @@ filter-bilinear-extents
 filter-nearest-offset
 filter-nearest-transformed
 font-matrix-translation
+ft-show-glyphs-positioning
+ft-show-glyphs-table
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 glyph-cache-pressure
 halo
 halo-transform
@@ -20,24 +24,23 @@ overlapping-glyphs
 paint-with-alpha-clip
 partial-clip-text-bottom
 partial-clip-text-left
-pixman-downscale-fast-95
+pixman-downscale-best-24
+pixman-downscale-best-95
+pixman-downscale-bilinear-24
 pixman-downscale-fast-24
+pixman-downscale-fast-95
 pixman-downscale-good-24
-pixman-downscale-best-95
-pixman-downscale-best-24
-pixman-downscale-nearest-95
 pixman-downscale-nearest-24
-pixman-downscale-bilinear-24
+pixman-downscale-nearest-95
+pthread-same-source
+pthread-show-text
 radial-gradient
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
 radial-gradient-one-stop
+radial-gradient-source
 random-intersections-curves-eo
 random-intersections-curves-nz
-record-paint-alpha-clip
-record-select-font-face
-record-text-transform
 record1414x-paint-alpha
 record1414x-paint-alpha-clip
 record1414x-paint-alpha-clip-mask
@@ -50,21 +53,24 @@ record90-paint-alpha-clip
 record90-paint-alpha-clip-mask
 record90-select-font-face
 record90-text-transform
+recordflip-select-font-face
+recordflip-text-transform
 recordflip-whole-select-font-face
 recordflip-whole-self-intersecting
 recordflip-whole-text-transform
-recordflip-select-font-face
-recordflip-text-transform
-record-replay-extend-repeat
-record-replay-extend-reflect
-recording-surface-over
 recording-surface-extend-repeat
-rectilinear-miter-limit
+recording-surface-over
+record-paint-alpha-clip
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-select-font-face
+record-text-transform
 rectilinear-dash
+rectilinear-miter-limit
 rectilinear-stroke
 rel-path
-rotate-image-surface-paint
 rotate-clip-image-surface-paint
+rotate-image-surface-paint
 select-font-face
 self-copy
 show-glyphs-advance
@@ -82,9 +88,3 @@ trap-clip
 twin
 user-font-proxy
 user-font-rescale
-pthread-same-source
-pthread-show-text
-ft-show-glyphs-positioning
-ft-show-glyphs-table
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-quartz-argb32.txt b/.gitlab-ci/ignore-quartz-argb32.txt
index 67810065a..e00077831 100644
--- a/.gitlab-ci/ignore-quartz-argb32.txt
+++ b/.gitlab-ci/ignore-quartz-argb32.txt
@@ -5,20 +5,19 @@ clip-operator
 coverage-rhombus
 culled-glyphs
 extended-blend-alpha
-extended-blend-mask
 extended-blend-alpha-mask
+extended-blend-mask
 extended-blend-solid-alpha
 fallback
+ft-show-glyphs-positioning
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 negative-stride-image
 operator-www
 radial-gradient
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
-record-paint-alpha-clip-mask
-record-fill-alpha
-record-select-font-face
-record-text-transform
+radial-gradient-source
 record1414x-select-font-face
 record1414x-text-transform
 record2x-paint-alpha-clip-mask
@@ -27,27 +26,28 @@ record2x-text-transform
 record90-fill-alpha
 record90-select-font-face
 record90-text-transform
-recordflip-whole-select-font-face
-recordflip-whole-text-transform
+record-fill-alpha
 recordflip-select-font-face
 recordflip-text-transform
-record-neg-extents-bounded
+recordflip-whole-select-font-face
+recordflip-whole-text-transform
 record-mesh
-record-replay-extend-repeat
-record-replay-extend-reflect
+record-neg-extents-bounded
+record-paint-alpha-clip-mask
 record-replay-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-select-font-face
+record-text-transform
 simple-edge
 subsurface
 subsurface-outside-target
 subsurface-scale
 surface-pattern
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-unhinted-metrics
 user-font-proxy
-ft-show-glyphs-positioning
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-quartz-rgb24.txt b/.gitlab-ci/ignore-quartz-rgb24.txt
index 314ef4aef..d2084bd31 100644
--- a/.gitlab-ci/ignore-quartz-rgb24.txt
+++ b/.gitlab-ci/ignore-quartz-rgb24.txt
@@ -6,20 +6,19 @@ coverage-rhombus
 culled-glyphs
 extended-blend
 extended-blend-alpha
-extended-blend-mask
 extended-blend-alpha-mask
+extended-blend-mask
 extended-blend-solid
 extended-blend-solid-alpha
+ft-show-glyphs-positioning
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 negative-stride-image
 operator-www
 radial-gradient
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
-record-paint-alpha-clip-mask
-record-fill-alpha
-record-select-font-face
-record-text-transform
+radial-gradient-source
 record1414x-select-font-face
 record1414x-text-transform
 record2x-paint-alpha-clip-mask
@@ -28,27 +27,28 @@ record2x-text-transform
 record90-fill-alpha
 record90-select-font-face
 record90-text-transform
-recordflip-whole-select-font-face
-recordflip-whole-text-transform
+record-fill-alpha
 recordflip-select-font-face
 recordflip-text-transform
-record-neg-extents-unbounded
-record-neg-extents-bounded
+recordflip-whole-select-font-face
+recordflip-whole-text-transform
 record-mesh
-record-replay-extend-repeat
-record-replay-extend-reflect
+record-neg-extents-bounded
+record-neg-extents-unbounded
+record-paint-alpha-clip-mask
 record-replay-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-select-font-face
+record-text-transform
 shifted-operator
 simple-edge
 subsurface
 subsurface-scale
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-unhinted-metrics
 user-font-proxy
-ft-show-glyphs-positioning
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-recording-argb32.txt b/.gitlab-ci/ignore-recording-argb32.txt
index 99cee110f..2697bd99c 100644
--- a/.gitlab-ci/ignore-recording-argb32.txt
+++ b/.gitlab-ci/ignore-recording-argb32.txt
@@ -4,32 +4,32 @@ clip-text
 coverage-rectangles
 culled-glyphs
 finer-grained-fallbacks
+ft-show-glyphs-positioning
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 halo-transform
 overlapping-glyphs
+pthread-same-source
 record1414x-fill-alpha
 record1414x-select-font-face
 record1414x-text-transform
-record2x-paint-alpha-clip-mask
 record2x-fill-alpha
+record2x-paint-alpha-clip-mask
 record2x-text-transform
-recording-surface-over
-recording-surface-source
 recording-surface-extend-none
-recording-surface-extend-repeat
 recording-surface-extend-reflect
+recording-surface-extend-repeat
+recording-surface-over
+recording-surface-source
 scale-offset-similar
 show-glyphs-advance
 subsurface
 subsurface-scale
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-pattern
 text-rotate
 text-unhinted-metrics
-pthread-same-source
-ft-show-glyphs-positioning
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-recording-rgb24.txt b/.gitlab-ci/ignore-recording-rgb24.txt
index 47838dcc3..9ad61875d 100644
--- a/.gitlab-ci/ignore-recording-rgb24.txt
+++ b/.gitlab-ci/ignore-recording-rgb24.txt
@@ -5,32 +5,32 @@ coverage-rectangles
 culled-glyphs
 extended-blend-alpha-mask
 finer-grained-fallbacks
+ft-show-glyphs-positioning
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 halo-transform
 overlapping-glyphs
+pthread-same-source
 record1414x-fill-alpha
 record1414x-select-font-face
 record1414x-text-transform
-record2x-paint-alpha-clip-mask
 record2x-fill-alpha
+record2x-paint-alpha-clip-mask
 record2x-text-transform
-recording-surface-over
-recording-surface-source
 recording-surface-extend-none
-recording-surface-extend-repeat
 recording-surface-extend-reflect
+recording-surface-extend-repeat
+recording-surface-over
+recording-surface-source
 scale-offset-similar
 show-glyphs-advance
 subsurface
 subsurface-scale
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-pattern
 text-rotate
 text-unhinted-metrics
-pthread-same-source
-ft-show-glyphs-positioning
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-script-argb32.txt b/.gitlab-ci/ignore-script-argb32.txt
index 493e69bdb..dd8b6ee8c 100644
--- a/.gitlab-ci/ignore-script-argb32.txt
+++ b/.gitlab-ci/ignore-script-argb32.txt
@@ -2,36 +2,37 @@ a1-bug
 a1-fill
 arc-looping-dash
 bilevel-image
+bitmap-font
 bug-51910
 bug-84115
 bug-seams
 caps
-caps-2
-caps-1
 caps-05
-checkerboard
-caps-joins-2
-caps-joins-1
+caps-1
+caps-2
 caps-joins-05
+caps-joins-1
+caps-joins-2
 caps-joins-curve
-caps-tails-curve
 caps-sub-paths
+caps-tails-curve
+checkerboard
 clear-source
-clip-disjoint-quad
 clip-device-offset
+clip-disjoint-quad
 clip-image
 clip-mixed-antialias
-clip-push-group
 clip-polygons
+clip-push-group
 clip-text
 close-path
 close-path-current-point
 composite-integer-translate-over-repeat
 copy-path
-coverage-rectangles
+coverage-abutting
 coverage-intersecting-quads
 coverage-intersecting-triangles
-coverage-abutting
+coverage-rectangles
 culled-glyphs
 dash-caps-joins
 dash-curve
@@ -49,13 +50,16 @@ fill-and-stroke-alpha
 fill-and-stroke-alpha-add
 filter-bilinear-extents
 font-matrix-translation
+ft-show-glyphs-positioning
+ft-show-glyphs-table
+ft-text-antialias-none
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 glyph-cache-pressure
 halo
 halo-transform
 huge-radial
 image-surface-source
-xcb-surface-source
-xlib-surface-source
 infinite-join
 inverse-text
 joins
@@ -65,10 +69,10 @@ large-twin-antialias-mixed
 leaky-dashed-rectangle
 leaky-dashed-stroke
 leaky-polygon
-line-width-scale
-line-width-tolerance
 linear-gradient-extend
 linear-gradient-reflect
+line-width-scale
+line-width-tolerance
 long-dashed-lines
 map-all-to-image
 map-bit-to-image
@@ -86,79 +90,82 @@ operator-alpha-alpha
 overlapping-glyphs
 paint-source-alpha
 paint-with-alpha
-paint-with-alpha-solid-clip
 paint-with-alpha-clip
+paint-with-alpha-solid-clip
 partial-clip-text-bottom
 partial-clip-text-left
+partial-coverage-half-reference
 partial-coverage-reference
 partial-coverage-three-quarter-reference
-partial-coverage-half-reference
 path-stroke-twice
+pdf-surface-source
+ps-surface-source
+pthread-show-text
 push-group-color
 radial-gradient
+radial-gradient-extend
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
 radial-gradient-one-stop
-radial-gradient-extend
-record-paint-alpha-solid-clip
-record-paint-alpha-clip
-record-select-font-face
-record-text-transform
+radial-gradient-source
 record1414x-paint-alpha
-record1414x-paint-alpha-solid-clip
 record1414x-paint-alpha-clip
+record1414x-paint-alpha-solid-clip
 record1414x-select-font-face
 record1414x-text-transform
 record2x-paint-alpha
-record2x-paint-alpha-solid-clip
 record2x-paint-alpha-clip
+record2x-paint-alpha-solid-clip
 record2x-select-font-face
 record2x-text-transform
 record90-paint-alpha-clip-mask
 record90-select-font-face
 record90-text-transform
-recordflip-whole-select-font-face
-recordflip-whole-text-transform
 recordflip-select-font-face
 recordflip-text-transform
-record-neg-extents-bounded
+recordflip-whole-select-font-face
+recordflip-whole-text-transform
+recording-surface-extend-none
+recording-surface-extend-reflect
+recording-surface-extend-repeat
+recording-surface-over
+recording-surface-source
 record-mesh
+record-neg-extents-bounded
+record-paint-alpha-clip
+record-paint-alpha-solid-clip
 record-replay-extend-none
-record-replay-extend-repeat
-record-replay-extend-reflect
 record-replay-extend-pad
-recording-surface-over
-recording-surface-source
-recording-surface-extend-none
-recording-surface-extend-repeat
-recording-surface-extend-reflect
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-select-font-face
+record-text-transform
 rectilinear-miter-limit
 reflected-stroke
 scale-offset-image
 scale-offset-similar
-stroke-ctm-caps
 select-font-face
 self-copy
+shape-sierpinski
 show-glyphs-advance
 show-text-current-point
-shape-sierpinski
 smask
 smask-image-mask
 smask-mask
 smask-paint
 smask-text
 stride-12-image
+stroke-ctm-caps
 subsurface
 subsurface-scale
 surface-pattern
 surface-pattern-scale-up
 text-antialias-gray
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-glyph-range
 text-pattern
 text-rotate
@@ -175,16 +182,9 @@ user-font
 user-font-proxy
 user-font-rescale
 world-map
-world-map-stroke
 world-map-fill
+world-map-stroke
 xcb-stress-cache
+xcb-surface-source
 xcomposite-projection
-pthread-show-text
-bitmap-font
-ft-show-glyphs-positioning
-ft-show-glyphs-table
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
-ft-text-antialias-none
-pdf-surface-source
-ps-surface-source
+xlib-surface-source
diff --git a/.gitlab-ci/ignore-svg11-argb32.txt b/.gitlab-ci/ignore-svg11-argb32.txt
index 26de01d66..f231e26dc 100644
--- a/.gitlab-ci/ignore-svg11-argb32.txt
+++ b/.gitlab-ci/ignore-svg11-argb32.txt
@@ -8,6 +8,9 @@ extended-blend-solid-alpha
 filter-bilinear-extents
 filter-nearest-offset
 filter-nearest-transformed
+ft-show-glyphs-positioning
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 halo-transform
 linear-gradient-reflect
 mask-transformed-image
@@ -17,15 +20,13 @@ paint-source-alpha
 paint-with-alpha
 paint-with-alpha-clip
 paint-with-alpha-clip-mask
+pthread-similar
 radial-gradient
 radial-gradient-mask
-record-paint-alpha
-record-paint-alpha-clip
-record-paint-alpha-clip-mask
+record1414x-fill-alpha
 record1414x-paint-alpha
 record1414x-paint-alpha-clip
 record1414x-paint-alpha-clip-mask
-record1414x-fill-alpha
 record1414x-select-font-face
 record1414x-text-transform
 record2x-paint-alpha
@@ -33,12 +34,15 @@ record2x-paint-alpha-clip
 record2x-paint-alpha-clip-mask
 record90-paint-alpha-clip
 record90-paint-alpha-clip-mask
-recordflip-whole-paint-alpha
-recordflip-whole-paint-alpha-clip
-recordflip-whole-paint-alpha-clip-mask
 recordflip-paint-alpha
 recordflip-paint-alpha-clip
 recordflip-paint-alpha-clip-mask
+recordflip-whole-paint-alpha
+recordflip-whole-paint-alpha-clip
+recordflip-whole-paint-alpha-clip-mask
+record-paint-alpha
+record-paint-alpha-clip
+record-paint-alpha-clip-mask
 scale-offset-image
 scale-source-surface-paint
 self-copy
@@ -57,7 +61,3 @@ text-rotate
 text-unhinted-metrics
 tighten-bounds
 unbounded-operator
-pthread-similar
-ft-show-glyphs-positioning
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-svg11-rgb24.txt b/.gitlab-ci/ignore-svg11-rgb24.txt
index 4dd13ae01..cb52865d2 100644
--- a/.gitlab-ci/ignore-svg11-rgb24.txt
+++ b/.gitlab-ci/ignore-svg11-rgb24.txt
@@ -9,6 +9,9 @@ extended-blend-solid-alpha
 filter-bilinear-extents
 filter-nearest-offset
 filter-nearest-transformed
+ft-show-glyphs-positioning
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 gradient-alpha
 gradient-constant-alpha
 halo-transform
@@ -21,17 +24,15 @@ paint-source-alpha
 paint-with-alpha
 paint-with-alpha-clip
 paint-with-alpha-clip-mask
+pthread-similar
 radial-gradient
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
-record-paint-alpha
-record-paint-alpha-clip
-record-paint-alpha-clip-mask
+radial-gradient-source
+record1414x-fill-alpha
 record1414x-paint-alpha
 record1414x-paint-alpha-clip
 record1414x-paint-alpha-clip-mask
-record1414x-fill-alpha
 record1414x-select-font-face
 record1414x-text-transform
 record2x-paint-alpha
@@ -39,12 +40,15 @@ record2x-paint-alpha-clip
 record2x-paint-alpha-clip-mask
 record90-paint-alpha-clip
 record90-paint-alpha-clip-mask
-recordflip-whole-paint-alpha
-recordflip-whole-paint-alpha-clip
-recordflip-whole-paint-alpha-clip-mask
 recordflip-paint-alpha
 recordflip-paint-alpha-clip
 recordflip-paint-alpha-clip-mask
+recordflip-whole-paint-alpha
+recordflip-whole-paint-alpha-clip
+recordflip-whole-paint-alpha-clip-mask
+record-paint-alpha
+record-paint-alpha-clip
+record-paint-alpha-clip-mask
 scale-offset-image
 scale-source-surface-paint
 self-copy
@@ -63,7 +67,3 @@ text-rotate
 text-unhinted-metrics
 tighten-bounds
 unbounded-operator
-pthread-similar
-ft-show-glyphs-positioning
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-xcb-argb32.txt b/.gitlab-ci/ignore-xcb-argb32.txt
index 2acf41059..18cfefded 100644
--- a/.gitlab-ci/ignore-xcb-argb32.txt
+++ b/.gitlab-ci/ignore-xcb-argb32.txt
@@ -1,14 +1,16 @@
+a1-tiger
 bug-spline
 clip-operator
-coverage-rectangles
-coverage-rhombus
+coverage-column-triangles
 coverage-intersecting-quads
 coverage-intersecting-triangles
+coverage-rectangles
+coverage-rhombus
 coverage-row-triangles
-coverage-column-triangles
 coverage-triangles
 culled-glyphs
 fill-image
+ft-text-vertical-layout-type1
 halo
 halo-transform
 hatchings
@@ -16,41 +18,39 @@ operator-source
 overlapping-boxes
 radial-gradient
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
+radial-gradient-source
 radial-outer-focus
 random-clip
-record-self-intersecting
 record1414x-fill-alpha
 record1414x-self-intersecting
-record2x-paint-alpha-clip-mask
 record2x-fill-alpha
-record90-paint-alpha-solid-clip
+record2x-paint-alpha-clip-mask
 record90-paint-alpha-clip
+record90-paint-alpha-solid-clip
 record90-self-intersecting
-recordflip-whole-paint-alpha-clip-mask
-recordflip-whole-fill-alpha
-recordflip-whole-self-intersecting
 recordflip-paint-alpha-clip-mask
 recordflip-self-intersecting
-record-neg-extents-unbounded
+recordflip-whole-fill-alpha
+recordflip-whole-paint-alpha-clip-mask
+recordflip-whole-self-intersecting
+recording-surface-extend-pad
+recording-surface-extend-repeat
 record-neg-extents-bounded
-record-replay-extend-repeat
-record-replay-extend-reflect
+record-neg-extents-unbounded
 record-replay-extend-pad
-recording-surface-extend-repeat
-recording-surface-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-self-intersecting
 rotated-clip
+simple-edge
 stroke-clipped
 stroke-image
-simple-edge
-text-antialias-subpixel-vrgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-rotate
 tighten-bounds
-a1-tiger
 twin-antialias-none
 unantialiased-shapes
 user-font
 user-font-proxy
-ft-text-vertical-layout-type1
diff --git a/.gitlab-ci/ignore-xcb-fallback-rgb24.txt b/.gitlab-ci/ignore-xcb-fallback-rgb24.txt
index 8f2477884..902ffa63d 100644
--- a/.gitlab-ci/ignore-xcb-fallback-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-fallback-rgb24.txt
@@ -3,6 +3,9 @@ coverage-intersecting-triangles
 culled-glyphs
 extended-blend-alpha-mask
 fallback
+ft-show-glyphs-positioning
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 halo-transform
 overlapping-glyphs
 record1414x-select-font-face
@@ -11,13 +14,10 @@ show-glyphs-advance
 subsurface
 subsurface-scale
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-pattern
 text-rotate
 text-unhinted-metrics
-ft-show-glyphs-positioning
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-xcb-render-0-0-argb32.txt b/.gitlab-ci/ignore-xcb-render-0-0-argb32.txt
index 13bcae273..9e9fbc37c 100644
--- a/.gitlab-ci/ignore-xcb-render-0-0-argb32.txt
+++ b/.gitlab-ci/ignore-xcb-render-0-0-argb32.txt
@@ -1,30 +1,30 @@
 clip-disjoint-hatching
-clip-stroke-unbounded
-clip-fill-nz-unbounded
 clip-fill-eo-unbounded
+clip-fill-nz-unbounded
 clip-operator
 clip-polygons
 clip-shape
+clip-stroke-unbounded
 clip-twice
 coverage-intersecting-triangles
 culled-glyphs
+ft-text-vertical-layout-type1
 hatchings
 radial-gradient
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
+radial-gradient-source
 random-clip
-record-paint-alpha-solid-clip
 record1414x-select-font-face
 record1414x-text-transform
 record-neg-extents-bounded
-record-replay-extend-repeat
+record-paint-alpha-solid-clip
 record-replay-extend-reflect
+record-replay-extend-repeat
 rotated-clip
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 trap-clip
-ft-text-vertical-layout-type1
diff --git a/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt b/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt
index 21de16050..1578b7e9a 100644
--- a/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-render-0-0-rgb24.txt
@@ -1,36 +1,36 @@
 clip-disjoint-hatching
-clip-stroke-unbounded
-clip-fill-nz-unbounded
 clip-fill-eo-unbounded
+clip-fill-nz-unbounded
 clip-operator
 clip-polygons
 clip-shape
+clip-stroke-unbounded
 clip-twice
 coverage-intersecting-triangles
 culled-glyphs
 extended-blend-alpha-mask
 fallback
+ft-text-vertical-layout-type1
 hatchings
 mask
 operator-source
 radial-gradient
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
+radial-gradient-source
 random-clip
-record-paint-alpha-solid-clip
 record1414x-select-font-face
 record1414x-text-transform
+recording-surface-extend-none
+recording-surface-over
 record-neg-extents-bounded
-record-replay-extend-repeat
+record-paint-alpha-solid-clip
 record-replay-extend-reflect
-recording-surface-over
-recording-surface-extend-none
+record-replay-extend-repeat
 rotated-clip
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 trap-clip
-ft-text-vertical-layout-type1
diff --git a/.gitlab-ci/ignore-xcb-rgb24.txt b/.gitlab-ci/ignore-xcb-rgb24.txt
index c1823bb5a..6baceeb65 100644
--- a/.gitlab-ci/ignore-xcb-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-rgb24.txt
@@ -1,26 +1,27 @@
+a1-tiger
 arc-looping-dash
-bug-spline
 bug-51910
 bug-84115
-bug-source-cu
 bug-image-compositor
-caps-2
-caps-1
+bug-source-cu
+bug-spline
 caps-05
-caps-joins-2
-caps-joins-1
+caps-1
+caps-2
 caps-joins-05
+caps-joins-1
+caps-joins-2
 clear-source
 clip-operator
 clip-text
-coverage-rectangles
-coverage-rhombus
+coverage-abutting
+coverage-column-triangles
 coverage-intersecting-quads
 coverage-intersecting-triangles
+coverage-rectangles
+coverage-rhombus
 coverage-row-triangles
-coverage-column-triangles
 coverage-triangles
-coverage-abutting
 culled-glyphs
 dash-curve
 extended-blend-alpha-mask
@@ -28,6 +29,10 @@ fallback
 fill-image
 filter-bilinear-extents
 font-matrix-translation
+ft-show-glyphs-positioning
+ft-show-glyphs-table
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 glyph-cache-pressure
 halo
 halo-transform
@@ -43,8 +48,8 @@ operator-alpha-alpha
 operator-clear
 operator-source
 overlapping-boxes
-overlapping-glyphs
 overlapping-dash-caps
+overlapping-glyphs
 partial-clip-text-bottom
 partial-clip-text-left
 partial-coverage-reference
@@ -53,42 +58,40 @@ push-group
 push-group-color
 radial-gradient
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
+radial-gradient-source
 radial-outer-focus
 random-clip
-record-self-intersecting
 record1414x-fill-alpha
 record1414x-self-intersecting
 record1414x-text-transform
-record2x-paint-alpha-clip-mask
 record2x-fill-alpha
-record90-paint-alpha-solid-clip
-record90-paint-alpha-clip
+record2x-paint-alpha-clip-mask
 record90-fill-alpha
+record90-paint-alpha-clip
+record90-paint-alpha-solid-clip
 record90-self-intersecting
-recordflip-whole-paint-alpha-clip-mask
-recordflip-whole-fill-alpha
-recordflip-whole-self-intersecting
-recordflip-paint-alpha-clip-mask
 recordflip-fill-alpha
+recordflip-paint-alpha-clip-mask
 recordflip-self-intersecting
-record-neg-extents-unbounded
-record-neg-extents-bounded
-record-replay-extend-repeat
-record-replay-extend-reflect
-record-replay-extend-pad
-recording-surface-over
-recording-surface-source
+recordflip-whole-fill-alpha
+recordflip-whole-paint-alpha-clip-mask
+recordflip-whole-self-intersecting
 recording-surface-extend-none
-recording-surface-extend-repeat
-recording-surface-extend-reflect
 recording-surface-extend-pad
+recording-surface-extend-reflect
+recording-surface-extend-repeat
+recording-surface-over
+recording-surface-source
+record-neg-extents-bounded
+record-neg-extents-unbounded
+record-replay-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-self-intersecting
 reflected-stroke
 rotated-clip
 select-font-face
-stroke-clipped
-stroke-image
 show-glyphs-advance
 show-text-current-point
 simple-edge
@@ -99,21 +102,22 @@ smask-mask
 smask-paint
 smask-stroke
 smp-glyph
+stroke-clipped
+stroke-image
 subsurface
 subsurface-scale
 surface-pattern-operator
 surface-pattern-scale-up
 text-antialias-gray
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-glyph-range
 text-rotate
 text-transform
 tighten-bounds
-a1-tiger
 trap-clip
 twin
 twin-antialias-gray
@@ -126,7 +130,3 @@ user-font-proxy
 world-map
 world-map-fill
 xcomposite-projection
-ft-show-glyphs-positioning
-ft-show-glyphs-table
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-xcb-window&-rgb24.txt b/.gitlab-ci/ignore-xcb-window&-rgb24.txt
index f0137c1c2..8f6f96d5c 100644
--- a/.gitlab-ci/ignore-xcb-window&-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-window&-rgb24.txt
@@ -1,28 +1,32 @@
 arc-looping-dash
-bug-spline
 bug-51910
-caps-2
-caps-1
+bug-spline
 caps-05
-caps-joins-2
-caps-joins-1
+caps-1
+caps-2
 caps-joins-05
+caps-joins-1
+caps-joins-2
 clear-source
 clip-operator
 clip-text
-coverage-rectangles
+coverage-abutting
+coverage-column-triangles
 coverage-intersecting-quads
 coverage-intersecting-triangles
+coverage-rectangles
 coverage-row-triangles
-coverage-column-triangles
 coverage-triangles
-coverage-abutting
 culled-glyphs
 extended-blend-alpha-mask
 fallback
 fill-image
 filter-bilinear-extents
 font-matrix-translation
+ft-show-glyphs-positioning
+ft-show-glyphs-table
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 glyph-cache-pressure
 halo
 halo-transform
@@ -36,8 +40,8 @@ operator-alpha-alpha
 operator-clear
 operator-source
 overlapping-boxes
-overlapping-glyphs
 overlapping-dash-caps
+overlapping-glyphs
 partial-clip-text-bottom
 partial-clip-text-left
 partial-coverage-reference
@@ -45,38 +49,36 @@ partial-coverage-three-quarter-reference
 push-group
 push-group-color
 radial-outer-focus
-record-self-intersecting
 record1414x-fill-alpha
 record1414x-self-intersecting
 record1414x-text-transform
-record2x-paint-alpha-clip-mask
 record2x-fill-alpha
-record90-paint-alpha-solid-clip
-record90-paint-alpha-clip
+record2x-paint-alpha-clip-mask
 record90-fill-alpha
+record90-paint-alpha-clip
+record90-paint-alpha-solid-clip
 record90-self-intersecting
-recordflip-whole-paint-alpha-clip-mask
-recordflip-whole-fill-alpha
-recordflip-whole-self-intersecting
-recordflip-paint-alpha-clip-mask
 recordflip-fill-alpha
+recordflip-paint-alpha-clip-mask
 recordflip-self-intersecting
-record-neg-extents-unbounded
-record-neg-extents-bounded
-record-replay-extend-repeat
-record-replay-extend-reflect
-record-replay-extend-pad
-recording-surface-over
-recording-surface-source
+recordflip-whole-fill-alpha
+recordflip-whole-paint-alpha-clip-mask
+recordflip-whole-self-intersecting
 recording-surface-extend-none
-recording-surface-extend-repeat
-recording-surface-extend-reflect
 recording-surface-extend-pad
+recording-surface-extend-reflect
+recording-surface-extend-repeat
+recording-surface-over
+recording-surface-source
+record-neg-extents-bounded
+record-neg-extents-unbounded
+record-replay-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-self-intersecting
 reflected-stroke
 rotated-clip
 select-font-face
-stroke-clipped
-stroke-image
 show-glyphs-advance
 show-text-current-point
 simple-edge
@@ -87,16 +89,18 @@ smask-mask
 smask-paint
 smask-stroke
 smp-glyph
+stroke-clipped
+stroke-image
 subsurface
 subsurface-scale
 surface-pattern-operator
 surface-pattern-scale-up
 text-antialias-gray
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-glyph-range
 text-rotate
 text-transform
@@ -109,7 +113,3 @@ twin-antialias-subpixel
 unantialiased-shapes
 unbounded-operator
 xcomposite-projection
-ft-show-glyphs-positioning
-ft-show-glyphs-table
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-xcb-window-rgb24.txt b/.gitlab-ci/ignore-xcb-window-rgb24.txt
index f0137c1c2..8f6f96d5c 100644
--- a/.gitlab-ci/ignore-xcb-window-rgb24.txt
+++ b/.gitlab-ci/ignore-xcb-window-rgb24.txt
@@ -1,28 +1,32 @@
 arc-looping-dash
-bug-spline
 bug-51910
-caps-2
-caps-1
+bug-spline
 caps-05
-caps-joins-2
-caps-joins-1
+caps-1
+caps-2
 caps-joins-05
+caps-joins-1
+caps-joins-2
 clear-source
 clip-operator
 clip-text
-coverage-rectangles
+coverage-abutting
+coverage-column-triangles
 coverage-intersecting-quads
 coverage-intersecting-triangles
+coverage-rectangles
 coverage-row-triangles
-coverage-column-triangles
 coverage-triangles
-coverage-abutting
 culled-glyphs
 extended-blend-alpha-mask
 fallback
 fill-image
 filter-bilinear-extents
 font-matrix-translation
+ft-show-glyphs-positioning
+ft-show-glyphs-table
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 glyph-cache-pressure
 halo
 halo-transform
@@ -36,8 +40,8 @@ operator-alpha-alpha
 operator-clear
 operator-source
 overlapping-boxes
-overlapping-glyphs
 overlapping-dash-caps
+overlapping-glyphs
 partial-clip-text-bottom
 partial-clip-text-left
 partial-coverage-reference
@@ -45,38 +49,36 @@ partial-coverage-three-quarter-reference
 push-group
 push-group-color
 radial-outer-focus
-record-self-intersecting
 record1414x-fill-alpha
 record1414x-self-intersecting
 record1414x-text-transform
-record2x-paint-alpha-clip-mask
 record2x-fill-alpha
-record90-paint-alpha-solid-clip
-record90-paint-alpha-clip
+record2x-paint-alpha-clip-mask
 record90-fill-alpha
+record90-paint-alpha-clip
+record90-paint-alpha-solid-clip
 record90-self-intersecting
-recordflip-whole-paint-alpha-clip-mask
-recordflip-whole-fill-alpha
-recordflip-whole-self-intersecting
-recordflip-paint-alpha-clip-mask
 recordflip-fill-alpha
+recordflip-paint-alpha-clip-mask
 recordflip-self-intersecting
-record-neg-extents-unbounded
-record-neg-extents-bounded
-record-replay-extend-repeat
-record-replay-extend-reflect
-record-replay-extend-pad
-recording-surface-over
-recording-surface-source
+recordflip-whole-fill-alpha
+recordflip-whole-paint-alpha-clip-mask
+recordflip-whole-self-intersecting
 recording-surface-extend-none
-recording-surface-extend-repeat
-recording-surface-extend-reflect
 recording-surface-extend-pad
+recording-surface-extend-reflect
+recording-surface-extend-repeat
+recording-surface-over
+recording-surface-source
+record-neg-extents-bounded
+record-neg-extents-unbounded
+record-replay-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-self-intersecting
 reflected-stroke
 rotated-clip
 select-font-face
-stroke-clipped
-stroke-image
 show-glyphs-advance
 show-text-current-point
 simple-edge
@@ -87,16 +89,18 @@ smask-mask
 smask-paint
 smask-stroke
 smp-glyph
+stroke-clipped
+stroke-image
 subsurface
 subsurface-scale
 surface-pattern-operator
 surface-pattern-scale-up
 text-antialias-gray
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-glyph-range
 text-rotate
 text-transform
@@ -109,7 +113,3 @@ twin-antialias-subpixel
 unantialiased-shapes
 unbounded-operator
 xcomposite-projection
-ft-show-glyphs-positioning
-ft-show-glyphs-table
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-xlib-argb32.txt b/.gitlab-ci/ignore-xlib-argb32.txt
index 914a7c1bf..098259fc7 100644
--- a/.gitlab-ci/ignore-xlib-argb32.txt
+++ b/.gitlab-ci/ignore-xlib-argb32.txt
@@ -1,19 +1,19 @@
 aliasing
 arc-looping-dash
-bug-spline
 bug-84115
 bug-extents
 bug-image-compositor
+bug-spline
 caps-joins-curve
 clip-disjoint
-clip-stroke-unbounded
 clip-operator
 clip-shape
 clip-stroke
+clip-stroke-unbounded
 clip-text
 close-path-current-point
-coverage-rhombus
 coverage-column-triangles
+coverage-rhombus
 culled-glyphs
 dash-caps-joins
 dash-curve
@@ -27,6 +27,9 @@ fill-and-stroke
 fill-and-stroke-alpha
 fill-and-stroke-alpha-add
 fill-image
+ft-show-glyphs-positioning
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 halo
 halo-transform
 hatchings
@@ -41,72 +44,73 @@ long-dashed-lines
 new-sub-path
 operator-source
 overlapping-boxes
-overlapping-glyphs
 overlapping-dash-caps
+overlapping-glyphs
 path-stroke-twice
+pthread-show-text
 radial-gradient
 radial-gradient-mask
-radial-gradient-source
 radial-gradient-mask-source
+radial-gradient-source
 radial-outer-focus
 random-clip
-random-intersections-eo
-random-intersections-nonzero
 random-intersections-curves-eo
 random-intersections-curves-nz
-record-select-font-face
-record-self-intersecting
-record-text-transform
+random-intersections-eo
+random-intersections-nonzero
 record1414x-fill-alpha
 record1414x-select-font-face
 record1414x-self-intersecting
 record1414x-text-transform
-record2x-paint-alpha-clip-mask
 record2x-fill-alpha
+record2x-paint-alpha-clip-mask
 record2x-select-font-face
 record2x-text-transform
-record90-paint-alpha-solid-clip
 record90-paint-alpha-clip
+record90-paint-alpha-solid-clip
 record90-select-font-face
 record90-self-intersecting
 record90-text-transform
-recordflip-whole-paint-alpha-clip-mask
-recordflip-whole-fill-alpha
-recordflip-whole-select-font-face
-recordflip-whole-self-intersecting
-recordflip-whole-text-transform
 recordflip-paint-alpha-clip-mask
 recordflip-select-font-face
 recordflip-self-intersecting
 recordflip-text-transform
-record-neg-extents-unbounded
+recordflip-whole-fill-alpha
+recordflip-whole-paint-alpha-clip-mask
+recordflip-whole-select-font-face
+recordflip-whole-self-intersecting
+recordflip-whole-text-transform
+recording-surface-extend-pad
+recording-surface-extend-repeat
 record-neg-extents-bounded
+record-neg-extents-unbounded
 record-replay-extend-none
-record-replay-extend-repeat
-record-replay-extend-reflect
 record-replay-extend-pad
-recording-surface-extend-repeat
-recording-surface-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-select-font-face
+record-self-intersecting
+record-text-transform
 reflected-stroke
 rel-path
 rounded-rectangle-stroke
 scale-offset-image
 scale-offset-similar
-stroke-clipped
-stroke-image
-show-glyphs-advance
 shape-general-convex
 shape-sierpinski
+show-glyphs-advance
 simple-edge
 smask
 smask-stroke
 smask-text
 spline-decomposition
+stroke-clipped
+stroke-image
 stroke-pattern
 subsurface
 subsurface-scale
-text-antialias-subpixel-vrgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-pattern
 text-rotate
 text-unhinted-metrics
@@ -121,7 +125,3 @@ user-font
 user-font-proxy
 world-map
 world-map-stroke
-pthread-show-text
-ft-show-glyphs-positioning
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-xlib-fallback-rgb24.txt b/.gitlab-ci/ignore-xlib-fallback-rgb24.txt
index f308f68c2..d86d694a1 100644
--- a/.gitlab-ci/ignore-xlib-fallback-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-fallback-rgb24.txt
@@ -2,26 +2,26 @@ arc-looping-dash
 bug-51910
 bug-seams
 caps
-caps-2
-caps-1
 caps-05
-caps-joins-2
-caps-joins-1
+caps-1
+caps-2
 caps-joins-05
+caps-joins-1
+caps-joins-2
 caps-joins-curve
 caps-sub-paths
 clear-source
 clip-disjoint-quad
 clip-image
 clip-mixed-antialias
-clip-push-group
 clip-polygons
+clip-push-group
 clip-text
 close-path
 close-path-current-point
 copy-path
-coverage-intersecting-quads
 coverage-abutting
+coverage-intersecting-quads
 culled-glyphs
 dash-caps-joins
 dash-infinite-loop
@@ -35,6 +35,10 @@ fallback
 filter-bilinear-extents
 finer-grained-fallbacks
 font-matrix-translation
+ft-show-glyphs-positioning
+ft-show-glyphs-table
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 glyph-cache-pressure
 halo-transform
 infinite-join
@@ -58,14 +62,15 @@ partial-clip-text-left
 partial-coverage-reference
 partial-coverage-three-quarter-reference
 path-stroke-twice
+pthread-show-text
+pthread-similar
 push-group-color
 record1414x-select-font-face
 record1414x-text-transform
-recording-surface-over
 recording-surface-extend-none
+recording-surface-over
 rectilinear-miter-limit
 reflected-stroke
-stroke-ctm-caps
 select-font-face
 self-copy
 shifted-operator
@@ -77,16 +82,17 @@ smask-mask
 smask-paint
 smask-text
 smp-glyph
+stroke-ctm-caps
 subsurface
 subsurface-scale
 surface-pattern-scale-down-extend-none
 surface-pattern-scale-up
 text-antialias-gray
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-glyph-range
 text-pattern
 text-rotate
@@ -100,9 +106,3 @@ twin-antialias-none
 twin-antialias-subpixel
 unclosed-strokes
 xcomposite-projection
-pthread-show-text
-pthread-similar
-ft-show-glyphs-positioning
-ft-show-glyphs-table
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt b/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt
index fb2c53607..a5f0ec34f 100644
--- a/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-render-0-0-rgb24.txt
@@ -1,9 +1,9 @@
 caps-sub-paths
 clear-source
 clip-operator
+clipped-group
 clip-push-group
 clip-text
-clipped-group
 coverage-intersecting-triangles
 culled-glyphs
 curve-to-as-line-to
@@ -13,6 +13,9 @@ fill-and-stroke
 fill-and-stroke-alpha
 fill-and-stroke-alpha-add
 finer-grained-fallbacks
+ft-show-glyphs-positioning
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 halo-transform
 horizontal-clip
 infinite-join
@@ -22,6 +25,7 @@ mask
 operator-clear
 operator-source
 overlapping-glyphs
+pthread-show-text
 radial-outer-focus
 record1414x-select-font-face
 record1414x-text-transform
@@ -36,10 +40,10 @@ subsurface-scale
 surface-pattern-operator
 text-antialias-gray
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-pattern
 text-rotate
 text-unhinted-metrics
@@ -48,7 +52,3 @@ twin-antialias-mixed
 twin-antialias-none
 twin-antialias-subpixel
 unbounded-operator
-pthread-show-text
-ft-show-glyphs-positioning
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-xlib-rgb24.txt b/.gitlab-ci/ignore-xlib-rgb24.txt
index 144bbf2ad..0a4c9f616 100644
--- a/.gitlab-ci/ignore-xlib-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-rgb24.txt
@@ -1,25 +1,25 @@
 aliasing
 arc-looping-dash
-bug-spline
 bug-51910
 bug-84115
-bug-source-cu
 bug-extents
 bug-image-compositor
+bug-source-cu
+bug-spline
 caps-joins-05
 caps-joins-curve
 caps-tails-curve
 clear-source
 clip-disjoint
-clip-stroke-unbounded
 clip-operator
 clip-shape
 clip-stroke
+clip-stroke-unbounded
 clip-text
 close-path-current-point
-coverage-rhombus
-coverage-column-triangles
 coverage-abutting
+coverage-column-triangles
+coverage-rhombus
 culled-glyphs
 dash-caps-joins
 dash-curve
@@ -28,8 +28,8 @@ degenerate-curve-to
 degenerate-pen
 degenerate-rel-curve-to
 drunkard-tails
-extended-blend-mask
 extended-blend-alpha-mask
+extended-blend-mask
 fallback
 fill-and-stroke
 fill-and-stroke-alpha
@@ -37,6 +37,10 @@ fill-and-stroke-alpha-add
 fill-image
 filter-bilinear-extents
 font-matrix-translation
+ft-show-glyphs-positioning
+ft-show-glyphs-table
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 glyph-cache-pressure
 halo
 halo-transform
@@ -45,15 +49,15 @@ infinite-join
 inverse-text
 joins
 joins-loop
-joins-star
 joins-retrace
+joins-star
 large-font
 large-twin-antialias-mixed
 leaky-dashed-stroke
-line-width-scale
-line-width-tolerance
 linear-gradient
 linear-gradient-subset
+line-width-scale
+line-width-tolerance
 long-dashed-lines
 mask
 mask-transformed-image
@@ -64,79 +68,77 @@ operator-alpha-alpha
 operator-clear
 operator-source
 overlapping-boxes
-overlapping-glyphs
 overlapping-dash-caps
+overlapping-glyphs
 partial-clip-text-bottom
 partial-clip-text-left
 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-source
 radial-gradient-mask-source
+radial-gradient-source
 radial-outer-focus
 random-clip
-random-intersections-eo
-random-intersections-nonzero
 random-intersections-curves-eo
 random-intersections-curves-nz
-record-select-font-face
-record-self-intersecting
-record-text-transform
+random-intersections-eo
+random-intersections-nonzero
 record1414x-fill-alpha
 record1414x-select-font-face
 record1414x-self-intersecting
 record1414x-text-transform
-record2x-paint-alpha-clip-mask
 record2x-fill-alpha
+record2x-paint-alpha-clip-mask
 record2x-select-font-face
 record2x-text-transform
-record90-paint-alpha-solid-clip
-record90-paint-alpha-clip
 record90-fill-alpha
+record90-paint-alpha-clip
+record90-paint-alpha-solid-clip
 record90-select-font-face
 record90-self-intersecting
 record90-text-transform
-recordflip-whole-paint-alpha-clip-mask
-recordflip-whole-fill-alpha
-recordflip-whole-select-font-face
-recordflip-whole-self-intersecting
-recordflip-whole-text-transform
-recordflip-paint-alpha-clip-mask
 recordflip-fill-alpha
+recordflip-paint-alpha-clip-mask
 recordflip-select-font-face
 recordflip-self-intersecting
 recordflip-text-transform
-record-neg-extents-unbounded
+recordflip-whole-fill-alpha
+recordflip-whole-paint-alpha-clip-mask
+recordflip-whole-select-font-face
+recordflip-whole-self-intersecting
+recordflip-whole-text-transform
+recording-surface-extend-none
+recording-surface-extend-pad
+recording-surface-extend-reflect
+recording-surface-extend-repeat
+recording-surface-over
+recording-surface-source
 record-neg-extents-bounded
+record-neg-extents-unbounded
 record-replay-extend-none
-record-replay-extend-repeat
-record-replay-extend-reflect
 record-replay-extend-pad
-recording-surface-over
-recording-surface-source
-recording-surface-extend-none
-recording-surface-extend-repeat
-recording-surface-extend-reflect
-recording-surface-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-select-font-face
+record-self-intersecting
+record-text-transform
 reflected-stroke
 rel-path
 rotated-clip
 rounded-rectangle-stroke
 scale-offset-image
 scale-offset-similar
-stroke-ctm-caps
-stroke-clipped
-stroke-image
 select-font-face
+shape-general-convex
+shape-sierpinski
 shifted-operator
 show-glyphs-advance
 show-text-current-point
-shape-general-convex
-shape-sierpinski
 simple-edge
 smask
 smask-fill
@@ -147,6 +149,9 @@ smask-stroke
 smask-text
 smp-glyph
 spline-decomposition
+stroke-clipped
+stroke-ctm-caps
+stroke-image
 stroke-pattern
 subsurface
 subsurface-scale
@@ -154,10 +159,10 @@ surface-pattern-operator
 surface-pattern-scale-up
 text-antialias-gray
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-glyph-range
 text-pattern
 text-rotate
@@ -175,11 +180,6 @@ unclosed-strokes
 user-font
 user-font-proxy
 world-map
-world-map-stroke
 world-map-fill
+world-map-stroke
 xcomposite-projection
-pthread-show-text
-ft-show-glyphs-positioning
-ft-show-glyphs-table
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3
diff --git a/.gitlab-ci/ignore-xlib-window-rgb24.txt b/.gitlab-ci/ignore-xlib-window-rgb24.txt
index 7501b8c11..814bd7da6 100644
--- a/.gitlab-ci/ignore-xlib-window-rgb24.txt
+++ b/.gitlab-ci/ignore-xlib-window-rgb24.txt
@@ -1,25 +1,25 @@
 aliasing
 arc-looping-dash
-bug-spline
 bug-51910
 bug-extents
+bug-spline
 caps-joins-05
 caps-joins-curve
 clear-source
 clip-disjoint
-clip-stroke-unbounded
 clip-operator
 clip-shape
 clip-stroke
+clip-stroke-unbounded
 clip-text
 close-path-current-point
-coverage-rectangles
+coverage-abutting
+coverage-column-triangles
 coverage-intersecting-quads
 coverage-intersecting-triangles
+coverage-rectangles
 coverage-row-triangles
-coverage-column-triangles
 coverage-triangles
-coverage-abutting
 culled-glyphs
 dash-caps-joins
 dash-scale
@@ -27,8 +27,8 @@ degenerate-curve-to
 degenerate-pen
 degenerate-rel-curve-to
 drunkard-tails
-extended-blend-mask
 extended-blend-alpha-mask
+extended-blend-mask
 fallback
 fill-and-stroke
 fill-and-stroke-alpha
@@ -36,6 +36,10 @@ fill-and-stroke-alpha-add
 fill-image
 filter-bilinear-extents
 font-matrix-translation
+ft-show-glyphs-positioning
+ft-show-glyphs-table
+ft-text-vertical-layout-type1
+ft-text-vertical-layout-type3
 glyph-cache-pressure
 halo
 halo-transform
@@ -43,14 +47,14 @@ infinite-join
 inverse-text
 joins
 joins-loop
-joins-star
 joins-retrace
+joins-star
 large-twin-antialias-mixed
 leaky-dashed-stroke
-line-width-scale
-line-width-tolerance
 linear-gradient
 linear-gradient-subset
+line-width-scale
+line-width-tolerance
 long-dashed-lines
 mask
 mask-transformed-image
@@ -61,69 +65,67 @@ operator-alpha-alpha
 operator-clear
 operator-source
 overlapping-boxes
-overlapping-glyphs
 overlapping-dash-caps
+overlapping-glyphs
 partial-clip-text-bottom
 partial-clip-text-left
 partial-coverage-reference
 partial-coverage-three-quarter-reference
 path-stroke-twice
+pthread-show-text
 push-group
 push-group-color
 radial-outer-focus
-record-select-font-face
-record-self-intersecting
-record-text-transform
 record1414x-fill-alpha
 record1414x-select-font-face
 record1414x-self-intersecting
 record1414x-text-transform
-record2x-paint-alpha-clip-mask
 record2x-fill-alpha
+record2x-paint-alpha-clip-mask
 record2x-select-font-face
 record2x-text-transform
-record90-paint-alpha-solid-clip
-record90-paint-alpha-clip
 record90-fill-alpha
+record90-paint-alpha-clip
+record90-paint-alpha-solid-clip
 record90-select-font-face
 record90-self-intersecting
 record90-text-transform
-recordflip-whole-paint-alpha-clip-mask
-recordflip-whole-fill-alpha
-recordflip-whole-select-font-face
-recordflip-whole-self-intersecting
-recordflip-whole-text-transform
-recordflip-paint-alpha-clip-mask
 recordflip-fill-alpha
+recordflip-paint-alpha-clip-mask
 recordflip-select-font-face
 recordflip-self-intersecting
 recordflip-text-transform
-record-neg-extents-unbounded
+recordflip-whole-fill-alpha
+recordflip-whole-paint-alpha-clip-mask
+recordflip-whole-select-font-face
+recordflip-whole-self-intersecting
+recordflip-whole-text-transform
+recording-surface-extend-none
+recording-surface-extend-pad
+recording-surface-extend-reflect
+recording-surface-extend-repeat
+recording-surface-over
+recording-surface-source
 record-neg-extents-bounded
+record-neg-extents-unbounded
 record-replay-extend-none
-record-replay-extend-repeat
-record-replay-extend-reflect
 record-replay-extend-pad
-recording-surface-over
-recording-surface-source
-recording-surface-extend-none
-recording-surface-extend-repeat
-recording-surface-extend-reflect
-recording-surface-extend-pad
+record-replay-extend-reflect
+record-replay-extend-repeat
+record-select-font-face
+record-self-intersecting
+record-text-transform
 reflected-stroke
 rel-path
 rotated-clip
 rounded-rectangle-stroke
 scale-offset-image
 scale-offset-similar
-stroke-ctm-caps
-stroke-clipped
-stroke-image
 select-font-face
+shape-general-convex
 shifted-operator
 show-glyphs-advance
 show-text-current-point
-shape-general-convex
 simple-edge
 smask
 smask-fill
@@ -134,6 +136,9 @@ smask-stroke
 smask-text
 smp-glyph
 spline-decomposition
+stroke-clipped
+stroke-ctm-caps
+stroke-image
 stroke-pattern
 subsurface
 subsurface-scale
@@ -141,10 +146,10 @@ surface-pattern-operator
 surface-pattern-scale-up
 text-antialias-gray
 text-antialias-subpixel
-text-antialias-subpixel-rgb
 text-antialias-subpixel-bgr
-text-antialias-subpixel-vrgb
+text-antialias-subpixel-rgb
 text-antialias-subpixel-vbgr
+text-antialias-subpixel-vrgb
 text-glyph-range
 text-pattern
 text-rotate
@@ -160,8 +165,3 @@ twin-antialias-subpixel
 unbounded-operator
 unclosed-strokes
 xcomposite-projection
-pthread-show-text
-ft-show-glyphs-positioning
-ft-show-glyphs-table
-ft-text-vertical-layout-type1
-ft-text-vertical-layout-type3


More information about the cairo-commit mailing list