[cairo-commit] 4 commits - src/cairo-tor-scan-converter.c test/reference test/simple.c

Chris Wilson ickle at kemper.freedesktop.org
Thu Oct 2 00:46:56 PDT 2014


 dev/null                                                       |binary
 src/cairo-tor-scan-converter.c                                 |   94 +++++++---
 test/reference/a8-clear.ref.png                                |binary
 test/reference/aliasing.ref.png                                |binary
 test/reference/arc-direction.ref.png                           |binary
 test/reference/big-line.ref.png                                |binary
 test/reference/big-little-triangle.argb32.ref.png              |binary
 test/reference/big-little-triangle.rgb24.ref.png               |binary
 test/reference/bilevel-xlib.ref.png                            |binary
 test/reference/bug-40410.ref.png                               |binary
 test/reference/bug-84115.ref.png                               |binary
 test/reference/bug-bo-ricotz.ref.png                           |binary
 test/reference/bug-extents.ref.png                             |binary
 test/reference/bug-seams.ref.png                               |binary
 test/reference/bug-spline.ref.png                              |binary
 test/reference/caps-joins-alpha.ref.png                        |binary
 test/reference/caps-joins-curve.ref.png                        |binary
 test/reference/caps-joins.ref.png                              |binary
 test/reference/caps-sub-paths.ref.png                          |binary
 test/reference/caps-tails-curve.ref.png                        |binary
 test/reference/caps.ref.png                                    |binary
 test/reference/clear-source.ref.png                            |binary
 test/reference/clear.argb32.ref.png                            |binary
 test/reference/clear.rgb24.ref.png                             |binary
 test/reference/clip-disjoint-hatching.ref.png                  |binary
 test/reference/clip-disjoint-quad.ref.png                      |binary
 test/reference/clip-disjoint.ref.png                           |binary
 test/reference/clip-fill-eo-unbounded.argb32.ref.png           |binary
 test/reference/clip-fill-eo-unbounded.rgb24.ref.png            |binary
 test/reference/clip-fill-nz-unbounded.argb32.ref.png           |binary
 test/reference/clip-fill-nz-unbounded.rgb24.ref.png            |binary
 test/reference/clip-fill-rule.argb32.ref.png                   |binary
 test/reference/clip-fill-rule.rgb24.ref.png                    |binary
 test/reference/clip-fill.ref.png                               |binary
 test/reference/clip-group-shapes-circles.ref.png               |binary
 test/reference/clip-image.ref.png                              |binary
 test/reference/clip-intersect.ref.png                          |binary
 test/reference/clip-mixed-antialias.ref.png                    |binary
 test/reference/clip-nesting.argb32.ref.png                     |binary
 test/reference/clip-nesting.rgb24.ref.png                      |binary
 test/reference/clip-operator.argb32.ref.png                    |binary
 test/reference/clip-operator.rgb24.ref.png                     |binary
 test/reference/clip-polygons.ref.png                           |binary
 test/reference/clip-push-group.ref.png                         |binary
 test/reference/clip-shape.ref.png                              |binary
 test/reference/clip-stroke-unbounded.argb32.ref.png            |binary
 test/reference/clip-stroke-unbounded.rgb24.ref.png             |binary
 test/reference/clip-stroke.ref.png                             |binary
 test/reference/clip-text.ref.png                               |binary
 test/reference/clip-twice.argb32.ref.png                       |binary
 test/reference/clip-twice.rgb24.ref.png                        |binary
 test/reference/clip-xlib.ref.png                               |binary
 test/reference/clipped-group.ref.png                           |binary
 test/reference/close-path.ref.png                              |binary
 test/reference/copy-path.ref.png                               |binary
 test/reference/coverage-column-triangles.xfail.png             |binary
 test/reference/coverage-intersecting-triangles.xfail.png       |binary
 test/reference/coverage-rhombus.xfail.png                      |binary
 test/reference/coverage-row-triangles.xfail.png                |binary
 test/reference/coverage-triangles.xfail.png                    |binary
 test/reference/create-from-png.ref.png                         |binary
 test/reference/culled-glyphs.ref.png                           |binary
 test/reference/dash-caps-joins.ref.png                         |binary
 test/reference/dash-curve.ref.png                              |binary
 test/reference/dash-infinite-loop.ref.png                      |binary
 test/reference/dash-offset-negative.ref.png                    |binary
 test/reference/dash-scale.ref.png                              |binary
 test/reference/dash-state.ref.png                              |binary
 test/reference/degenerate-arc.ref.png                          |binary
 test/reference/degenerate-dash.ref.png                         |binary
 test/reference/degenerate-linear-gradient.ref.png              |binary
 test/reference/degenerate-pen.ref.png                          |binary
 test/reference/drunkard-tails.ref.png                          |binary
 test/reference/extend-pad-border.ref.png                       |binary
 test/reference/extended-blend-alpha-mask.argb32.ref.png        |binary
 test/reference/extended-blend-alpha-mask.rgb24.ref.png         |binary
 test/reference/extended-blend-alpha.argb32.ref.png             |binary
 test/reference/extended-blend-alpha.rgb24.ref.png              |binary
 test/reference/extended-blend-mask.argb32.ref.png              |binary
 test/reference/extended-blend-mask.rgb24.ref.png               |binary
 test/reference/extended-blend-solid-alpha.argb32.ref.png       |binary
 test/reference/extended-blend-solid-alpha.rgb24.ref.png        |binary
 test/reference/extended-blend-solid.argb32.ref.png             |binary
 test/reference/extended-blend-solid.rgb24.ref.png              |binary
 test/reference/extended-blend.argb32.ref.png                   |binary
 test/reference/extended-blend.rgb24.ref.png                    |binary
 test/reference/fallback.argb32.ref.png                         |binary
 test/reference/fallback.rgb24.ref.png                          |binary
 test/reference/fill-alpha-pattern.ref.png                      |binary
 test/reference/fill-alpha.ref.png                              |binary
 test/reference/fill-and-stroke-alpha-add.ref.png               |binary
 test/reference/fill-and-stroke-alpha.ref.png                   |binary
 test/reference/fill-degenerate-sort-order.argb32.ref.png       |binary
 test/reference/fill-degenerate-sort-order.rgb24.ref.png        |binary
 test/reference/fill-image.ref.png                              |binary
 test/reference/fill-rule.argb32.ref.png                        |binary
 test/reference/fill-rule.rgb24.ref.png                         |binary
 test/reference/fill-xlib.ref.png                               |binary
 test/reference/filter-bilinear-extents.ref.png                 |binary
 test/reference/font-matrix-translation.ref.png                 |binary
 test/reference/ft-show-glyphs-positioning.ref.png              |binary
 test/reference/ft-show-glyphs-table.ref.png                    |binary
 test/reference/ft-text-vertical-layout-type1.ref.png           |binary
 test/reference/ft-text-vertical-layout-type3.ref.png           |binary
 test/reference/glyph-cache-pressure.ref.png                    |binary
 test/reference/group-unaligned.ref.png                         |binary
 test/reference/halo-transform.ref.png                          |binary
 test/reference/halo.ref.png                                    |binary
 test/reference/hatchings.ref.png                               |binary
 test/reference/horizontal-clip.ref.png                         |binary
 test/reference/huge-linear.ref.png                             |binary
 test/reference/infinite-join.ref.png                           |binary
 test/reference/inverse-text.ref.png                            |binary
 test/reference/inverted-clip.argb32.ref.png                    |binary
 test/reference/inverted-clip.rgb24.ref.png                     |binary
 test/reference/joins-loop.ref.png                              |binary
 test/reference/joins-retrace.ref.png                           |binary
 test/reference/joins-star.ref.png                              |binary
 test/reference/large-twin-antialias-mixed.ref.png              |binary
 test/reference/leaky-dashed-stroke.ref.png                     |binary
 test/reference/leaky-polygon.ref.png                           |binary
 test/reference/line-width-large-overlap-rotated.ref.png        |binary
 test/reference/line-width-overlap-rotated.ref.png              |binary
 test/reference/line-width-scale.ref.png                        |binary
 test/reference/line-width-tolerance.ref.png                    |binary
 test/reference/line-width.ref.png                              |binary
 test/reference/linear-gradient-reflect.ref.png                 |binary
 test/reference/linear-gradient-subset.ref.png                  |binary
 test/reference/linear-gradient.ref.png                         |binary
 test/reference/long-dashed-lines.ref.png                       |binary
 test/reference/map-all-to-xlib.ref.png                         |binary
 test/reference/map-bit-to-xlib.ref.png                         |binary
 test/reference/mask-alpha.argb32.ref.png                       |binary
 test/reference/mask-alpha.rgb24.ref.png                        |binary
 test/reference/mask-transformed-image.ref.png                  |binary
 test/reference/mask-transformed-similar.ref.png                |binary
 test/reference/mask-transformed-xlib.ref.png                   |binary
 test/reference/mask.argb32.ref.png                             |binary
 test/reference/mask.rgb24.ref.png                              |binary
 test/reference/miter-precision.ref.png                         |binary
 test/reference/operator-clear.argb32.ref.png                   |binary
 test/reference/operator-clear.rgb24.ref.png                    |binary
 test/reference/operator-source.argb32.ref.png                  |binary
 test/reference/operator-source.rgb24.ref.png                   |binary
 test/reference/over-above-source.argb32.ref.png                |binary
 test/reference/over-above-source.rgb24.ref.png                 |binary
 test/reference/over-around-source.argb32.ref.png               |binary
 test/reference/over-around-source.rgb24.ref.png                |binary
 test/reference/over-below-source.argb32.ref.png                |binary
 test/reference/over-below-source.rgb24.ref.png                 |binary
 test/reference/over-between-source.argb32.ref.png              |binary
 test/reference/over-between-source.rgb24.ref.png               |binary
 test/reference/overlapping-dash-caps.ref.png                   |binary
 test/reference/paint-with-alpha-clip-mask.ref.png              |binary
 test/reference/partial-clip-text-bottom.ref.png                |binary
 test/reference/partial-clip-text-left.ref.png                  |binary
 test/reference/partial-clip-text-right.ref.png                 |binary
 test/reference/partial-clip-text-top.ref.png                   |binary
 test/reference/path-append.ref.png                             |binary
 test/reference/path-stroke-twice.ref.png                       |binary
 test/reference/pthread-show-text.ref.png                       |binary
 test/reference/push-group-color.ref.png                        |binary
 test/reference/push-group.argb32.ref.png                       |binary
 test/reference/push-group.rgb24.ref.png                        |binary
 test/reference/random-clip.ref.png                             |binary
 test/reference/random-intersections-curves-eo.ref.png          |binary
 test/reference/random-intersections-curves-nz.ref.png          |binary
 test/reference/random-intersections-eo.ref.png                 |binary
 test/reference/random-intersections-nonzero.ref.png            |binary
 test/reference/record-fill-alpha.ref.png                       |binary
 test/reference/record-paint-alpha-clip-mask.ref.png            |binary
 test/reference/record-paint-alpha-clip.ref.png                 |binary
 test/reference/record-select-font-face.ref.png                 |binary
 test/reference/record-text-transform.ref.png                   |binary
 test/reference/record1414x-fill-alpha.ref.png                  |binary
 test/reference/record1414x-paint-alpha-clip-mask.ref.png       |binary
 test/reference/record1414x-paint-alpha-clip.ref.png            |binary
 test/reference/record1414x-paint-alpha-solid-clip.ref.png      |binary
 test/reference/record1414x-paint-alpha.ref.png                 |binary
 test/reference/record1414x-paint.ref.png                       |binary
 test/reference/record1414x-select-font-face.ref.png            |binary
 test/reference/record1414x-self-intersecting.ref.png           |binary
 test/reference/record1414x-text-transform.ref.png              |binary
 test/reference/record2x-fill-alpha.ref.png                     |binary
 test/reference/record2x-paint-alpha-clip-mask.ref.png          |binary
 test/reference/record2x-paint-alpha-clip.ref.png               |binary
 test/reference/record2x-paint-alpha-solid-clip.ref.png         |binary
 test/reference/record2x-paint-alpha.ref.png                    |binary
 test/reference/record2x-paint.ref.png                          |binary
 test/reference/record2x-select-font-face.ref.png               |binary
 test/reference/record2x-self-intersecting.ref.png              |binary
 test/reference/record2x-text-transform.ref.png                 |binary
 test/reference/record90-fill-alpha.ref.png                     |binary
 test/reference/record90-paint-alpha-clip-mask.ref.png          |binary
 test/reference/record90-paint-alpha-clip.ref.png               |binary
 test/reference/record90-paint-alpha-solid-clip.ref.png         |binary
 test/reference/record90-paint-alpha.ref.png                    |binary
 test/reference/record90-paint.ref.png                          |binary
 test/reference/record90-select-font-face.ref.png               |binary
 test/reference/record90-self-intersecting.ref.png              |binary
 test/reference/record90-text-transform.ref.png                 |binary
 test/reference/recordflip-fill-alpha.ref.png                   |binary
 test/reference/recordflip-paint-alpha-clip-mask.ref.png        |binary
 test/reference/recording-surface-extend-none.argb32.ref.png    |binary
 test/reference/recording-surface-extend-none.rgb24.ref.png     |binary
 test/reference/recording-surface-extend-pad.argb32.ref.png     |binary
 test/reference/recording-surface-extend-pad.rgb24.ref.png      |binary
 test/reference/recording-surface-extend-reflect.argb32.ref.png |binary
 test/reference/recording-surface-extend-reflect.rgb24.ref.png  |binary
 test/reference/recording-surface-extend-repeat.argb32.ref.png  |binary
 test/reference/recording-surface-extend-repeat.rgb24.ref.png   |binary
 test/reference/recording-surface-over.argb32.ref.png           |binary
 test/reference/recording-surface-over.rgb24.ref.png            |binary
 test/reference/recording-surface-source.argb32.ref.png         |binary
 test/reference/recording-surface-source.rgb24.ref.png          |binary
 test/reference/rectilinear-miter-limit.ref.png                 |binary
 test/reference/rotate-clip-image-surface-paint.ref.png         |binary
 test/reference/rotated-clip.ref.png                            |binary
 test/reference/rounded-rectangle-fill.ref.png                  |binary
 test/reference/rounded-rectangle-stroke.ref.png                |binary
 test/reference/scale-offset-image.ref.png                      |binary
 test/reference/scale-offset-similar.ref.png                    |binary
 test/reference/scale-offset-xlib.ref.png                       |binary
 test/reference/select-font-face.ref.png                        |binary
 test/reference/self-copy.ref.png                               |binary
 test/reference/shape-general-convex.ref.png                    |binary
 test/reference/shape-sierpinski.ref.png                        |binary
 test/reference/show-glyphs-advance.ref.png                     |binary
 test/reference/show-text-current-point.ref.png                 |binary
 test/reference/simple-edge.xfail.png                           |binary
 test/reference/skew-extreme.ref.png                            |binary
 test/reference/smask-fill.ref.png                              |binary
 test/reference/smask-image-mask.ref.png                        |binary
 test/reference/smask-mask.ref.png                              |binary
 test/reference/smask-paint.ref.png                             |binary
 test/reference/smask-stroke.ref.png                            |binary
 test/reference/smask-text.ref.png                              |binary
 test/reference/smask.ref.png                                   |binary
 test/reference/spline-decomposition.ref.png                    |binary
 test/reference/stride-12-xlib.ref.png                          |binary
 test/reference/stroke-clipped.ref.png                          |binary
 test/reference/stroke-image.ref.png                            |binary
 test/reference/stroke-pattern.ref.png                          |binary
 test/reference/stroke-xlib.ref.png                             |binary
 test/reference/subsurface-scale.ref.png                        |binary
 test/reference/subsurface.ref.png                              |binary
 test/reference/surface-pattern-operator.argb32.ref.png         |binary
 test/reference/surface-pattern-operator.rgb24.ref.png          |binary
 test/reference/surface-pattern-scale-down.ref.png              |binary
 test/reference/surface-pattern-scale-up.ref.png                |binary
 test/reference/surface-pattern.ref.png                         |binary
 test/reference/text-antialias-gray.ref.png                     |binary
 test/reference/text-antialias-subpixel-bgr.ref.png             |binary
 test/reference/text-antialias-subpixel-rgb.ref.png             |binary
 test/reference/text-antialias-subpixel-vbgr.ref.png            |binary
 test/reference/text-antialias-subpixel-vrgb.ref.png            |binary
 test/reference/text-antialias-subpixel.ref.png                 |binary
 test/reference/text-glyph-range.ref.png                        |binary
 test/reference/text-rotate.ref.png                             |binary
 test/reference/tiger.ref.png                                   |binary
 test/reference/tighten-bounds.argb32.ref.png                   |binary
 test/reference/tighten-bounds.rgb24.ref.png                    |binary
 test/reference/transforms.ref.png                              |binary
 test/reference/trap-clip.argb32.ref.png                        |binary
 test/reference/trap-clip.rgb24.ref.png                         |binary
 test/reference/twin-antialias-gray.ref.png                     |binary
 test/reference/twin-antialias-mixed.ref.png                    |binary
 test/reference/twin-antialias-none.ref.png                     |binary
 test/reference/twin-antialias-subpixel.ref.png                 |binary
 test/reference/twin.ref.png                                    |binary
 test/reference/unbounded-operator.argb32.ref.png               |binary
 test/reference/unbounded-operator.rgb24.ref.png                |binary
 test/reference/user-font-proxy.ref.png                         |binary
 test/reference/user-font-rescale.ref.png                       |binary
 test/reference/user-font.ref.png                               |binary
 test/reference/world-map-fill.ref.png                          |binary
 test/reference/world-map-stroke.ref.png                        |binary
 test/reference/world-map.ref.png                               |binary
 test/simple.c                                                  |    8 
 279 files changed, 70 insertions(+), 32 deletions(-)

New commits:
commit 7aacd81befc5ad1aec26bcf7e65fa5bd36c6a9b4
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Oct 2 08:17:14 2014 +0100

    test: Refresh reference images for tor rendering changes
    
    (And include a git add missed from commit
    
    ccd48b346436a80629e4f9a07f2ba7ffbfd802f1
    Author: Chris Wilson <chris at chris-wilson.co.uk>
    Date:   Tue Sep 30 14:06:21 2014 +0100
    
        test: Remove more duplicated reference images
    
    but were mostly invalidated by the rasteriser changes anyway).
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/test/reference/a8-clear.ref.png b/test/reference/a8-clear.ref.png
new file mode 100644
index 0000000..dbf4549
Binary files /dev/null and b/test/reference/a8-clear.ref.png differ
diff --git a/test/reference/aliasing.ref.png b/test/reference/aliasing.ref.png
new file mode 100644
index 0000000..35bdb18
Binary files /dev/null and b/test/reference/aliasing.ref.png differ
diff --git a/test/reference/arc-direction.ref.png b/test/reference/arc-direction.ref.png
new file mode 100644
index 0000000..05ff410
Binary files /dev/null and b/test/reference/arc-direction.ref.png differ
diff --git a/test/reference/big-line.ref.png b/test/reference/big-line.ref.png
new file mode 100644
index 0000000..2f35bfa
Binary files /dev/null and b/test/reference/big-line.ref.png differ
diff --git a/test/reference/big-little-triangle.argb32.ref.png b/test/reference/big-little-triangle.argb32.ref.png
index 1c2522f..5308cce 100644
Binary files a/test/reference/big-little-triangle.argb32.ref.png and b/test/reference/big-little-triangle.argb32.ref.png differ
diff --git a/test/reference/big-little-triangle.rgb24.ref.png b/test/reference/big-little-triangle.rgb24.ref.png
index 463c44e..9e4773b 100644
Binary files a/test/reference/big-little-triangle.rgb24.ref.png and b/test/reference/big-little-triangle.rgb24.ref.png differ
diff --git a/test/reference/bilevel-xlib.ref.png b/test/reference/bilevel-xlib.ref.png
new file mode 100644
index 0000000..3fb25c2
Binary files /dev/null and b/test/reference/bilevel-xlib.ref.png differ
diff --git a/test/reference/bug-40410.ref.png b/test/reference/bug-40410.ref.png
new file mode 100644
index 0000000..ae4420a
Binary files /dev/null and b/test/reference/bug-40410.ref.png differ
diff --git a/test/reference/bug-84115.ref.png b/test/reference/bug-84115.ref.png
index f249ba5..df16257 100644
Binary files a/test/reference/bug-84115.ref.png and b/test/reference/bug-84115.ref.png differ
diff --git a/test/reference/bug-bo-ricotz.ref.png b/test/reference/bug-bo-ricotz.ref.png
new file mode 100644
index 0000000..0e52b24
Binary files /dev/null and b/test/reference/bug-bo-ricotz.ref.png differ
diff --git a/test/reference/bug-extents.ref.png b/test/reference/bug-extents.ref.png
new file mode 100644
index 0000000..e855611
Binary files /dev/null and b/test/reference/bug-extents.ref.png differ
diff --git a/test/reference/bug-seams.ref.png b/test/reference/bug-seams.ref.png
index 0665e06..e4e72fa 100644
Binary files a/test/reference/bug-seams.ref.png and b/test/reference/bug-seams.ref.png differ
diff --git a/test/reference/bug-spline.ref.png b/test/reference/bug-spline.ref.png
new file mode 100644
index 0000000..26d5609
Binary files /dev/null and b/test/reference/bug-spline.ref.png differ
diff --git a/test/reference/caps-joins-alpha.ref.png b/test/reference/caps-joins-alpha.ref.png
new file mode 100644
index 0000000..9479bf2
Binary files /dev/null and b/test/reference/caps-joins-alpha.ref.png differ
diff --git a/test/reference/caps-joins-curve.ref.png b/test/reference/caps-joins-curve.ref.png
new file mode 100644
index 0000000..a9f66a0
Binary files /dev/null and b/test/reference/caps-joins-curve.ref.png differ
diff --git a/test/reference/caps-joins.ref.png b/test/reference/caps-joins.ref.png
new file mode 100644
index 0000000..6d7122e
Binary files /dev/null and b/test/reference/caps-joins.ref.png differ
diff --git a/test/reference/caps-sub-paths.ref.png b/test/reference/caps-sub-paths.ref.png
new file mode 100644
index 0000000..7443389
Binary files /dev/null and b/test/reference/caps-sub-paths.ref.png differ
diff --git a/test/reference/caps-tails-curve.ref.png b/test/reference/caps-tails-curve.ref.png
new file mode 100644
index 0000000..df036d2
Binary files /dev/null and b/test/reference/caps-tails-curve.ref.png differ
diff --git a/test/reference/caps.ref.png b/test/reference/caps.ref.png
new file mode 100644
index 0000000..bf784fd
Binary files /dev/null and b/test/reference/caps.ref.png differ
diff --git a/test/reference/clear-source.ref.png b/test/reference/clear-source.ref.png
new file mode 100644
index 0000000..352bf45
Binary files /dev/null and b/test/reference/clear-source.ref.png differ
diff --git a/test/reference/clear.argb32.ref.png b/test/reference/clear.argb32.ref.png
index 102ac3d..64d89c1 100644
Binary files a/test/reference/clear.argb32.ref.png and b/test/reference/clear.argb32.ref.png differ
diff --git a/test/reference/clear.rgb24.ref.png b/test/reference/clear.rgb24.ref.png
index 8e6140d..d59e44e 100644
Binary files a/test/reference/clear.rgb24.ref.png and b/test/reference/clear.rgb24.ref.png differ
diff --git a/test/reference/clip-disjoint-hatching.ref.png b/test/reference/clip-disjoint-hatching.ref.png
new file mode 100644
index 0000000..ff47816
Binary files /dev/null and b/test/reference/clip-disjoint-hatching.ref.png differ
diff --git a/test/reference/clip-disjoint-quad.ref.png b/test/reference/clip-disjoint-quad.ref.png
new file mode 100644
index 0000000..25fbf0b
Binary files /dev/null and b/test/reference/clip-disjoint-quad.ref.png differ
diff --git a/test/reference/clip-disjoint.ref.png b/test/reference/clip-disjoint.ref.png
new file mode 100644
index 0000000..c0d1c06
Binary files /dev/null and b/test/reference/clip-disjoint.ref.png differ
diff --git a/test/reference/clip-fill-eo-unbounded.argb32.ref.png b/test/reference/clip-fill-eo-unbounded.argb32.ref.png
new file mode 100644
index 0000000..be56f72
Binary files /dev/null and b/test/reference/clip-fill-eo-unbounded.argb32.ref.png differ
diff --git a/test/reference/clip-fill-eo-unbounded.ref.png b/test/reference/clip-fill-eo-unbounded.ref.png
deleted file mode 100644
index 4bb0662..0000000
Binary files a/test/reference/clip-fill-eo-unbounded.ref.png and /dev/null differ
diff --git a/test/reference/clip-fill-eo-unbounded.rgb24.ref.png b/test/reference/clip-fill-eo-unbounded.rgb24.ref.png
new file mode 100644
index 0000000..e78ef0a
Binary files /dev/null and b/test/reference/clip-fill-eo-unbounded.rgb24.ref.png differ
diff --git a/test/reference/clip-fill-nz-unbounded.argb32.ref.png b/test/reference/clip-fill-nz-unbounded.argb32.ref.png
new file mode 100644
index 0000000..be56f72
Binary files /dev/null and b/test/reference/clip-fill-nz-unbounded.argb32.ref.png differ
diff --git a/test/reference/clip-fill-nz-unbounded.ref.png b/test/reference/clip-fill-nz-unbounded.ref.png
deleted file mode 100644
index 4bb0662..0000000
Binary files a/test/reference/clip-fill-nz-unbounded.ref.png and /dev/null differ
diff --git a/test/reference/clip-fill-nz-unbounded.rgb24.ref.png b/test/reference/clip-fill-nz-unbounded.rgb24.ref.png
new file mode 100644
index 0000000..e78ef0a
Binary files /dev/null and b/test/reference/clip-fill-nz-unbounded.rgb24.ref.png differ
diff --git a/test/reference/clip-fill-rule.argb32.ref.png b/test/reference/clip-fill-rule.argb32.ref.png
index cb23ea6..f32db7c 100644
Binary files a/test/reference/clip-fill-rule.argb32.ref.png and b/test/reference/clip-fill-rule.argb32.ref.png differ
diff --git a/test/reference/clip-fill-rule.rgb24.ref.png b/test/reference/clip-fill-rule.rgb24.ref.png
index 2c836c5..e180fcc 100644
Binary files a/test/reference/clip-fill-rule.rgb24.ref.png and b/test/reference/clip-fill-rule.rgb24.ref.png differ
diff --git a/test/reference/clip-fill.ref.png b/test/reference/clip-fill.ref.png
new file mode 100644
index 0000000..7f07857
Binary files /dev/null and b/test/reference/clip-fill.ref.png differ
diff --git a/test/reference/clip-group-shapes-circles.ref.png b/test/reference/clip-group-shapes-circles.ref.png
new file mode 100644
index 0000000..abb11e5
Binary files /dev/null and b/test/reference/clip-group-shapes-circles.ref.png differ
diff --git a/test/reference/clip-image.ref.png b/test/reference/clip-image.ref.png
new file mode 100644
index 0000000..0f71f73
Binary files /dev/null and b/test/reference/clip-image.ref.png differ
diff --git a/test/reference/clip-intersect.ref.png b/test/reference/clip-intersect.ref.png
new file mode 100644
index 0000000..5f2de37
Binary files /dev/null and b/test/reference/clip-intersect.ref.png differ
diff --git a/test/reference/clip-mixed-antialias.ref.png b/test/reference/clip-mixed-antialias.ref.png
new file mode 100644
index 0000000..243c4dd
Binary files /dev/null and b/test/reference/clip-mixed-antialias.ref.png differ
diff --git a/test/reference/clip-nesting.argb32.ref.png b/test/reference/clip-nesting.argb32.ref.png
new file mode 100644
index 0000000..c82ed46
Binary files /dev/null and b/test/reference/clip-nesting.argb32.ref.png differ
diff --git a/test/reference/clip-nesting.ref.png b/test/reference/clip-nesting.ref.png
deleted file mode 100644
index d1c5a03..0000000
Binary files a/test/reference/clip-nesting.ref.png and /dev/null differ
diff --git a/test/reference/clip-nesting.rgb24.ref.png b/test/reference/clip-nesting.rgb24.ref.png
new file mode 100644
index 0000000..93c5b17
Binary files /dev/null and b/test/reference/clip-nesting.rgb24.ref.png differ
diff --git a/test/reference/clip-operator.argb32.ref.png b/test/reference/clip-operator.argb32.ref.png
index 86344ff..d041a2f 100644
Binary files a/test/reference/clip-operator.argb32.ref.png and b/test/reference/clip-operator.argb32.ref.png differ
diff --git a/test/reference/clip-operator.rgb24.ref.png b/test/reference/clip-operator.rgb24.ref.png
index 105c7f5..7e3a640 100644
Binary files a/test/reference/clip-operator.rgb24.ref.png and b/test/reference/clip-operator.rgb24.ref.png differ
diff --git a/test/reference/clip-polygons.ref.png b/test/reference/clip-polygons.ref.png
new file mode 100644
index 0000000..1b76cd0
Binary files /dev/null and b/test/reference/clip-polygons.ref.png differ
diff --git a/test/reference/clip-push-group.ref.png b/test/reference/clip-push-group.ref.png
new file mode 100644
index 0000000..6a90fb4
Binary files /dev/null and b/test/reference/clip-push-group.ref.png differ
diff --git a/test/reference/clip-shape.ref.png b/test/reference/clip-shape.ref.png
new file mode 100644
index 0000000..83190e6
Binary files /dev/null and b/test/reference/clip-shape.ref.png differ
diff --git a/test/reference/clip-stroke-unbounded.argb32.ref.png b/test/reference/clip-stroke-unbounded.argb32.ref.png
new file mode 100644
index 0000000..7f603b7
Binary files /dev/null and b/test/reference/clip-stroke-unbounded.argb32.ref.png differ
diff --git a/test/reference/clip-stroke-unbounded.ref.png b/test/reference/clip-stroke-unbounded.ref.png
deleted file mode 100644
index 2dabb0c..0000000
Binary files a/test/reference/clip-stroke-unbounded.ref.png and /dev/null differ
diff --git a/test/reference/clip-stroke-unbounded.rgb24.ref.png b/test/reference/clip-stroke-unbounded.rgb24.ref.png
new file mode 100644
index 0000000..4a06c4b
Binary files /dev/null and b/test/reference/clip-stroke-unbounded.rgb24.ref.png differ
diff --git a/test/reference/clip-stroke.ref.png b/test/reference/clip-stroke.ref.png
new file mode 100644
index 0000000..c296807
Binary files /dev/null and b/test/reference/clip-stroke.ref.png differ
diff --git a/test/reference/clip-text.ref.png b/test/reference/clip-text.ref.png
new file mode 100644
index 0000000..c73d1fd
Binary files /dev/null and b/test/reference/clip-text.ref.png differ
diff --git a/test/reference/clip-twice.argb32.ref.png b/test/reference/clip-twice.argb32.ref.png
new file mode 100644
index 0000000..03dc4a5
Binary files /dev/null and b/test/reference/clip-twice.argb32.ref.png differ
diff --git a/test/reference/clip-twice.ref.png b/test/reference/clip-twice.ref.png
deleted file mode 100644
index c3644a0..0000000
Binary files a/test/reference/clip-twice.ref.png and /dev/null differ
diff --git a/test/reference/clip-twice.rgb24.ref.png b/test/reference/clip-twice.rgb24.ref.png
new file mode 100644
index 0000000..c25fffa
Binary files /dev/null and b/test/reference/clip-twice.rgb24.ref.png differ
diff --git a/test/reference/clip-xlib.ref.png b/test/reference/clip-xlib.ref.png
new file mode 100644
index 0000000..062c721
Binary files /dev/null and b/test/reference/clip-xlib.ref.png differ
diff --git a/test/reference/clipped-group.ref.png b/test/reference/clipped-group.ref.png
new file mode 100644
index 0000000..245b16e
Binary files /dev/null and b/test/reference/clipped-group.ref.png differ
diff --git a/test/reference/close-path.ref.png b/test/reference/close-path.ref.png
new file mode 100644
index 0000000..5506ff8
Binary files /dev/null and b/test/reference/close-path.ref.png differ
diff --git a/test/reference/copy-path.ref.png b/test/reference/copy-path.ref.png
new file mode 100644
index 0000000..b50e9e4
Binary files /dev/null and b/test/reference/copy-path.ref.png differ
diff --git a/test/reference/coverage-column-triangles.xfail.png b/test/reference/coverage-column-triangles.xfail.png
new file mode 100644
index 0000000..566b415
Binary files /dev/null and b/test/reference/coverage-column-triangles.xfail.png differ
diff --git a/test/reference/coverage-intersecting-triangles.xfail.png b/test/reference/coverage-intersecting-triangles.xfail.png
new file mode 100644
index 0000000..c0290e4
Binary files /dev/null and b/test/reference/coverage-intersecting-triangles.xfail.png differ
diff --git a/test/reference/coverage-rhombus.xfail.png b/test/reference/coverage-rhombus.xfail.png
new file mode 100644
index 0000000..cbfc10a
Binary files /dev/null and b/test/reference/coverage-rhombus.xfail.png differ
diff --git a/test/reference/coverage-row-triangles.xfail.png b/test/reference/coverage-row-triangles.xfail.png
new file mode 100644
index 0000000..d451ba9
Binary files /dev/null and b/test/reference/coverage-row-triangles.xfail.png differ
diff --git a/test/reference/coverage-triangles.xfail.png b/test/reference/coverage-triangles.xfail.png
new file mode 100644
index 0000000..dea5983
Binary files /dev/null and b/test/reference/coverage-triangles.xfail.png differ
diff --git a/test/reference/create-from-png.ref.png b/test/reference/create-from-png.ref.png
new file mode 100644
index 0000000..0a145d9
Binary files /dev/null and b/test/reference/create-from-png.ref.png differ
diff --git a/test/reference/culled-glyphs.ref.png b/test/reference/culled-glyphs.ref.png
new file mode 100644
index 0000000..6701295
Binary files /dev/null and b/test/reference/culled-glyphs.ref.png differ
diff --git a/test/reference/dash-caps-joins.ref.png b/test/reference/dash-caps-joins.ref.png
index 464ae67..0600125 100644
Binary files a/test/reference/dash-caps-joins.ref.png and b/test/reference/dash-caps-joins.ref.png differ
diff --git a/test/reference/dash-curve.ref.png b/test/reference/dash-curve.ref.png
new file mode 100644
index 0000000..8eefce2
Binary files /dev/null and b/test/reference/dash-curve.ref.png differ
diff --git a/test/reference/dash-infinite-loop.ref.png b/test/reference/dash-infinite-loop.ref.png
new file mode 100644
index 0000000..2ae1717
Binary files /dev/null and b/test/reference/dash-infinite-loop.ref.png differ
diff --git a/test/reference/dash-offset-negative.ref.png b/test/reference/dash-offset-negative.ref.png
new file mode 100644
index 0000000..df22d08
Binary files /dev/null and b/test/reference/dash-offset-negative.ref.png differ
diff --git a/test/reference/dash-scale.ref.png b/test/reference/dash-scale.ref.png
index 5e08fd8..a169364 100644
Binary files a/test/reference/dash-scale.ref.png and b/test/reference/dash-scale.ref.png differ
diff --git a/test/reference/dash-state.ref.png b/test/reference/dash-state.ref.png
new file mode 100644
index 0000000..31551cf
Binary files /dev/null and b/test/reference/dash-state.ref.png differ
diff --git a/test/reference/degenerate-arc.ref.png b/test/reference/degenerate-arc.ref.png
new file mode 100644
index 0000000..3242ca4
Binary files /dev/null and b/test/reference/degenerate-arc.ref.png differ
diff --git a/test/reference/degenerate-dash.ref.png b/test/reference/degenerate-dash.ref.png
new file mode 100644
index 0000000..e8635f1
Binary files /dev/null and b/test/reference/degenerate-dash.ref.png differ
diff --git a/test/reference/degenerate-linear-gradient.ref.png b/test/reference/degenerate-linear-gradient.ref.png
new file mode 100644
index 0000000..ceed48a
Binary files /dev/null and b/test/reference/degenerate-linear-gradient.ref.png differ
diff --git a/test/reference/degenerate-pen.ref.png b/test/reference/degenerate-pen.ref.png
new file mode 100644
index 0000000..ea65d22
Binary files /dev/null and b/test/reference/degenerate-pen.ref.png differ
diff --git a/test/reference/drunkard-tails.ref.png b/test/reference/drunkard-tails.ref.png
index b532ab8..b38b897 100644
Binary files a/test/reference/drunkard-tails.ref.png and b/test/reference/drunkard-tails.ref.png differ
diff --git a/test/reference/extend-pad-border.ref.png b/test/reference/extend-pad-border.ref.png
new file mode 100644
index 0000000..f4fc524
Binary files /dev/null and b/test/reference/extend-pad-border.ref.png differ
diff --git a/test/reference/extended-blend-alpha-mask.argb32.ref.png b/test/reference/extended-blend-alpha-mask.argb32.ref.png
new file mode 100644
index 0000000..a1dd2a9
Binary files /dev/null and b/test/reference/extended-blend-alpha-mask.argb32.ref.png differ
diff --git a/test/reference/extended-blend-alpha-mask.ref.png b/test/reference/extended-blend-alpha-mask.ref.png
deleted file mode 100644
index a1dd2a9..0000000
Binary files a/test/reference/extended-blend-alpha-mask.ref.png and /dev/null differ
diff --git a/test/reference/extended-blend-alpha-mask.rgb24.ref.png b/test/reference/extended-blend-alpha-mask.rgb24.ref.png
new file mode 100644
index 0000000..b5f12f1
Binary files /dev/null and b/test/reference/extended-blend-alpha-mask.rgb24.ref.png differ
diff --git a/test/reference/extended-blend-alpha.argb32.ref.png b/test/reference/extended-blend-alpha.argb32.ref.png
new file mode 100644
index 0000000..4d56a21
Binary files /dev/null and b/test/reference/extended-blend-alpha.argb32.ref.png differ
diff --git a/test/reference/extended-blend-alpha.ref.png b/test/reference/extended-blend-alpha.ref.png
deleted file mode 100644
index 4d56a21..0000000
Binary files a/test/reference/extended-blend-alpha.ref.png and /dev/null differ
diff --git a/test/reference/extended-blend-alpha.rgb24.ref.png b/test/reference/extended-blend-alpha.rgb24.ref.png
new file mode 100644
index 0000000..86d0e2d
Binary files /dev/null and b/test/reference/extended-blend-alpha.rgb24.ref.png differ
diff --git a/test/reference/extended-blend-mask.argb32.ref.png b/test/reference/extended-blend-mask.argb32.ref.png
new file mode 100644
index 0000000..79a6e53
Binary files /dev/null and b/test/reference/extended-blend-mask.argb32.ref.png differ
diff --git a/test/reference/extended-blend-mask.ref.png b/test/reference/extended-blend-mask.ref.png
deleted file mode 100644
index 5fa78e4..0000000
Binary files a/test/reference/extended-blend-mask.ref.png and /dev/null differ
diff --git a/test/reference/extended-blend-mask.rgb24.ref.png b/test/reference/extended-blend-mask.rgb24.ref.png
new file mode 100644
index 0000000..400df6a
Binary files /dev/null and b/test/reference/extended-blend-mask.rgb24.ref.png differ
diff --git a/test/reference/extended-blend-solid-alpha.argb32.ref.png b/test/reference/extended-blend-solid-alpha.argb32.ref.png
new file mode 100644
index 0000000..4d56a21
Binary files /dev/null and b/test/reference/extended-blend-solid-alpha.argb32.ref.png differ
diff --git a/test/reference/extended-blend-solid-alpha.ref.png b/test/reference/extended-blend-solid-alpha.ref.png
deleted file mode 100644
index 4d56a21..0000000
Binary files a/test/reference/extended-blend-solid-alpha.ref.png and /dev/null differ
diff --git a/test/reference/extended-blend-solid-alpha.rgb24.ref.png b/test/reference/extended-blend-solid-alpha.rgb24.ref.png
new file mode 100644
index 0000000..86d0e2d
Binary files /dev/null and b/test/reference/extended-blend-solid-alpha.rgb24.ref.png differ
diff --git a/test/reference/extended-blend-solid.argb32.ref.png b/test/reference/extended-blend-solid.argb32.ref.png
new file mode 100644
index 0000000..573c16a
Binary files /dev/null and b/test/reference/extended-blend-solid.argb32.ref.png differ
diff --git a/test/reference/extended-blend-solid.ref.png b/test/reference/extended-blend-solid.ref.png
deleted file mode 100644
index 902ef88..0000000
Binary files a/test/reference/extended-blend-solid.ref.png and /dev/null differ
diff --git a/test/reference/extended-blend-solid.rgb24.ref.png b/test/reference/extended-blend-solid.rgb24.ref.png
new file mode 100644
index 0000000..cdcb6ad
Binary files /dev/null and b/test/reference/extended-blend-solid.rgb24.ref.png differ
diff --git a/test/reference/extended-blend.argb32.ref.png b/test/reference/extended-blend.argb32.ref.png
new file mode 100644
index 0000000..573c16a
Binary files /dev/null and b/test/reference/extended-blend.argb32.ref.png differ
diff --git a/test/reference/extended-blend.ref.png b/test/reference/extended-blend.ref.png
deleted file mode 100644
index 902ef88..0000000
Binary files a/test/reference/extended-blend.ref.png and /dev/null differ
diff --git a/test/reference/extended-blend.rgb24.ref.png b/test/reference/extended-blend.rgb24.ref.png
new file mode 100644
index 0000000..cdcb6ad
Binary files /dev/null and b/test/reference/extended-blend.rgb24.ref.png differ
diff --git a/test/reference/fallback.argb32.ref.png b/test/reference/fallback.argb32.ref.png
new file mode 100644
index 0000000..b96e90a
Binary files /dev/null and b/test/reference/fallback.argb32.ref.png differ
diff --git a/test/reference/fallback.ref.png b/test/reference/fallback.ref.png
deleted file mode 100644
index c97e283..0000000
Binary files a/test/reference/fallback.ref.png and /dev/null differ
diff --git a/test/reference/fallback.rgb24.ref.png b/test/reference/fallback.rgb24.ref.png
new file mode 100644
index 0000000..3f92132
Binary files /dev/null and b/test/reference/fallback.rgb24.ref.png differ
diff --git a/test/reference/fill-alpha-pattern.ref.png b/test/reference/fill-alpha-pattern.ref.png
new file mode 100644
index 0000000..e32eb90
Binary files /dev/null and b/test/reference/fill-alpha-pattern.ref.png differ
diff --git a/test/reference/fill-alpha.ref.png b/test/reference/fill-alpha.ref.png
new file mode 100644
index 0000000..25c1ac6
Binary files /dev/null and b/test/reference/fill-alpha.ref.png differ
diff --git a/test/reference/fill-and-stroke-alpha-add.ref.png b/test/reference/fill-and-stroke-alpha-add.ref.png
new file mode 100644
index 0000000..f10ffc2
Binary files /dev/null and b/test/reference/fill-and-stroke-alpha-add.ref.png differ
diff --git a/test/reference/fill-and-stroke-alpha.ref.png b/test/reference/fill-and-stroke-alpha.ref.png
new file mode 100644
index 0000000..8e81157
Binary files /dev/null and b/test/reference/fill-and-stroke-alpha.ref.png differ
diff --git a/test/reference/fill-degenerate-sort-order.argb32.ref.png b/test/reference/fill-degenerate-sort-order.argb32.ref.png
new file mode 100644
index 0000000..bed9b5c
Binary files /dev/null and b/test/reference/fill-degenerate-sort-order.argb32.ref.png differ
diff --git a/test/reference/fill-degenerate-sort-order.ref.png b/test/reference/fill-degenerate-sort-order.ref.png
deleted file mode 100644
index a06196e..0000000
Binary files a/test/reference/fill-degenerate-sort-order.ref.png and /dev/null differ
diff --git a/test/reference/fill-degenerate-sort-order.rgb24.ref.png b/test/reference/fill-degenerate-sort-order.rgb24.ref.png
new file mode 100644
index 0000000..3f26e30
Binary files /dev/null and b/test/reference/fill-degenerate-sort-order.rgb24.ref.png differ
diff --git a/test/reference/fill-image.ref.png b/test/reference/fill-image.ref.png
new file mode 100644
index 0000000..e521be4
Binary files /dev/null and b/test/reference/fill-image.ref.png differ
diff --git a/test/reference/fill-rule.argb32.ref.png b/test/reference/fill-rule.argb32.ref.png
index 282a211..9a0ea40 100644
Binary files a/test/reference/fill-rule.argb32.ref.png and b/test/reference/fill-rule.argb32.ref.png differ
diff --git a/test/reference/fill-rule.rgb24.ref.png b/test/reference/fill-rule.rgb24.ref.png
index 2603761..25023a2 100644
Binary files a/test/reference/fill-rule.rgb24.ref.png and b/test/reference/fill-rule.rgb24.ref.png differ
diff --git a/test/reference/fill-xlib.ref.png b/test/reference/fill-xlib.ref.png
new file mode 100644
index 0000000..1e67073
Binary files /dev/null and b/test/reference/fill-xlib.ref.png differ
diff --git a/test/reference/filter-bilinear-extents.ref.png b/test/reference/filter-bilinear-extents.ref.png
new file mode 100644
index 0000000..797e798
Binary files /dev/null and b/test/reference/filter-bilinear-extents.ref.png differ
diff --git a/test/reference/font-matrix-translation.ref.png b/test/reference/font-matrix-translation.ref.png
new file mode 100644
index 0000000..a4a1082
Binary files /dev/null and b/test/reference/font-matrix-translation.ref.png differ
diff --git a/test/reference/ft-show-glyphs-positioning.ref.png b/test/reference/ft-show-glyphs-positioning.ref.png
new file mode 100644
index 0000000..af6dcaf
Binary files /dev/null and b/test/reference/ft-show-glyphs-positioning.ref.png differ
diff --git a/test/reference/ft-show-glyphs-table.ref.png b/test/reference/ft-show-glyphs-table.ref.png
new file mode 100644
index 0000000..ed69124
Binary files /dev/null and b/test/reference/ft-show-glyphs-table.ref.png differ
diff --git a/test/reference/ft-text-vertical-layout-type1.ref.png b/test/reference/ft-text-vertical-layout-type1.ref.png
new file mode 100644
index 0000000..7a5670e
Binary files /dev/null and b/test/reference/ft-text-vertical-layout-type1.ref.png differ
diff --git a/test/reference/ft-text-vertical-layout-type3.ref.png b/test/reference/ft-text-vertical-layout-type3.ref.png
new file mode 100644
index 0000000..5f64d88
Binary files /dev/null and b/test/reference/ft-text-vertical-layout-type3.ref.png differ
diff --git a/test/reference/glyph-cache-pressure.ref.png b/test/reference/glyph-cache-pressure.ref.png
new file mode 100644
index 0000000..a6e1b06
Binary files /dev/null and b/test/reference/glyph-cache-pressure.ref.png differ
diff --git a/test/reference/group-unaligned.ref.png b/test/reference/group-unaligned.ref.png
new file mode 100644
index 0000000..6356e6c
Binary files /dev/null and b/test/reference/group-unaligned.ref.png differ
diff --git a/test/reference/halo-transform.ref.png b/test/reference/halo-transform.ref.png
new file mode 100644
index 0000000..f549c0d
Binary files /dev/null and b/test/reference/halo-transform.ref.png differ
diff --git a/test/reference/halo.ref.png b/test/reference/halo.ref.png
new file mode 100644
index 0000000..dc1316d
Binary files /dev/null and b/test/reference/halo.ref.png differ
diff --git a/test/reference/hatchings.ref.png b/test/reference/hatchings.ref.png
new file mode 100644
index 0000000..215d61f
Binary files /dev/null and b/test/reference/hatchings.ref.png differ
diff --git a/test/reference/horizontal-clip.ref.png b/test/reference/horizontal-clip.ref.png
new file mode 100644
index 0000000..43dd07f
Binary files /dev/null and b/test/reference/horizontal-clip.ref.png differ
diff --git a/test/reference/huge-linear.ref.png b/test/reference/huge-linear.ref.png
new file mode 100644
index 0000000..c20a8b7
Binary files /dev/null and b/test/reference/huge-linear.ref.png differ
diff --git a/test/reference/infinite-join.ref.png b/test/reference/infinite-join.ref.png
new file mode 100644
index 0000000..54a9112
Binary files /dev/null and b/test/reference/infinite-join.ref.png differ
diff --git a/test/reference/inverse-text.ref.png b/test/reference/inverse-text.ref.png
new file mode 100644
index 0000000..b7bbb97
Binary files /dev/null and b/test/reference/inverse-text.ref.png differ
diff --git a/test/reference/inverted-clip.argb32.ref.png b/test/reference/inverted-clip.argb32.ref.png
new file mode 100644
index 0000000..f97d377
Binary files /dev/null and b/test/reference/inverted-clip.argb32.ref.png differ
diff --git a/test/reference/inverted-clip.rgb24.ref.png b/test/reference/inverted-clip.rgb24.ref.png
index 582789e..df945ec 100644
Binary files a/test/reference/inverted-clip.rgb24.ref.png and b/test/reference/inverted-clip.rgb24.ref.png differ
diff --git a/test/reference/joins-loop.ref.png b/test/reference/joins-loop.ref.png
new file mode 100644
index 0000000..ecd6b23
Binary files /dev/null and b/test/reference/joins-loop.ref.png differ
diff --git a/test/reference/joins-retrace.ref.png b/test/reference/joins-retrace.ref.png
index da3a774..c21c80a 100644
Binary files a/test/reference/joins-retrace.ref.png and b/test/reference/joins-retrace.ref.png differ
diff --git a/test/reference/joins-star.ref.png b/test/reference/joins-star.ref.png
new file mode 100644
index 0000000..6fea13e
Binary files /dev/null and b/test/reference/joins-star.ref.png differ
diff --git a/test/reference/large-twin-antialias-mixed.ref.png b/test/reference/large-twin-antialias-mixed.ref.png
new file mode 100644
index 0000000..73755ab
Binary files /dev/null and b/test/reference/large-twin-antialias-mixed.ref.png differ
diff --git a/test/reference/leaky-dashed-stroke.ref.png b/test/reference/leaky-dashed-stroke.ref.png
new file mode 100644
index 0000000..1b85692
Binary files /dev/null and b/test/reference/leaky-dashed-stroke.ref.png differ
diff --git a/test/reference/leaky-polygon.ref.png b/test/reference/leaky-polygon.ref.png
new file mode 100644
index 0000000..d2a06a3
Binary files /dev/null and b/test/reference/leaky-polygon.ref.png differ
diff --git a/test/reference/line-width-large-overlap-rotated.ref.png b/test/reference/line-width-large-overlap-rotated.ref.png
new file mode 100644
index 0000000..3eeebb2
Binary files /dev/null and b/test/reference/line-width-large-overlap-rotated.ref.png differ
diff --git a/test/reference/line-width-overlap-rotated.ref.png b/test/reference/line-width-overlap-rotated.ref.png
new file mode 100644
index 0000000..cce46c7
Binary files /dev/null and b/test/reference/line-width-overlap-rotated.ref.png differ
diff --git a/test/reference/line-width-scale.ref.png b/test/reference/line-width-scale.ref.png
new file mode 100644
index 0000000..5767bc7
Binary files /dev/null and b/test/reference/line-width-scale.ref.png differ
diff --git a/test/reference/line-width-tolerance.ref.png b/test/reference/line-width-tolerance.ref.png
new file mode 100644
index 0000000..9c4d439
Binary files /dev/null and b/test/reference/line-width-tolerance.ref.png differ
diff --git a/test/reference/line-width.ref.png b/test/reference/line-width.ref.png
new file mode 100644
index 0000000..2a78828
Binary files /dev/null and b/test/reference/line-width.ref.png differ
diff --git a/test/reference/linear-gradient-reflect.ref.png b/test/reference/linear-gradient-reflect.ref.png
new file mode 100644
index 0000000..b68dccb
Binary files /dev/null and b/test/reference/linear-gradient-reflect.ref.png differ
diff --git a/test/reference/linear-gradient-subset.ref.png b/test/reference/linear-gradient-subset.ref.png
new file mode 100644
index 0000000..8e95d10
Binary files /dev/null and b/test/reference/linear-gradient-subset.ref.png differ
diff --git a/test/reference/linear-gradient.ref.png b/test/reference/linear-gradient.ref.png
new file mode 100644
index 0000000..32c99a4
Binary files /dev/null and b/test/reference/linear-gradient.ref.png differ
diff --git a/test/reference/long-dashed-lines.ref.png b/test/reference/long-dashed-lines.ref.png
new file mode 100644
index 0000000..9c7208c
Binary files /dev/null and b/test/reference/long-dashed-lines.ref.png differ
diff --git a/test/reference/map-all-to-xlib.ref.png b/test/reference/map-all-to-xlib.ref.png
new file mode 100644
index 0000000..c56d969
Binary files /dev/null and b/test/reference/map-all-to-xlib.ref.png differ
diff --git a/test/reference/map-bit-to-xlib.ref.png b/test/reference/map-bit-to-xlib.ref.png
new file mode 100644
index 0000000..b42dcb6
Binary files /dev/null and b/test/reference/map-bit-to-xlib.ref.png differ
diff --git a/test/reference/mask-alpha.argb32.ref.png b/test/reference/mask-alpha.argb32.ref.png
new file mode 100644
index 0000000..90717f0
Binary files /dev/null and b/test/reference/mask-alpha.argb32.ref.png differ
diff --git a/test/reference/mask-alpha.ref.png b/test/reference/mask-alpha.ref.png
deleted file mode 100644
index 05db981..0000000
Binary files a/test/reference/mask-alpha.ref.png and /dev/null differ
diff --git a/test/reference/mask-alpha.rgb24.ref.png b/test/reference/mask-alpha.rgb24.ref.png
new file mode 100644
index 0000000..9999b8a
Binary files /dev/null and b/test/reference/mask-alpha.rgb24.ref.png differ
diff --git a/test/reference/mask-transformed-image.ref.png b/test/reference/mask-transformed-image.ref.png
new file mode 100644
index 0000000..af84b39
Binary files /dev/null and b/test/reference/mask-transformed-image.ref.png differ
diff --git a/test/reference/mask-transformed-similar.ref.png b/test/reference/mask-transformed-similar.ref.png
new file mode 100644
index 0000000..af84b39
Binary files /dev/null and b/test/reference/mask-transformed-similar.ref.png differ
diff --git a/test/reference/mask-transformed-xlib.ref.png b/test/reference/mask-transformed-xlib.ref.png
new file mode 100644
index 0000000..09eb43a
Binary files /dev/null and b/test/reference/mask-transformed-xlib.ref.png differ
diff --git a/test/reference/mask.argb32.ref.png b/test/reference/mask.argb32.ref.png
index cf02eaa..a4c683c 100644
Binary files a/test/reference/mask.argb32.ref.png and b/test/reference/mask.argb32.ref.png differ
diff --git a/test/reference/mask.rgb24.ref.png b/test/reference/mask.rgb24.ref.png
index cb9cc32..1bd1833 100644
Binary files a/test/reference/mask.rgb24.ref.png and b/test/reference/mask.rgb24.ref.png differ
diff --git a/test/reference/miter-precision.ref.png b/test/reference/miter-precision.ref.png
new file mode 100644
index 0000000..a2c333e
Binary files /dev/null and b/test/reference/miter-precision.ref.png differ
diff --git a/test/reference/operator-clear.argb32.ref.png b/test/reference/operator-clear.argb32.ref.png
index dec63f1..2ce556e 100644
Binary files a/test/reference/operator-clear.argb32.ref.png and b/test/reference/operator-clear.argb32.ref.png differ
diff --git a/test/reference/operator-clear.rgb24.ref.png b/test/reference/operator-clear.rgb24.ref.png
index e814598..533b49a 100644
Binary files a/test/reference/operator-clear.rgb24.ref.png and b/test/reference/operator-clear.rgb24.ref.png differ
diff --git a/test/reference/operator-source.argb32.ref.png b/test/reference/operator-source.argb32.ref.png
index 180417c..5fd5c43 100644
Binary files a/test/reference/operator-source.argb32.ref.png and b/test/reference/operator-source.argb32.ref.png differ
diff --git a/test/reference/operator-source.rgb24.ref.png b/test/reference/operator-source.rgb24.ref.png
index 0d5d0ac..c7846e5 100644
Binary files a/test/reference/operator-source.rgb24.ref.png and b/test/reference/operator-source.rgb24.ref.png differ
diff --git a/test/reference/over-above-source.argb32.ref.png b/test/reference/over-above-source.argb32.ref.png
index 80167f9..479437f 100644
Binary files a/test/reference/over-above-source.argb32.ref.png and b/test/reference/over-above-source.argb32.ref.png differ
diff --git a/test/reference/over-above-source.rgb24.ref.png b/test/reference/over-above-source.rgb24.ref.png
index f7eb6d6..6fc2f52 100644
Binary files a/test/reference/over-above-source.rgb24.ref.png and b/test/reference/over-above-source.rgb24.ref.png differ
diff --git a/test/reference/over-around-source.argb32.ref.png b/test/reference/over-around-source.argb32.ref.png
index e16108d..abc81c7 100644
Binary files a/test/reference/over-around-source.argb32.ref.png and b/test/reference/over-around-source.argb32.ref.png differ
diff --git a/test/reference/over-around-source.rgb24.ref.png b/test/reference/over-around-source.rgb24.ref.png
index 8d133ea..41ade95 100644
Binary files a/test/reference/over-around-source.rgb24.ref.png and b/test/reference/over-around-source.rgb24.ref.png differ
diff --git a/test/reference/over-below-source.argb32.ref.png b/test/reference/over-below-source.argb32.ref.png
index 0b55974..5191609 100644
Binary files a/test/reference/over-below-source.argb32.ref.png and b/test/reference/over-below-source.argb32.ref.png differ
diff --git a/test/reference/over-below-source.rgb24.ref.png b/test/reference/over-below-source.rgb24.ref.png
index 58bc50d..20ee671 100644
Binary files a/test/reference/over-below-source.rgb24.ref.png and b/test/reference/over-below-source.rgb24.ref.png differ
diff --git a/test/reference/over-between-source.argb32.ref.png b/test/reference/over-between-source.argb32.ref.png
index 1055c4d..9ba86f0 100644
Binary files a/test/reference/over-between-source.argb32.ref.png and b/test/reference/over-between-source.argb32.ref.png differ
diff --git a/test/reference/over-between-source.rgb24.ref.png b/test/reference/over-between-source.rgb24.ref.png
index 5726714..b0d31e6 100644
Binary files a/test/reference/over-between-source.rgb24.ref.png and b/test/reference/over-between-source.rgb24.ref.png differ
diff --git a/test/reference/overlapping-dash-caps.ref.png b/test/reference/overlapping-dash-caps.ref.png
new file mode 100644
index 0000000..1a2abf7
Binary files /dev/null and b/test/reference/overlapping-dash-caps.ref.png differ
diff --git a/test/reference/paint-with-alpha-clip-mask.ref.png b/test/reference/paint-with-alpha-clip-mask.ref.png
new file mode 100644
index 0000000..4ee4c41
Binary files /dev/null and b/test/reference/paint-with-alpha-clip-mask.ref.png differ
diff --git a/test/reference/partial-clip-text-bottom.ref.png b/test/reference/partial-clip-text-bottom.ref.png
new file mode 100644
index 0000000..6a299d4
Binary files /dev/null and b/test/reference/partial-clip-text-bottom.ref.png differ
diff --git a/test/reference/partial-clip-text-left.ref.png b/test/reference/partial-clip-text-left.ref.png
new file mode 100644
index 0000000..54a1a85
Binary files /dev/null and b/test/reference/partial-clip-text-left.ref.png differ
diff --git a/test/reference/partial-clip-text-right.ref.png b/test/reference/partial-clip-text-right.ref.png
new file mode 100644
index 0000000..2fbdca0
Binary files /dev/null and b/test/reference/partial-clip-text-right.ref.png differ
diff --git a/test/reference/partial-clip-text-top.ref.png b/test/reference/partial-clip-text-top.ref.png
new file mode 100644
index 0000000..d18475b
Binary files /dev/null and b/test/reference/partial-clip-text-top.ref.png differ
diff --git a/test/reference/path-append.ref.png b/test/reference/path-append.ref.png
new file mode 100644
index 0000000..33af231
Binary files /dev/null and b/test/reference/path-append.ref.png differ
diff --git a/test/reference/path-stroke-twice.ref.png b/test/reference/path-stroke-twice.ref.png
new file mode 100644
index 0000000..743c6ce
Binary files /dev/null and b/test/reference/path-stroke-twice.ref.png differ
diff --git a/test/reference/pthread-show-text.ref.png b/test/reference/pthread-show-text.ref.png
new file mode 100644
index 0000000..90d0af3
Binary files /dev/null and b/test/reference/pthread-show-text.ref.png differ
diff --git a/test/reference/push-group-color.ref.png b/test/reference/push-group-color.ref.png
new file mode 100644
index 0000000..a2842b0
Binary files /dev/null and b/test/reference/push-group-color.ref.png differ
diff --git a/test/reference/push-group.argb32.ref.png b/test/reference/push-group.argb32.ref.png
index ab68c79..28dcf0c 100644
Binary files a/test/reference/push-group.argb32.ref.png and b/test/reference/push-group.argb32.ref.png differ
diff --git a/test/reference/push-group.rgb24.ref.png b/test/reference/push-group.rgb24.ref.png
index 04d1382..ca67068 100644
Binary files a/test/reference/push-group.rgb24.ref.png and b/test/reference/push-group.rgb24.ref.png differ
diff --git a/test/reference/random-clip.ref.png b/test/reference/random-clip.ref.png
new file mode 100644
index 0000000..de7a605
Binary files /dev/null and b/test/reference/random-clip.ref.png differ
diff --git a/test/reference/random-intersections-curves-eo.ref.png b/test/reference/random-intersections-curves-eo.ref.png
new file mode 100644
index 0000000..1c12f22
Binary files /dev/null and b/test/reference/random-intersections-curves-eo.ref.png differ
diff --git a/test/reference/random-intersections-curves-nz.ref.png b/test/reference/random-intersections-curves-nz.ref.png
new file mode 100644
index 0000000..f251d27
Binary files /dev/null and b/test/reference/random-intersections-curves-nz.ref.png differ
diff --git a/test/reference/random-intersections-eo.ref.png b/test/reference/random-intersections-eo.ref.png
new file mode 100644
index 0000000..ccd3f80
Binary files /dev/null and b/test/reference/random-intersections-eo.ref.png differ
diff --git a/test/reference/random-intersections-nonzero.ref.png b/test/reference/random-intersections-nonzero.ref.png
new file mode 100644
index 0000000..6f02ea0
Binary files /dev/null and b/test/reference/random-intersections-nonzero.ref.png differ
diff --git a/test/reference/record-fill-alpha.ref.png b/test/reference/record-fill-alpha.ref.png
new file mode 100644
index 0000000..25c1ac6
Binary files /dev/null and b/test/reference/record-fill-alpha.ref.png differ
diff --git a/test/reference/record-paint-alpha-clip-mask.ref.png b/test/reference/record-paint-alpha-clip-mask.ref.png
new file mode 100644
index 0000000..4ee4c41
Binary files /dev/null and b/test/reference/record-paint-alpha-clip-mask.ref.png differ
diff --git a/test/reference/record-paint-alpha-clip.ref.png b/test/reference/record-paint-alpha-clip.ref.png
new file mode 100644
index 0000000..4bad4e8
Binary files /dev/null and b/test/reference/record-paint-alpha-clip.ref.png differ
diff --git a/test/reference/record-select-font-face.ref.png b/test/reference/record-select-font-face.ref.png
new file mode 100644
index 0000000..1334a9a
Binary files /dev/null and b/test/reference/record-select-font-face.ref.png differ
diff --git a/test/reference/record-text-transform.ref.png b/test/reference/record-text-transform.ref.png
index 8e74785..4603bc5 100644
Binary files a/test/reference/record-text-transform.ref.png and b/test/reference/record-text-transform.ref.png differ
diff --git a/test/reference/record1414x-fill-alpha.ref.png b/test/reference/record1414x-fill-alpha.ref.png
new file mode 100644
index 0000000..8e9f322
Binary files /dev/null and b/test/reference/record1414x-fill-alpha.ref.png differ
diff --git a/test/reference/record1414x-paint-alpha-clip-mask.ref.png b/test/reference/record1414x-paint-alpha-clip-mask.ref.png
new file mode 100644
index 0000000..e381b73
Binary files /dev/null and b/test/reference/record1414x-paint-alpha-clip-mask.ref.png differ
diff --git a/test/reference/record1414x-paint-alpha-clip.ref.png b/test/reference/record1414x-paint-alpha-clip.ref.png
new file mode 100644
index 0000000..6c11f1d
Binary files /dev/null and b/test/reference/record1414x-paint-alpha-clip.ref.png differ
diff --git a/test/reference/record1414x-paint-alpha-solid-clip.ref.png b/test/reference/record1414x-paint-alpha-solid-clip.ref.png
new file mode 100644
index 0000000..7a8e594
Binary files /dev/null and b/test/reference/record1414x-paint-alpha-solid-clip.ref.png differ
diff --git a/test/reference/record1414x-paint-alpha.ref.png b/test/reference/record1414x-paint-alpha.ref.png
new file mode 100644
index 0000000..eee74ce
Binary files /dev/null and b/test/reference/record1414x-paint-alpha.ref.png differ
diff --git a/test/reference/record1414x-paint.ref.png b/test/reference/record1414x-paint.ref.png
new file mode 100644
index 0000000..e0a1341
Binary files /dev/null and b/test/reference/record1414x-paint.ref.png differ
diff --git a/test/reference/record1414x-select-font-face.ref.png b/test/reference/record1414x-select-font-face.ref.png
new file mode 100644
index 0000000..6c52067
Binary files /dev/null and b/test/reference/record1414x-select-font-face.ref.png differ
diff --git a/test/reference/record1414x-self-intersecting.ref.png b/test/reference/record1414x-self-intersecting.ref.png
new file mode 100644
index 0000000..62f91c9
Binary files /dev/null and b/test/reference/record1414x-self-intersecting.ref.png differ
diff --git a/test/reference/record1414x-text-transform.ref.png b/test/reference/record1414x-text-transform.ref.png
index ef3c967..3bb8b12 100644
Binary files a/test/reference/record1414x-text-transform.ref.png and b/test/reference/record1414x-text-transform.ref.png differ
diff --git a/test/reference/record2x-fill-alpha.ref.png b/test/reference/record2x-fill-alpha.ref.png
new file mode 100644
index 0000000..91787bd
Binary files /dev/null and b/test/reference/record2x-fill-alpha.ref.png differ
diff --git a/test/reference/record2x-paint-alpha-clip-mask.ref.png b/test/reference/record2x-paint-alpha-clip-mask.ref.png
new file mode 100644
index 0000000..dd1ca05
Binary files /dev/null and b/test/reference/record2x-paint-alpha-clip-mask.ref.png differ
diff --git a/test/reference/record2x-paint-alpha-clip.ref.png b/test/reference/record2x-paint-alpha-clip.ref.png
new file mode 100644
index 0000000..b3829d5
Binary files /dev/null and b/test/reference/record2x-paint-alpha-clip.ref.png differ
diff --git a/test/reference/record2x-paint-alpha-solid-clip.ref.png b/test/reference/record2x-paint-alpha-solid-clip.ref.png
new file mode 100644
index 0000000..06e350f
Binary files /dev/null and b/test/reference/record2x-paint-alpha-solid-clip.ref.png differ
diff --git a/test/reference/record2x-paint-alpha.ref.png b/test/reference/record2x-paint-alpha.ref.png
new file mode 100644
index 0000000..3a02b67
Binary files /dev/null and b/test/reference/record2x-paint-alpha.ref.png differ
diff --git a/test/reference/record2x-paint.ref.png b/test/reference/record2x-paint.ref.png
new file mode 100644
index 0000000..792a1d0
Binary files /dev/null and b/test/reference/record2x-paint.ref.png differ
diff --git a/test/reference/record2x-select-font-face.ref.png b/test/reference/record2x-select-font-face.ref.png
new file mode 100644
index 0000000..7a99795
Binary files /dev/null and b/test/reference/record2x-select-font-face.ref.png differ
diff --git a/test/reference/record2x-self-intersecting.ref.png b/test/reference/record2x-self-intersecting.ref.png
new file mode 100644
index 0000000..2836dae
Binary files /dev/null and b/test/reference/record2x-self-intersecting.ref.png differ
diff --git a/test/reference/record2x-text-transform.ref.png b/test/reference/record2x-text-transform.ref.png
index ff521ab..6c21785 100644
Binary files a/test/reference/record2x-text-transform.ref.png and b/test/reference/record2x-text-transform.ref.png differ
diff --git a/test/reference/record90-fill-alpha.ref.png b/test/reference/record90-fill-alpha.ref.png
new file mode 100644
index 0000000..bf3b260
Binary files /dev/null and b/test/reference/record90-fill-alpha.ref.png differ
diff --git a/test/reference/record90-paint-alpha-clip-mask.ref.png b/test/reference/record90-paint-alpha-clip-mask.ref.png
new file mode 100644
index 0000000..5c2106b
Binary files /dev/null and b/test/reference/record90-paint-alpha-clip-mask.ref.png differ
diff --git a/test/reference/record90-paint-alpha-clip.ref.png b/test/reference/record90-paint-alpha-clip.ref.png
new file mode 100644
index 0000000..3fae802
Binary files /dev/null and b/test/reference/record90-paint-alpha-clip.ref.png differ
diff --git a/test/reference/record90-paint-alpha-solid-clip.ref.png b/test/reference/record90-paint-alpha-solid-clip.ref.png
new file mode 100644
index 0000000..17bff57
Binary files /dev/null and b/test/reference/record90-paint-alpha-solid-clip.ref.png differ
diff --git a/test/reference/record90-paint-alpha.ref.png b/test/reference/record90-paint-alpha.ref.png
new file mode 100644
index 0000000..5e9cb58
Binary files /dev/null and b/test/reference/record90-paint-alpha.ref.png differ
diff --git a/test/reference/record90-paint.ref.png b/test/reference/record90-paint.ref.png
new file mode 100644
index 0000000..22cc7a1
Binary files /dev/null and b/test/reference/record90-paint.ref.png differ
diff --git a/test/reference/record90-select-font-face.ref.png b/test/reference/record90-select-font-face.ref.png
new file mode 100644
index 0000000..189a315
Binary files /dev/null and b/test/reference/record90-select-font-face.ref.png differ
diff --git a/test/reference/record90-self-intersecting.ref.png b/test/reference/record90-self-intersecting.ref.png
index 3776b94..15ce4c0 100644
Binary files a/test/reference/record90-self-intersecting.ref.png and b/test/reference/record90-self-intersecting.ref.png differ
diff --git a/test/reference/record90-text-transform.ref.png b/test/reference/record90-text-transform.ref.png
index e8fa722..22f6c1f 100644
Binary files a/test/reference/record90-text-transform.ref.png and b/test/reference/record90-text-transform.ref.png differ
diff --git a/test/reference/recordflip-fill-alpha.ref.png b/test/reference/recordflip-fill-alpha.ref.png
index 86d9fd1..289a915 100644
Binary files a/test/reference/recordflip-fill-alpha.ref.png and b/test/reference/recordflip-fill-alpha.ref.png differ
diff --git a/test/reference/recordflip-paint-alpha-clip-mask.ref.png b/test/reference/recordflip-paint-alpha-clip-mask.ref.png
index 2594571..842fa35 100644
Binary files a/test/reference/recordflip-paint-alpha-clip-mask.ref.png and b/test/reference/recordflip-paint-alpha-clip-mask.ref.png differ
diff --git a/test/reference/recording-surface-extend-none.argb32.ref.png b/test/reference/recording-surface-extend-none.argb32.ref.png
new file mode 100644
index 0000000..1389887
Binary files /dev/null and b/test/reference/recording-surface-extend-none.argb32.ref.png differ
diff --git a/test/reference/recording-surface-extend-none.ref.png b/test/reference/recording-surface-extend-none.ref.png
deleted file mode 100644
index d69cdc9..0000000
Binary files a/test/reference/recording-surface-extend-none.ref.png and /dev/null differ
diff --git a/test/reference/recording-surface-extend-none.rgb24.ref.png b/test/reference/recording-surface-extend-none.rgb24.ref.png
new file mode 100644
index 0000000..6a8b81e
Binary files /dev/null and b/test/reference/recording-surface-extend-none.rgb24.ref.png differ
diff --git a/test/reference/recording-surface-extend-pad.argb32.ref.png b/test/reference/recording-surface-extend-pad.argb32.ref.png
new file mode 100644
index 0000000..9efed65
Binary files /dev/null and b/test/reference/recording-surface-extend-pad.argb32.ref.png differ
diff --git a/test/reference/recording-surface-extend-pad.ref.png b/test/reference/recording-surface-extend-pad.ref.png
deleted file mode 100644
index 31b7005..0000000
Binary files a/test/reference/recording-surface-extend-pad.ref.png and /dev/null differ
diff --git a/test/reference/recording-surface-extend-pad.rgb24.ref.png b/test/reference/recording-surface-extend-pad.rgb24.ref.png
new file mode 100644
index 0000000..7336890
Binary files /dev/null and b/test/reference/recording-surface-extend-pad.rgb24.ref.png differ
diff --git a/test/reference/recording-surface-extend-reflect.argb32.ref.png b/test/reference/recording-surface-extend-reflect.argb32.ref.png
new file mode 100644
index 0000000..f63ccee
Binary files /dev/null and b/test/reference/recording-surface-extend-reflect.argb32.ref.png differ
diff --git a/test/reference/recording-surface-extend-reflect.ref.png b/test/reference/recording-surface-extend-reflect.ref.png
deleted file mode 100644
index bc1d70f..0000000
Binary files a/test/reference/recording-surface-extend-reflect.ref.png and /dev/null differ
diff --git a/test/reference/recording-surface-extend-reflect.rgb24.ref.png b/test/reference/recording-surface-extend-reflect.rgb24.ref.png
new file mode 100644
index 0000000..26d4ae9
Binary files /dev/null and b/test/reference/recording-surface-extend-reflect.rgb24.ref.png differ
diff --git a/test/reference/recording-surface-extend-repeat.argb32.ref.png b/test/reference/recording-surface-extend-repeat.argb32.ref.png
new file mode 100644
index 0000000..99d880c
Binary files /dev/null and b/test/reference/recording-surface-extend-repeat.argb32.ref.png differ
diff --git a/test/reference/recording-surface-extend-repeat.ref.png b/test/reference/recording-surface-extend-repeat.ref.png
deleted file mode 100644
index d95245b..0000000
Binary files a/test/reference/recording-surface-extend-repeat.ref.png and /dev/null differ
diff --git a/test/reference/recording-surface-extend-repeat.rgb24.ref.png b/test/reference/recording-surface-extend-repeat.rgb24.ref.png
new file mode 100644
index 0000000..474e6e9
Binary files /dev/null and b/test/reference/recording-surface-extend-repeat.rgb24.ref.png differ
diff --git a/test/reference/recording-surface-over.argb32.ref.png b/test/reference/recording-surface-over.argb32.ref.png
new file mode 100644
index 0000000..1389887
Binary files /dev/null and b/test/reference/recording-surface-over.argb32.ref.png differ
diff --git a/test/reference/recording-surface-over.ref.png b/test/reference/recording-surface-over.ref.png
deleted file mode 100644
index d69cdc9..0000000
Binary files a/test/reference/recording-surface-over.ref.png and /dev/null differ
diff --git a/test/reference/recording-surface-over.rgb24.ref.png b/test/reference/recording-surface-over.rgb24.ref.png
new file mode 100644
index 0000000..6a8b81e
Binary files /dev/null and b/test/reference/recording-surface-over.rgb24.ref.png differ
diff --git a/test/reference/recording-surface-source.argb32.ref.png b/test/reference/recording-surface-source.argb32.ref.png
new file mode 100644
index 0000000..afe6587
Binary files /dev/null and b/test/reference/recording-surface-source.argb32.ref.png differ
diff --git a/test/reference/recording-surface-source.ref.png b/test/reference/recording-surface-source.ref.png
deleted file mode 100644
index bc6930f..0000000
Binary files a/test/reference/recording-surface-source.ref.png and /dev/null differ
diff --git a/test/reference/recording-surface-source.rgb24.ref.png b/test/reference/recording-surface-source.rgb24.ref.png
new file mode 100644
index 0000000..76ec389
Binary files /dev/null and b/test/reference/recording-surface-source.rgb24.ref.png differ
diff --git a/test/reference/rectilinear-miter-limit.ref.png b/test/reference/rectilinear-miter-limit.ref.png
new file mode 100644
index 0000000..d64d581
Binary files /dev/null and b/test/reference/rectilinear-miter-limit.ref.png differ
diff --git a/test/reference/rotate-clip-image-surface-paint.ref.png b/test/reference/rotate-clip-image-surface-paint.ref.png
new file mode 100644
index 0000000..90746fd
Binary files /dev/null and b/test/reference/rotate-clip-image-surface-paint.ref.png differ
diff --git a/test/reference/rotated-clip.ref.png b/test/reference/rotated-clip.ref.png
new file mode 100644
index 0000000..f5468c7
Binary files /dev/null and b/test/reference/rotated-clip.ref.png differ
diff --git a/test/reference/rounded-rectangle-fill.ref.png b/test/reference/rounded-rectangle-fill.ref.png
new file mode 100644
index 0000000..e9bab0f
Binary files /dev/null and b/test/reference/rounded-rectangle-fill.ref.png differ
diff --git a/test/reference/rounded-rectangle-stroke.ref.png b/test/reference/rounded-rectangle-stroke.ref.png
index 6285750..a985960 100644
Binary files a/test/reference/rounded-rectangle-stroke.ref.png and b/test/reference/rounded-rectangle-stroke.ref.png differ
diff --git a/test/reference/scale-offset-image.ref.png b/test/reference/scale-offset-image.ref.png
new file mode 100644
index 0000000..ab1ced8
Binary files /dev/null and b/test/reference/scale-offset-image.ref.png differ
diff --git a/test/reference/scale-offset-similar.ref.png b/test/reference/scale-offset-similar.ref.png
new file mode 100644
index 0000000..8b3649a
Binary files /dev/null and b/test/reference/scale-offset-similar.ref.png differ
diff --git a/test/reference/scale-offset-xlib.ref.png b/test/reference/scale-offset-xlib.ref.png
new file mode 100644
index 0000000..dbb1225
Binary files /dev/null and b/test/reference/scale-offset-xlib.ref.png differ
diff --git a/test/reference/select-font-face.ref.png b/test/reference/select-font-face.ref.png
new file mode 100644
index 0000000..1334a9a
Binary files /dev/null and b/test/reference/select-font-face.ref.png differ
diff --git a/test/reference/self-copy.ref.png b/test/reference/self-copy.ref.png
new file mode 100644
index 0000000..d8221d8
Binary files /dev/null and b/test/reference/self-copy.ref.png differ
diff --git a/test/reference/shape-general-convex.ref.png b/test/reference/shape-general-convex.ref.png
new file mode 100644
index 0000000..2f648d5
Binary files /dev/null and b/test/reference/shape-general-convex.ref.png differ
diff --git a/test/reference/shape-sierpinski.ref.png b/test/reference/shape-sierpinski.ref.png
new file mode 100644
index 0000000..5d98367
Binary files /dev/null and b/test/reference/shape-sierpinski.ref.png differ
diff --git a/test/reference/show-glyphs-advance.ref.png b/test/reference/show-glyphs-advance.ref.png
new file mode 100644
index 0000000..e65ad05
Binary files /dev/null and b/test/reference/show-glyphs-advance.ref.png differ
diff --git a/test/reference/show-text-current-point.ref.png b/test/reference/show-text-current-point.ref.png
new file mode 100644
index 0000000..d60d4ac
Binary files /dev/null and b/test/reference/show-text-current-point.ref.png differ
diff --git a/test/reference/simple-edge.xfail.png b/test/reference/simple-edge.xfail.png
new file mode 100644
index 0000000..2daad97
Binary files /dev/null and b/test/reference/simple-edge.xfail.png differ
diff --git a/test/reference/skew-extreme.ref.png b/test/reference/skew-extreme.ref.png
new file mode 100644
index 0000000..69e026d
Binary files /dev/null and b/test/reference/skew-extreme.ref.png differ
diff --git a/test/reference/smask-fill.ref.png b/test/reference/smask-fill.ref.png
new file mode 100644
index 0000000..c7aff5a
Binary files /dev/null and b/test/reference/smask-fill.ref.png differ
diff --git a/test/reference/smask-image-mask.ref.png b/test/reference/smask-image-mask.ref.png
new file mode 100644
index 0000000..12063bd
Binary files /dev/null and b/test/reference/smask-image-mask.ref.png differ
diff --git a/test/reference/smask-mask.ref.png b/test/reference/smask-mask.ref.png
new file mode 100644
index 0000000..80329c2
Binary files /dev/null and b/test/reference/smask-mask.ref.png differ
diff --git a/test/reference/smask-paint.ref.png b/test/reference/smask-paint.ref.png
new file mode 100644
index 0000000..95af29a
Binary files /dev/null and b/test/reference/smask-paint.ref.png differ
diff --git a/test/reference/smask-stroke.ref.png b/test/reference/smask-stroke.ref.png
new file mode 100644
index 0000000..5d8c799
Binary files /dev/null and b/test/reference/smask-stroke.ref.png differ
diff --git a/test/reference/smask-text.ref.png b/test/reference/smask-text.ref.png
new file mode 100644
index 0000000..66ef289
Binary files /dev/null and b/test/reference/smask-text.ref.png differ
diff --git a/test/reference/smask.ref.png b/test/reference/smask.ref.png
new file mode 100644
index 0000000..d49e8f5
Binary files /dev/null and b/test/reference/smask.ref.png differ
diff --git a/test/reference/spline-decomposition.ref.png b/test/reference/spline-decomposition.ref.png
new file mode 100644
index 0000000..356a3a5
Binary files /dev/null and b/test/reference/spline-decomposition.ref.png differ
diff --git a/test/reference/stride-12-xlib.ref.png b/test/reference/stride-12-xlib.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/stride-12-xlib.ref.png differ
diff --git a/test/reference/stroke-clipped.ref.png b/test/reference/stroke-clipped.ref.png
new file mode 100644
index 0000000..fbe5788
Binary files /dev/null and b/test/reference/stroke-clipped.ref.png differ
diff --git a/test/reference/stroke-image.ref.png b/test/reference/stroke-image.ref.png
new file mode 100644
index 0000000..f126afe
Binary files /dev/null and b/test/reference/stroke-image.ref.png differ
diff --git a/test/reference/stroke-pattern.ref.png b/test/reference/stroke-pattern.ref.png
new file mode 100644
index 0000000..e299c58
Binary files /dev/null and b/test/reference/stroke-pattern.ref.png differ
diff --git a/test/reference/stroke-xlib.ref.png b/test/reference/stroke-xlib.ref.png
new file mode 100644
index 0000000..75737d5
Binary files /dev/null and b/test/reference/stroke-xlib.ref.png differ
diff --git a/test/reference/subsurface-scale.ref.png b/test/reference/subsurface-scale.ref.png
new file mode 100644
index 0000000..69bb0fb
Binary files /dev/null and b/test/reference/subsurface-scale.ref.png differ
diff --git a/test/reference/subsurface.ref.png b/test/reference/subsurface.ref.png
new file mode 100644
index 0000000..feeb5dc
Binary files /dev/null and b/test/reference/subsurface.ref.png differ
diff --git a/test/reference/surface-pattern-operator.argb32.ref.png b/test/reference/surface-pattern-operator.argb32.ref.png
index 2edbb1c..6757371 100644
Binary files a/test/reference/surface-pattern-operator.argb32.ref.png and b/test/reference/surface-pattern-operator.argb32.ref.png differ
diff --git a/test/reference/surface-pattern-operator.rgb24.ref.png b/test/reference/surface-pattern-operator.rgb24.ref.png
index 6672725..aee0959 100644
Binary files a/test/reference/surface-pattern-operator.rgb24.ref.png and b/test/reference/surface-pattern-operator.rgb24.ref.png differ
diff --git a/test/reference/surface-pattern-scale-down.ref.png b/test/reference/surface-pattern-scale-down.ref.png
new file mode 100644
index 0000000..8bb58a2
Binary files /dev/null and b/test/reference/surface-pattern-scale-down.ref.png differ
diff --git a/test/reference/surface-pattern-scale-up.ref.png b/test/reference/surface-pattern-scale-up.ref.png
new file mode 100644
index 0000000..e8d84e2
Binary files /dev/null and b/test/reference/surface-pattern-scale-up.ref.png differ
diff --git a/test/reference/surface-pattern.ref.png b/test/reference/surface-pattern.ref.png
new file mode 100644
index 0000000..079ebfb
Binary files /dev/null and b/test/reference/surface-pattern.ref.png differ
diff --git a/test/reference/text-antialias-gray.ref.png b/test/reference/text-antialias-gray.ref.png
new file mode 100644
index 0000000..06b805e
Binary files /dev/null and b/test/reference/text-antialias-gray.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-bgr.ref.png b/test/reference/text-antialias-subpixel-bgr.ref.png
new file mode 100644
index 0000000..c362182
Binary files /dev/null and b/test/reference/text-antialias-subpixel-bgr.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-rgb.ref.png b/test/reference/text-antialias-subpixel-rgb.ref.png
new file mode 100644
index 0000000..0cbf3f1
Binary files /dev/null and b/test/reference/text-antialias-subpixel-rgb.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vbgr.ref.png b/test/reference/text-antialias-subpixel-vbgr.ref.png
new file mode 100644
index 0000000..7c89df9
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vbgr.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vrgb.ref.png b/test/reference/text-antialias-subpixel-vrgb.ref.png
new file mode 100644
index 0000000..103c7e4
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vrgb.ref.png differ
diff --git a/test/reference/text-antialias-subpixel.ref.png b/test/reference/text-antialias-subpixel.ref.png
new file mode 100644
index 0000000..0cbf3f1
Binary files /dev/null and b/test/reference/text-antialias-subpixel.ref.png differ
diff --git a/test/reference/text-glyph-range.ref.png b/test/reference/text-glyph-range.ref.png
new file mode 100644
index 0000000..648fef5
Binary files /dev/null and b/test/reference/text-glyph-range.ref.png differ
diff --git a/test/reference/text-rotate.ref.png b/test/reference/text-rotate.ref.png
new file mode 100644
index 0000000..432de31
Binary files /dev/null and b/test/reference/text-rotate.ref.png differ
diff --git a/test/reference/tiger.ref.png b/test/reference/tiger.ref.png
new file mode 100644
index 0000000..b8b2175
Binary files /dev/null and b/test/reference/tiger.ref.png differ
diff --git a/test/reference/tighten-bounds.argb32.ref.png b/test/reference/tighten-bounds.argb32.ref.png
new file mode 100644
index 0000000..042038c
Binary files /dev/null and b/test/reference/tighten-bounds.argb32.ref.png differ
diff --git a/test/reference/tighten-bounds.ref.png b/test/reference/tighten-bounds.ref.png
deleted file mode 100644
index 28bbecc..0000000
Binary files a/test/reference/tighten-bounds.ref.png and /dev/null differ
diff --git a/test/reference/tighten-bounds.rgb24.ref.png b/test/reference/tighten-bounds.rgb24.ref.png
new file mode 100644
index 0000000..2815881
Binary files /dev/null and b/test/reference/tighten-bounds.rgb24.ref.png differ
diff --git a/test/reference/transforms.ref.png b/test/reference/transforms.ref.png
new file mode 100644
index 0000000..390bad4
Binary files /dev/null and b/test/reference/transforms.ref.png differ
diff --git a/test/reference/trap-clip.argb32.ref.png b/test/reference/trap-clip.argb32.ref.png
index aa6bce3..08e6c68 100644
Binary files a/test/reference/trap-clip.argb32.ref.png and b/test/reference/trap-clip.argb32.ref.png differ
diff --git a/test/reference/trap-clip.rgb24.ref.png b/test/reference/trap-clip.rgb24.ref.png
index 39399d6..9c51d62 100644
Binary files a/test/reference/trap-clip.rgb24.ref.png and b/test/reference/trap-clip.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-gray.ref.png b/test/reference/twin-antialias-gray.ref.png
new file mode 100644
index 0000000..602e005
Binary files /dev/null and b/test/reference/twin-antialias-gray.ref.png differ
diff --git a/test/reference/twin-antialias-mixed.ref.png b/test/reference/twin-antialias-mixed.ref.png
new file mode 100644
index 0000000..28e85a3
Binary files /dev/null and b/test/reference/twin-antialias-mixed.ref.png differ
diff --git a/test/reference/twin-antialias-none.ref.png b/test/reference/twin-antialias-none.ref.png
new file mode 100644
index 0000000..28ad303
Binary files /dev/null and b/test/reference/twin-antialias-none.ref.png differ
diff --git a/test/reference/twin-antialias-subpixel.ref.png b/test/reference/twin-antialias-subpixel.ref.png
new file mode 100644
index 0000000..602e005
Binary files /dev/null and b/test/reference/twin-antialias-subpixel.ref.png differ
diff --git a/test/reference/twin.ref.png b/test/reference/twin.ref.png
new file mode 100644
index 0000000..602e005
Binary files /dev/null and b/test/reference/twin.ref.png differ
diff --git a/test/reference/unbounded-operator.argb32.ref.png b/test/reference/unbounded-operator.argb32.ref.png
index 6857191..0b43388 100644
Binary files a/test/reference/unbounded-operator.argb32.ref.png and b/test/reference/unbounded-operator.argb32.ref.png differ
diff --git a/test/reference/unbounded-operator.rgb24.ref.png b/test/reference/unbounded-operator.rgb24.ref.png
index 0d34ba9..c9b5b34 100644
Binary files a/test/reference/unbounded-operator.rgb24.ref.png and b/test/reference/unbounded-operator.rgb24.ref.png differ
diff --git a/test/reference/user-font-proxy.ref.png b/test/reference/user-font-proxy.ref.png
new file mode 100644
index 0000000..aa4f255
Binary files /dev/null and b/test/reference/user-font-proxy.ref.png differ
diff --git a/test/reference/user-font-rescale.ref.png b/test/reference/user-font-rescale.ref.png
new file mode 100644
index 0000000..0939060
Binary files /dev/null and b/test/reference/user-font-rescale.ref.png differ
diff --git a/test/reference/user-font.ref.png b/test/reference/user-font.ref.png
new file mode 100644
index 0000000..4cff7e9
Binary files /dev/null and b/test/reference/user-font.ref.png differ
diff --git a/test/reference/world-map-fill.ref.png b/test/reference/world-map-fill.ref.png
new file mode 100644
index 0000000..23cec50
Binary files /dev/null and b/test/reference/world-map-fill.ref.png differ
diff --git a/test/reference/world-map-stroke.ref.png b/test/reference/world-map-stroke.ref.png
new file mode 100644
index 0000000..5c6e7d5
Binary files /dev/null and b/test/reference/world-map-stroke.ref.png differ
diff --git a/test/reference/world-map.ref.png b/test/reference/world-map.ref.png
new file mode 100644
index 0000000..1274367
Binary files /dev/null and b/test/reference/world-map.ref.png differ
commit 950f1e7103a3b4f3405fbb3ee2844ed24b902834
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Oct 2 07:52:05 2014 +0100

    tor: Enable analytic processing for starting rows
    
    If all the edges start at the very beginning of the whole row, we can
    merge them and include check for intersections/endings during the row.
    This allows us to enable fast analytic processing for even the very
    first row on pixel aligned vertices.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/cairo-tor-scan-converter.c b/src/cairo-tor-scan-converter.c
index d1aff25..4adcafb 100644
--- a/src/cairo-tor-scan-converter.c
+++ b/src/cairo-tor-scan-converter.c
@@ -1167,8 +1167,8 @@ can_do_full_row (struct active_list *active)
 
 	if (e->dy) {
 	    struct quorem x = e->x;
-	    x.quo += e->dxdy_full.quo;
-	    x.rem += e->dxdy_full.rem;
+	    x.quo += e->dxdy_full.quo - e->dxdy.quo/2;
+	    x.rem += e->dxdy_full.rem - e->dxdy.rem/2;
 	    if (x.rem < 0) {
 		x.quo--;
 		x.rem += e->dy;
@@ -1198,7 +1198,7 @@ active_list_merge_edges_from_bucket(struct active_list *active,
     active->head.next = merge_unsorted_edges (active->head.next, edges);
 }
 
-inline static void
+inline static int
 polygon_fill_buckets (struct active_list *active,
 		      struct edge *edge,
 		      int y,
@@ -1206,6 +1206,7 @@ polygon_fill_buckets (struct active_list *active,
 {
     grid_scaled_y_t min_height = active->min_height;
     int is_vertical = active->is_vertical;
+    int max_suby = 0;
 
     while (edge) {
 	struct edge *next = edge->next;
@@ -1219,10 +1220,14 @@ polygon_fill_buckets (struct active_list *active,
 	    min_height = edge->height_left;
 	is_vertical &= edge->dy == 0;
 	edge = next;
+	if (suby > max_suby)
+		max_suby = suby;
     }
 
     active->is_vertical = is_vertical;
     active->min_height = min_height;
+
+    return max_suby;
 }
 
 static void step (struct edge *edge)
@@ -1729,7 +1734,15 @@ glitter_scan_converter_render(glitter_scan_converter_t *converter,
 
 	/* Determine if we can ignore this row or use the full pixel
 	 * stepper. */
-	if (! polygon->y_buckets[i]) {
+	if (polygon_fill_buckets (active,
+				  polygon->y_buckets[i],
+				  (i+ymin_i)*GRID_Y,
+				  buckets) == 0) {
+	    if (buckets[0]) {
+		active_list_merge_edges_from_bucket (active, buckets[0]);
+		buckets[0] = NULL;
+	    }
+
 	    if (active->head.next == &active->tail) {
 		active->min_height = INT_MAX;
 		active->is_vertical = 1;
@@ -1759,18 +1772,12 @@ glitter_scan_converter_render(glitter_scan_converter_t *converter,
 	} else {
 	    int sub;
 
-	    polygon_fill_buckets (active,
-				  polygon->y_buckets[i],
-				  (i+ymin_i)*GRID_Y,
-				  buckets);
-
 	    /* Subsample this row. */
 	    for (sub = 0; sub < GRID_Y; sub++) {
 		if (buckets[sub]) {
 		    active_list_merge_edges_from_bucket (active, buckets[sub]);
 		    buckets[sub] = NULL;
 		}
-
 		sub_row (active, coverages, winding_mask);
 	    }
 	}
commit 1a32ce83e4c1f3ca22a3f137b0126003a0e3d6e7
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Oct 1 12:59:29 2014 +0100

    tor: Perform analytic coverage over the pixel not sample points
    
    We use two different methods within tor to compute the coverage.
    The first is that we iterate over every sample point within the pixel
    and see if it is covered. The second is that we look at a whole pixel
    and analytically compute the coverage inside (if we have no
    intersections within that row).
    
    One side effect of
    
    commit 03c3d4b7c159a3004071522bac2461e553fec211
    Author: Chris Wilson <chris at chris-wilson.co.uk>
    Date:   Tue Sep 30 08:44:43 2014 +0100
    
        tor: Fix loss of precision from projection onto sample grid
    
    was to compute our X coordinates for the sample locations (offset by
    half a subrow) and that in order to compute the analytical pixel
    coverage correctly, we therefore need to backstep by half the subrow to
    the pixel boundary.
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=84396
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/cairo-tor-scan-converter.c b/src/cairo-tor-scan-converter.c
index 1c89798..d1aff25 100644
--- a/src/cairo-tor-scan-converter.c
+++ b/src/cairo-tor-scan-converter.c
@@ -761,7 +761,6 @@ inline static void full_step (struct edge *e)
 	++e->x.quo;
 	e->x.rem -= e->dy;
     }
-    assert (e->x.rem >= 0 && e->x.rem < e->dy);
 
     e->cell = e->x.quo + (e->x.rem >= e->dy/2);
 }
@@ -789,12 +788,41 @@ cell_list_render_edge(struct cell_list *cells,
 		      struct edge *edge,
 		      int sign)
 {
+    struct quorem x1, x2;
     grid_scaled_x_t fx1, fx2;
     int ix1, ix2;
 
-    GRID_X_TO_INT_FRAC(edge->cell, ix1, fx1);
+    x1 = edge->x;
     full_step (edge);
-    GRID_X_TO_INT_FRAC(edge->cell, ix2, fx2);
+    x2 = edge->x;
+
+    /* Step back from the sample location (half-subrow) to the pixel origin */
+    if (edge->dy) {
+	x1.quo -= edge->dxdy.quo / 2;
+	x1.rem -= edge->dxdy.rem / 2;
+	if (x1.rem < 0) {
+	    --x1.quo;
+	    x1.rem += edge->dy;
+	} else if (x1.rem >= edge->dy) {
+	    ++x1.quo;
+	    x1.rem -= edge->dy;
+	}
+
+	x2.quo -= edge->dxdy.quo / 2;
+	x2.rem -= edge->dxdy.rem / 2;
+	if (x2.rem < 0) {
+	    --x2.quo;
+	    x2.rem += edge->dy;
+	} else if (x2.rem >= edge->dy) {
+	    ++x2.quo;
+	    x2.rem -= edge->dy;
+	}
+    }
+
+    GRID_X_TO_INT_FRAC(x1.quo, ix1, fx1);
+    GRID_X_TO_INT_FRAC(x2.quo, ix2, fx2);
+
+    cell_list_maybe_rewind(cells, MIN(ix1, ix2));
 
     /* Edge is entirely within a column? */
     if (ix1 == ix2) {
@@ -808,6 +836,7 @@ cell_list_render_edge(struct cell_list *cells,
 
     /* Orient the edge left-to-right. */
     if (ix2 < ix1) {
+	struct quorem tx;
 	int t;
 
 	t = ix1;
@@ -817,6 +846,10 @@ cell_list_render_edge(struct cell_list *cells,
 	t = fx1;
 	fx1 = fx2;
 	fx2 = t;
+
+	tx = x1;
+	x1 = x2;
+	x2 = tx;
     }
 
     /* Add coverage for all pixels [ix1,ix2] on this row crossed
@@ -824,14 +857,17 @@ cell_list_render_edge(struct cell_list *cells,
     {
 	struct cell_pair pair;
 	struct quorem y;
-	int32_t dx;
+	int64_t tmp, dx;
 	int y_last;
 
-	dx = (ix2 - ix1) * GRID_X + (fx2 - fx1);
-	assert (dx > 0);
+	dx = (x2.quo - x1.quo) * edge->dy + (x2.rem - x1.rem);
 
-	y.quo = (GRID_X - fx1) * GRID_Y / dx;
-	y.rem = (GRID_X - fx1) * GRID_Y % dx;
+	tmp = (ix1 + 1) * GRID_X * edge->dy;
+	tmp -= x1.quo * edge->dy + x1.rem;
+	tmp *= GRID_Y;
+
+	y.quo = tmp / dx;
+	y.rem = tmp % dx;
 
 	/* When rendering a previous edge on the active list we may
 	 * advance the cell list cursor past the leftmost pixel of the
@@ -847,11 +883,7 @@ cell_list_render_edge(struct cell_list *cells,
 	 *
 	 * The left edge touches cells past the starting cell of the
 	 * right edge.  Fortunately such cases are rare.
-	 *
-	 * The rewinding is never necessary if the current edge stays
-	 * within a single column because we've checked before calling
-	 * this function that the active list order won't change. */
-	cell_list_maybe_rewind(cells, ix1);
+	 */
 
 	pair = cell_list_find_pair(cells, ix1, ix1+1);
 	pair.cell1->uncovered_area += sign*y.quo*(GRID_X + fx1);
@@ -862,8 +894,8 @@ cell_list_render_edge(struct cell_list *cells,
 	    struct cell *cell = pair.cell2;
 	    struct quorem dydx_full;
 
-	    dydx_full.quo = GRID_Y * GRID_X / dx;
-	    dydx_full.rem = GRID_Y * GRID_X % dx;
+	    dydx_full.quo = GRID_Y * GRID_X * edge->dy / dx;
+	    dydx_full.rem = GRID_Y * GRID_X * edge->dy % dx;
 
 	    ++ix1;
 	    do {
@@ -1207,7 +1239,6 @@ static void step (struct edge *edge)
 	++edge->x.quo;
 	edge->x.rem -= edge->dy;
     }
-    assert (edge->x.rem >= 0 && edge->x.rem < edge->dy);
 
     edge->cell = edge->x.quo + (edge->x.rem >= edge->dy/2);
 }
@@ -1453,7 +1484,8 @@ polygon_add_edge (struct polygon *polygon,
 
     if (p2->x == p1->x) {
 	e->cell = p1->x;
-	e->x.quo = e->x.rem = 0;
+	e->x.quo = p1->x;
+	e->x.rem = 0;
 	e->dxdy.quo = e->dxdy.rem = 0;
 	e->dxdy_full.quo = e->dxdy_full.rem = 0;
 	e->dy = 0;
@@ -1487,7 +1519,6 @@ polygon_add_edge (struct polygon *polygon,
 		e->x.quo++;
 		e->x.rem -= Ey;
 	}
-	assert (e->x.rem >= 0 && e->x.rem < Ey);
 
 	if (e->height_left >= GRID_Y) {
 	    tmp = Ex * (2 * GRID_Y << GLITTER_INPUT_BITS);
commit 79c8b14b9fd8716d47fab4436b34d26b0135e9d7
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Oct 2 00:20:52 2014 +0100

    test/simple: Tighten sanity checks in reference image generator
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/test/simple.c b/test/simple.c
index 674a0de..7ec8a9a 100644
--- a/test/simple.c
+++ b/test/simple.c
@@ -54,8 +54,6 @@ static int pfrac (int v)
     return v & ((1 << CAIRO_FIXED_FRAC_BITS) - 1);
 }
 
-#define BIAS 1024
-
 static void add_edge (struct coverage *coverage,
 		      int x1, int y1, int x2, int y2,
 		      int sign)
@@ -98,9 +96,11 @@ static void add_edge (struct coverage *coverage,
 	int x = xq + (xr >= dy/2);
 
 	if (x < 256*coverage->width) {
-		int i = pfloor (y) * coverage->width + pfloor (x);
-		if (x > 0)
+		int i = pfloor (y) * coverage->width;
+		if (x > 0) {
+			i += pfloor (x);
 			coverage->cells[i].uncovered_area += sign * pfrac(x);
+		}
 		coverage->cells[i].covered_height += sign;
 	}
 


More information about the cairo-commit mailing list