[cairo-commit] 10 commits - boilerplate/cairo-boilerplate-xlib.c src/cairo-mask-compositor.c src/cairo-traps-compositor.c src/cairo-xlib-display.c src/cairo-xlib.h src/cairo-xlib-render-compositor.c test/get-xrender-format.c test/reference test/xlib-surface.c

Chris Wilson ickle at kemper.freedesktop.org
Wed Feb 22 05:20:33 PST 2012


 boilerplate/cairo-boilerplate-xlib.c                                         |  129 ++++---
 dev/null                                                                     |binary
 src/cairo-mask-compositor.c                                                  |   52 ++-
 src/cairo-traps-compositor.c                                                 |  165 +++++++---
 src/cairo-xlib-display.c                                                     |   57 +++
 src/cairo-xlib-render-compositor.c                                           |    1 
 src/cairo-xlib.h                                                             |    5 
 test/get-xrender-format.c                                                    |   10 
 test/reference/a1-bug.mask.argb32.ref.png                                    |binary
 test/reference/a1-bug.mask.rgb24.ref.png                                     |binary
 test/reference/a1-clip-fill-equal.mask.argb32.ref.png                        |binary
 test/reference/a1-clip-fill-equal.mask.rgb24.ref.png                         |binary
 test/reference/a1-clip-fill-rule.mask.argb32.ref.png                         |binary
 test/reference/a1-clip-fill-rule.mask.rgb24.ref.png                          |binary
 test/reference/a1-clip-fill.mask.argb32.ref.png                              |binary
 test/reference/a1-clip-fill.mask.rgb24.ref.png                               |binary
 test/reference/a1-clip-paint.mask.argb32.ref.png                             |binary
 test/reference/a1-clip-paint.mask.rgb24.ref.png                              |binary
 test/reference/a1-clip-stroke.mask.argb32.ref.png                            |binary
 test/reference/a1-clip-stroke.mask.rgb24.ref.png                             |binary
 test/reference/a1-fill.base.argb32.ref.png                                   |binary
 test/reference/a1-fill.base.rgb24.ref.png                                    |binary
 test/reference/a1-fill.mask.argb32.ref.png                                   |binary
 test/reference/a1-fill.mask.rgb24.ref.png                                    |binary
 test/reference/a1-fill.traps.argb32.ref.png                                  |binary
 test/reference/a1-fill.traps.rgb24.ref.png                                   |binary
 test/reference/a1-image-sample.mask.argb32.ref.png                           |binary
 test/reference/a1-image-sample.mask.rgb24.ref.png                            |binary
 test/reference/a1-line-width.mask.argb32.ref.png                             |binary
 test/reference/a1-line-width.mask.rgb24.ref.png                              |binary
 test/reference/a1-mask-sample.mask.argb32.ref.png                            |binary
 test/reference/a1-mask-sample.mask.rgb24.ref.png                             |binary
 test/reference/a1-mask.mask.argb32.ref.png                                   |binary
 test/reference/a1-mask.mask.rgb24.ref.png                                    |binary
 test/reference/a1-rasterisation-rectangles.mask.argb32.ref.png               |binary
 test/reference/a1-rasterisation-rectangles.mask.rgb24.ref.png                |binary
 test/reference/a1-rasterisation-triangles.mask.argb32.ref.png                |binary
 test/reference/a1-rasterisation-triangles.mask.rgb24.ref.png                 |binary
 test/reference/a1-rectilinear-grid.mask.argb32.ref.png                       |binary
 test/reference/a1-rectilinear-grid.mask.rgb24.ref.png                        |binary
 test/reference/a1-sample.mask.argb32.ref.png                                 |binary
 test/reference/a1-sample.mask.rgb24.ref.png                                  |binary
 test/reference/a1-tiger.mask.argb32.ref.png                                  |binary
 test/reference/a1-tiger.mask.rgb24.ref.png                                   |binary
 test/reference/a1-traps-sample.mask.argb32.ref.png                           |binary
 test/reference/a1-traps-sample.mask.rgb24.ref.png                            |binary
 test/reference/a8-clear.mask.argb32.ref.png                                  |binary
 test/reference/a8-clear.mask.rgb24.ref.png                                   |binary
 test/reference/a8-mask.mask.argb32.ref.png                                   |binary
 test/reference/a8-mask.mask.rgb24.ref.png                                    |binary
 test/reference/aliasing.mask.argb32.ref.png                                  |binary
 test/reference/aliasing.mask.rgb24.ref.png                                   |binary
 test/reference/alpha-similar.mask.argb32.ref.png                             |binary
 test/reference/alpha-similar.mask.rgb24.ref.png                              |binary
 test/reference/api-special-cases.mask.argb32.ref.png                         |binary
 test/reference/api-special-cases.mask.rgb24.ref.png                          |binary
 test/reference/arc-direction.base.argb32.ref.png                             |binary
 test/reference/arc-direction.base.rgb24.ref.png                              |binary
 test/reference/arc-direction.mask.argb32.ref.png                             |binary
 test/reference/arc-direction.mask.rgb24.ref.png                              |binary
 test/reference/arc-direction.traps.argb32.ref.png                            |binary
 test/reference/arc-direction.traps.rgb24.ref.png                             |binary
 test/reference/arc-infinite-loop.mask.argb32.ref.png                         |binary
 test/reference/arc-infinite-loop.mask.rgb24.ref.png                          |binary
 test/reference/arc-looping-dash.mask.argb32.ref.png                          |binary
 test/reference/arc-looping-dash.mask.rgb24.ref.png                           |binary
 test/reference/big-empty-triangle.mask.argb32.ref.png                        |binary
 test/reference/big-empty-triangle.mask.rgb24.ref.png                         |binary
 test/reference/big-line.mask.argb32.ref.png                                  |binary
 test/reference/big-line.mask.rgb24.ref.png                                   |binary
 test/reference/big-little-box.mask.argb32.ref.png                            |binary
 test/reference/big-little-box.mask.rgb24.ref.png                             |binary
 test/reference/big-little-triangle.mask.argb32.ref.png                       |binary
 test/reference/big-little-triangle.mask.rgb24.ref.png                        |binary
 test/reference/big-trap.mask.argb32.ref.png                                  |binary
 test/reference/big-trap.mask.rgb24.ref.png                                   |binary
 test/reference/bilevel-image.mask.argb32.ref.png                             |binary
 test/reference/bilevel-image.mask.rgb24.ref.png                              |binary
 test/reference/bitmap-font.mask.argb32.ref.png                               |binary
 test/reference/bitmap-font.mask.rgb24.ref.png                                |binary
 test/reference/bug-40410.mask.argb32.ref.png                                 |binary
 test/reference/bug-40410.mask.rgb24.ref.png                                  |binary
 test/reference/bug-bo-rectangular.mask.argb32.ref.png                        |binary
 test/reference/bug-bo-rectangular.mask.rgb24.ref.png                         |binary
 test/reference/bug-bo-ricotz.base.argb32.ref.png                             |binary
 test/reference/bug-bo-ricotz.base.rgb24.ref.png                              |binary
 test/reference/bug-bo-ricotz.mask.argb32.ref.png                             |binary
 test/reference/bug-bo-ricotz.mask.rgb24.ref.png                              |binary
 test/reference/bug-bo-ricotz.traps.argb32.ref.png                            |binary
 test/reference/bug-bo-ricotz.traps.rgb24.ref.png                             |binary
 test/reference/bug-extents.mask.argb32.ref.png                               |binary
 test/reference/bug-extents.mask.rgb24.ref.png                                |binary
 test/reference/bug-seams.mask.argb32.ref.png                                 |binary
 test/reference/bug-seams.mask.rgb24.ref.png                                  |binary
 test/reference/caps-joins-alpha.mask.argb32.ref.png                          |binary
 test/reference/caps-joins-alpha.mask.rgb24.ref.png                           |binary
 test/reference/caps-joins-curve.mask.argb32.ref.png                          |binary
 test/reference/caps-joins-curve.mask.rgb24.ref.png                           |binary
 test/reference/caps-joins.mask.argb32.ref.png                                |binary
 test/reference/caps-joins.mask.rgb24.ref.png                                 |binary
 test/reference/caps-sub-paths.mask.argb32.ref.png                            |binary
 test/reference/caps-sub-paths.mask.rgb24.ref.png                             |binary
 test/reference/caps-tails-curve.mask.argb32.ref.png                          |binary
 test/reference/caps-tails-curve.mask.rgb24.ref.png                           |binary
 test/reference/caps.mask.argb32.ref.png                                      |binary
 test/reference/caps.mask.rgb24.ref.png                                       |binary
 test/reference/checkerboard.mask.argb32.ref.png                              |binary
 test/reference/checkerboard.mask.rgb24.ref.png                               |binary
 test/reference/clear-source.base.argb32.ref.png                              |binary
 test/reference/clear-source.base.rgb24.ref.png                               |binary
 test/reference/clear-source.mask.argb32.ref.png                              |binary
 test/reference/clear-source.mask.rgb24.ref.png                               |binary
 test/reference/clear-source.traps.argb32.ref.png                             |binary
 test/reference/clear-source.traps.rgb24.ref.png                              |binary
 test/reference/clear.mask.argb32.ref.png                                     |binary
 test/reference/clear.mask.rgb24.ref.png                                      |binary
 test/reference/clip-all.mask.argb32.ref.png                                  |binary
 test/reference/clip-all.mask.rgb24.ref.png                                   |binary
 test/reference/clip-complex-shape-eo-aa.mask.argb32.ref.png                  |binary
 test/reference/clip-complex-shape-eo-aa.mask.rgb24.ref.png                   |binary
 test/reference/clip-complex-shape-eo-mono.mask.argb32.ref.png                |binary
 test/reference/clip-complex-shape-eo-mono.mask.rgb24.ref.png                 |binary
 test/reference/clip-contexts.mask.argb32.ref.png                             |binary
 test/reference/clip-contexts.mask.rgb24.ref.png                              |binary
 test/reference/clip-device-offset.mask.argb32.ref.png                        |binary
 test/reference/clip-device-offset.mask.rgb24.ref.png                         |binary
 test/reference/clip-disjoint-hatching.mask.argb32.ref.png                    |binary
 test/reference/clip-disjoint-hatching.mask.rgb24.ref.png                     |binary
 test/reference/clip-disjoint.mask.argb32.ref.png                             |binary
 test/reference/clip-disjoint.mask.rgb24.ref.png                              |binary
 test/reference/clip-empty-group.mask.argb32.ref.png                          |binary
 test/reference/clip-empty-group.mask.rgb24.ref.png                           |binary
 test/reference/clip-empty-save.mask.argb32.ref.png                           |binary
 test/reference/clip-empty-save.mask.rgb24.ref.png                            |binary
 test/reference/clip-empty.mask.argb32.ref.png                                |binary
 test/reference/clip-empty.mask.rgb24.ref.png                                 |binary
 test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png                    |binary
 test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png                     |binary
 test/reference/clip-fill-no-op.mask.argb32.ref.png                           |binary
 test/reference/clip-fill-no-op.mask.rgb24.ref.png                            |binary
 test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png                    |binary
 test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png                     |binary
 test/reference/clip-fill-rule-pixel-aligned.mask.argb32.ref.png              |binary
 test/reference/clip-fill-rule-pixel-aligned.mask.rgb24.ref.png               |binary
 test/reference/clip-fill-rule.mask.argb32.ref.png                            |binary
 test/reference/clip-fill-rule.mask.rgb24.ref.png                             |binary
 test/reference/clip-fill.mask.argb32.ref.png                                 |binary
 test/reference/clip-fill.mask.rgb24.ref.png                                  |binary
 test/reference/clip-group-shapes-aligned-rectangles.mask.argb32.ref.png      |binary
 test/reference/clip-group-shapes-aligned-rectangles.mask.rgb24.ref.png       |binary
 test/reference/clip-group-shapes-circles.mask.argb32.ref.png                 |binary
 test/reference/clip-group-shapes-circles.mask.rgb24.ref.png                  |binary
 test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png    |binary
 test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png     |binary
 test/reference/clip-image.mask.argb32.ref.png                                |binary
 test/reference/clip-image.mask.rgb24.ref.png                                 |binary
 test/reference/clip-intersect.mask.argb32.ref.png                            |binary
 test/reference/clip-intersect.mask.rgb24.ref.png                             |binary
 test/reference/clip-mixed-antialias.mask.argb32.ref.png                      |binary
 test/reference/clip-mixed-antialias.mask.rgb24.ref.png                       |binary
 test/reference/clip-nesting.mask.argb32.ref.png                              |binary
 test/reference/clip-nesting.mask.rgb24.ref.png                               |binary
 test/reference/clip-operator.base.argb32.ref.png                             |binary
 test/reference/clip-operator.base.rgb24.ref.png                              |binary
 test/reference/clip-operator.mask.argb32.ref.png                             |binary
 test/reference/clip-operator.mask.rgb24.ref.png                              |binary
 test/reference/clip-polygons.base.argb32.ref.png                             |binary
 test/reference/clip-polygons.base.rgb24.ref.png                              |binary
 test/reference/clip-polygons.mask.argb32.ref.png                             |binary
 test/reference/clip-polygons.mask.rgb24.ref.png                              |binary
 test/reference/clip-polygons.traps.argb32.ref.png                            |binary
 test/reference/clip-polygons.traps.rgb24.ref.png                             |binary
 test/reference/clip-push-group.mask.argb32.ref.png                           |binary
 test/reference/clip-push-group.mask.rgb24.ref.png                            |binary
 test/reference/clip-rectilinear.base.argb32.ref.png                          |binary
 test/reference/clip-rectilinear.base.rgb24.ref.png                           |binary
 test/reference/clip-rectilinear.mask.argb32.ref.png                          |binary
 test/reference/clip-rectilinear.mask.rgb24.ref.png                           |binary
 test/reference/clip-rectilinear.traps.argb32.ref.png                         |binary
 test/reference/clip-rectilinear.traps.rgb24.ref.png                          |binary
 test/reference/clip-rotate-image-surface-paint.mask.argb32.ref.png           |binary
 test/reference/clip-rotate-image-surface-paint.mask.rgb24.ref.png            |binary
 test/reference/clip-shape.mask.argb32.ref.png                                |binary
 test/reference/clip-shape.mask.rgb24.ref.png                                 |binary
 test/reference/clip-stroke-no-op.mask.argb32.ref.png                         |binary
 test/reference/clip-stroke-no-op.mask.rgb24.ref.png                          |binary
 test/reference/clip-stroke-unbounded.mask.argb32.ref.png                     |binary
 test/reference/clip-stroke-unbounded.mask.rgb24.ref.png                      |binary
 test/reference/clip-stroke.mask.argb32.ref.png                               |binary
 test/reference/clip-stroke.mask.rgb24.ref.png                                |binary
 test/reference/clip-text.base.argb32.ref.png                                 |binary
 test/reference/clip-text.base.rgb24.ref.png                                  |binary
 test/reference/clip-text.mask.argb32.ref.png                                 |binary
 test/reference/clip-text.mask.rgb24.ref.png                                  |binary
 test/reference/clip-twice-rectangle.mask.argb32.ref.png                      |binary
 test/reference/clip-twice-rectangle.mask.rgb24.ref.png                       |binary
 test/reference/clip-twice.mask.argb32.ref.png                                |binary
 test/reference/clip-twice.mask.rgb24.ref.png                                 |binary
 test/reference/clip-unbounded.mask.argb32.ref.png                            |binary
 test/reference/clip-unbounded.mask.rgb24.ref.png                             |binary
 test/reference/clipped-group.mask.argb32.ref.png                             |binary
 test/reference/clipped-group.mask.rgb24.ref.png                              |binary
 test/reference/clipped-surface.mask.argb32.ref.png                           |binary
 test/reference/clipped-surface.mask.rgb24.ref.png                            |binary
 test/reference/close-path-current-point.mask.argb32.ref.png                  |binary
 test/reference/close-path-current-point.mask.rgb24.ref.png                   |binary
 test/reference/close-path.mask.argb32.ref.png                                |binary
 test/reference/close-path.mask.rgb24.ref.png                                 |binary
 test/reference/composite-integer-translate-over-repeat.mask.argb32.ref.png   |binary
 test/reference/composite-integer-translate-over-repeat.mask.rgb24.ref.png    |binary
 test/reference/composite-integer-translate-over.mask.argb32.ref.png          |binary
 test/reference/composite-integer-translate-over.mask.rgb24.ref.png           |binary
 test/reference/composite-integer-translate-source.mask.argb32.ref.png        |binary
 test/reference/composite-integer-translate-source.mask.rgb24.ref.png         |binary
 test/reference/copy-disjoint.base.argb32.ref.png                             |binary
 test/reference/copy-disjoint.base.rgb24.ref.png                              |binary
 test/reference/copy-disjoint.mask.argb32.ref.png                             |binary
 test/reference/copy-disjoint.mask.rgb24.ref.png                              |binary
 test/reference/copy-disjoint.traps.argb32.ref.png                            |binary
 test/reference/copy-disjoint.traps.rgb24.ref.png                             |binary
 test/reference/copy-path.mask.argb32.ref.png                                 |binary
 test/reference/copy-path.mask.rgb24.ref.png                                  |binary
 test/reference/create-from-png-stream.mask.argb32.ref.png                    |binary
 test/reference/create-from-png-stream.mask.rgb24.ref.png                     |binary
 test/reference/create-from-png.mask.argb32.ref.png                           |binary
 test/reference/create-from-png.mask.rgb24.ref.png                            |binary
 test/reference/create-from-png.traps.argb32.ref.png                          |binary
 test/reference/create-from-png.traps.rgb24.ref.png                           |binary
 test/reference/culled-glyphs.base.argb32.ref.png                             |binary
 test/reference/culled-glyphs.base.rgb24.ref.png                              |binary
 test/reference/culled-glyphs.mask.argb32.ref.png                             |binary
 test/reference/culled-glyphs.mask.rgb24.ref.png                              |binary
 test/reference/culled-glyphs.traps.argb32.ref.png                            |binary
 test/reference/culled-glyphs.traps.rgb24.ref.png                             |binary
 test/reference/curve-to-as-line-to.mask.argb32.ref.png                       |binary
 test/reference/curve-to-as-line-to.mask.rgb24.ref.png                        |binary
 test/reference/dash-caps-joins.mask.argb32.ref.png                           |binary
 test/reference/dash-caps-joins.mask.rgb24.ref.png                            |binary
 test/reference/dash-curve.mask.argb32.ref.png                                |binary
 test/reference/dash-curve.mask.rgb24.ref.png                                 |binary
 test/reference/dash-infinite-loop.mask.argb32.ref.png                        |binary
 test/reference/dash-infinite-loop.mask.rgb24.ref.png                         |binary
 test/reference/dash-no-dash.mask.argb32.ref.png                              |binary
 test/reference/dash-no-dash.mask.rgb24.ref.png                               |binary
 test/reference/dash-offset-negative.mask.argb32.ref.png                      |binary
 test/reference/dash-offset-negative.mask.rgb24.ref.png                       |binary
 test/reference/dash-offset.mask.argb32.ref.png                               |binary
 test/reference/dash-offset.mask.rgb24.ref.png                                |binary
 test/reference/dash-scale.mask.argb32.ref.png                                |binary
 test/reference/dash-scale.mask.rgb24.ref.png                                 |binary
 test/reference/dash-state.mask.argb32.ref.png                                |binary
 test/reference/dash-state.mask.rgb24.ref.png                                 |binary
 test/reference/dash-zero-length.mask.argb32.ref.png                          |binary
 test/reference/dash-zero-length.mask.rgb24.ref.png                           |binary
 test/reference/degenerate-arc.mask.argb32.ref.png                            |binary
 test/reference/degenerate-arc.mask.rgb24.ref.png                             |binary
 test/reference/degenerate-arcs.mask.argb32.ref.png                           |binary
 test/reference/degenerate-arcs.mask.rgb24.ref.png                            |binary
 test/reference/degenerate-curve-to.mask.argb32.ref.png                       |binary
 test/reference/degenerate-curve-to.mask.rgb24.ref.png                        |binary
 test/reference/degenerate-dash.mask.argb32.ref.png                           |binary
 test/reference/degenerate-dash.mask.rgb24.ref.png                            |binary
 test/reference/degenerate-linear-gradient.mask.argb32.ref.png                |binary
 test/reference/degenerate-linear-gradient.mask.rgb24.ref.png                 |binary
 test/reference/degenerate-path.mask.argb32.ref.png                           |binary
 test/reference/degenerate-path.mask.rgb24.ref.png                            |binary
 test/reference/degenerate-pen.mask.argb32.ref.png                            |binary
 test/reference/degenerate-pen.mask.rgb24.ref.png                             |binary
 test/reference/degenerate-radial-gradient.mask.argb32.ref.png                |binary
 test/reference/degenerate-radial-gradient.mask.rgb24.ref.png                 |binary
 test/reference/degenerate-rel-curve-to.mask.argb32.ref.png                   |binary
 test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png                    |binary
 test/reference/device-offset-fractional.mask.argb32.ref.png                  |binary
 test/reference/device-offset-fractional.mask.rgb24.ref.png                   |binary
 test/reference/device-offset-positive.mask.argb32.ref.png                    |binary
 test/reference/device-offset-positive.mask.rgb24.ref.png                     |binary
 test/reference/device-offset-scale.mask.argb32.ref.png                       |binary
 test/reference/device-offset-scale.mask.rgb24.ref.png                        |binary
 test/reference/device-offset.mask.argb32.ref.png                             |binary
 test/reference/device-offset.mask.rgb24.ref.png                              |binary
 test/reference/drunkard-tails.mask.argb32.ref.png                            |binary
 test/reference/drunkard-tails.mask.rgb24.ref.png                             |binary
 test/reference/extend-pad-border.mask.argb32.ref.png                         |binary
 test/reference/extend-pad-border.mask.rgb24.ref.png                          |binary
 test/reference/extend-pad-similar.mask.argb32.ref.png                        |binary
 test/reference/extend-pad-similar.mask.rgb24.ref.png                         |binary
 test/reference/extend-pad.mask.argb32.ref.png                                |binary
 test/reference/extend-pad.mask.rgb24.ref.png                                 |binary
 test/reference/extend-reflect-similar.mask.argb32.ref.png                    |binary
 test/reference/extend-reflect-similar.mask.rgb24.ref.png                     |binary
 test/reference/extend-reflect.mask.argb32.ref.png                            |binary
 test/reference/extend-reflect.mask.rgb24.ref.png                             |binary
 test/reference/extend-repeat-similar.mask.argb32.ref.png                     |binary
 test/reference/extend-repeat-similar.mask.rgb24.ref.png                      |binary
 test/reference/extend-repeat.mask.argb32.ref.png                             |binary
 test/reference/extend-repeat.mask.rgb24.ref.png                              |binary
 test/reference/extended-blend-alpha-mask.mask.argb32.ref.png                 |binary
 test/reference/extended-blend-alpha-mask.mask.rgb24.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-mask.mask.argb32.ref.png                       |binary
 test/reference/extended-blend-mask.mask.rgb24.ref.png                        |binary
 test/reference/extended-blend-solid-alpha.mask.argb32.ref.png                |binary
 test/reference/extended-blend-solid-alpha.mask.rgb24.ref.png                 |binary
 test/reference/extended-blend-solid.mask.argb32.ref.png                      |binary
 test/reference/extended-blend-solid.mask.rgb24.ref.png                       |binary
 test/reference/extended-blend.mask.argb32.ref.png                            |binary
 test/reference/extended-blend.mask.rgb24.ref.png                             |binary
 test/reference/fallback.base.argb32.ref.png                                  |binary
 test/reference/fallback.base.rgb24.ref.png                                   |binary
 test/reference/fallback.mask.argb32.ref.png                                  |binary
 test/reference/fallback.mask.rgb24.ref.png                                   |binary
 test/reference/fallback.traps.argb32.ref.png                                 |binary
 test/reference/fallback.traps.rgb24.ref.png                                  |binary
 test/reference/fill-alpha-pattern.mask.argb32.ref.png                        |binary
 test/reference/fill-alpha-pattern.mask.rgb24.ref.png                         |binary
 test/reference/fill-alpha.mask.argb32.ref.png                                |binary
 test/reference/fill-alpha.mask.rgb24.ref.png                                 |binary
 test/reference/fill-and-stroke-alpha-add.mask.argb32.ref.png                 |binary
 test/reference/fill-and-stroke-alpha-add.mask.rgb24.ref.png                  |binary
 test/reference/fill-and-stroke-alpha.mask.argb32.ref.png                     |binary
 test/reference/fill-and-stroke-alpha.mask.rgb24.ref.png                      |binary
 test/reference/fill-and-stroke.mask.argb32.ref.png                           |binary
 test/reference/fill-and-stroke.mask.rgb24.ref.png                            |binary
 test/reference/fill-degenerate-sort-order.mask.argb32.ref.png                |binary
 test/reference/fill-degenerate-sort-order.mask.rgb24.ref.png                 |binary
 test/reference/fill-disjoint.base.argb32.ref.png                             |binary
 test/reference/fill-disjoint.base.rgb24.ref.png                              |binary
 test/reference/fill-disjoint.mask.argb32.ref.png                             |binary
 test/reference/fill-disjoint.mask.rgb24.ref.png                              |binary
 test/reference/fill-disjoint.traps.argb32.ref.png                            |binary
 test/reference/fill-disjoint.traps.rgb24.ref.png                             |binary
 test/reference/fill-empty.mask.argb32.ref.png                                |binary
 test/reference/fill-empty.mask.rgb24.ref.png                                 |binary
 test/reference/fill-image.base.argb32.ref.png                                |binary
 test/reference/fill-image.base.rgb24.ref.png                                 |binary
 test/reference/fill-image.mask.argb32.ref.png                                |binary
 test/reference/fill-image.mask.rgb24.ref.png                                 |binary
 test/reference/fill-image.traps.argb32.ref.png                               |binary
 test/reference/fill-image.traps.rgb24.ref.png                                |binary
 test/reference/fill-missed-stop.mask.argb32.ref.png                          |binary
 test/reference/fill-missed-stop.mask.rgb24.ref.png                           |binary
 test/reference/fill-rule.mask.argb32.ref.png                                 |binary
 test/reference/fill-rule.mask.rgb24.ref.png                                  |binary
 test/reference/filter-bilinear-extents.mask.argb32.ref.png                   |binary
 test/reference/filter-bilinear-extents.mask.rgb24.ref.png                    |binary
 test/reference/filter-nearest-offset.mask.argb32.ref.png                     |binary
 test/reference/filter-nearest-offset.mask.rgb24.ref.png                      |binary
 test/reference/filter-nearest-transformed.mask.argb32.ref.png                |binary
 test/reference/filter-nearest-transformed.mask.rgb24.ref.png                 |binary
 test/reference/finer-grained-fallbacks.mask.argb32.ref.png                   |binary
 test/reference/finer-grained-fallbacks.mask.rgb24.ref.png                    |binary
 test/reference/font-matrix-translation.base.argb32.ref.png                   |binary
 test/reference/font-matrix-translation.base.rgb24.ref.png                    |binary
 test/reference/font-matrix-translation.mask.argb32.ref.png                   |binary
 test/reference/font-matrix-translation.mask.rgb24.ref.png                    |binary
 test/reference/font-matrix-translation.traps.argb32.ref.png                  |binary
 test/reference/font-matrix-translation.traps.rgb24.ref.png                   |binary
 test/reference/ft-show-glyphs-positioning.base.argb32.ref.png                |binary
 test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png                 |binary
 test/reference/ft-show-glyphs-positioning.mask.argb32.ref.png                |binary
 test/reference/ft-show-glyphs-positioning.mask.rgb24.ref.png                 |binary
 test/reference/ft-show-glyphs-positioning.traps.argb32.ref.png               |binary
 test/reference/ft-show-glyphs-positioning.traps.rgb24.ref.png                |binary
 test/reference/ft-show-glyphs-table.base.argb32.ref.png                      |binary
 test/reference/ft-show-glyphs-table.base.rgb24.ref.png                       |binary
 test/reference/ft-show-glyphs-table.mask.argb32.ref.png                      |binary
 test/reference/ft-show-glyphs-table.mask.rgb24.ref.png                       |binary
 test/reference/ft-show-glyphs-table.traps.argb32.ref.png                     |binary
 test/reference/ft-show-glyphs-table.traps.rgb24.ref.png                      |binary
 test/reference/ft-text-antialias-none.mask.argb32.ref.png                    |binary
 test/reference/ft-text-antialias-none.mask.rgb24.ref.png                     |binary
 test/reference/ft-text-vertical-layout-type1.mask.argb32.ref.png             |binary
 test/reference/ft-text-vertical-layout-type1.mask.rgb24.ref.png              |binary
 test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png             |binary
 test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png              |binary
 test/reference/get-group-target.mask.argb32.ref.png                          |binary
 test/reference/get-group-target.mask.rgb24.ref.png                           |binary
 test/reference/gl-surface-source.base.argb32.ref.png                         |binary
 test/reference/gl-surface-source.base.rgb24.ref.png                          |binary
 test/reference/gl-surface-source.mask.argb32.ref.png                         |binary
 test/reference/gl-surface-source.mask.rgb24.ref.png                          |binary
 test/reference/gl-surface-source.traps.argb32.ref.png                        |binary
 test/reference/gl-surface-source.traps.rgb24.ref.png                         |binary
 test/reference/glyph-cache-pressure.base.argb32.ref.png                      |binary
 test/reference/glyph-cache-pressure.base.rgb24.ref.png                       |binary
 test/reference/glyph-cache-pressure.mask.argb32.ref.png                      |binary
 test/reference/glyph-cache-pressure.mask.rgb24.ref.png                       |binary
 test/reference/glyph-cache-pressure.traps.argb32.ref.png                     |binary
 test/reference/glyph-cache-pressure.traps.rgb24.ref.png                      |binary
 test/reference/gradient-alpha.mask.argb32.ref.png                            |binary
 test/reference/gradient-alpha.mask.rgb24.ref.png                             |binary
 test/reference/gradient-constant-alpha.mask.argb32.ref.png                   |binary
 test/reference/gradient-constant-alpha.mask.rgb24.ref.png                    |binary
 test/reference/gradient-zero-stops-mask.mask.argb32.ref.png                  |binary
 test/reference/gradient-zero-stops-mask.mask.rgb24.ref.png                   |binary
 test/reference/gradient-zero-stops.mask.argb32.ref.png                       |binary
 test/reference/gradient-zero-stops.mask.rgb24.ref.png                        |binary
 test/reference/group-clip.mask.argb32.ref.png                                |binary
 test/reference/group-clip.mask.rgb24.ref.png                                 |binary
 test/reference/group-paint.mask.argb32.ref.png                               |binary
 test/reference/group-paint.mask.rgb24.ref.png                                |binary
 test/reference/group-unaligned.mask.argb32.ref.png                           |binary
 test/reference/group-unaligned.mask.rgb24.ref.png                            |binary
 test/reference/halo-transform.base.argb32.ref.png                            |binary
 test/reference/halo-transform.base.rgb24.ref.png                             |binary
 test/reference/halo-transform.mask.argb32.ref.png                            |binary
 test/reference/halo-transform.mask.rgb24.ref.png                             |binary
 test/reference/halo-transform.traps.argb32.ref.png                           |binary
 test/reference/halo-transform.traps.rgb24.ref.png                            |binary
 test/reference/halo.base.argb32.ref.png                                      |binary
 test/reference/halo.base.rgb24.ref.png                                       |binary
 test/reference/halo.mask.argb32.ref.png                                      |binary
 test/reference/halo.mask.rgb24.ref.png                                       |binary
 test/reference/halo.traps.argb32.ref.png                                     |binary
 test/reference/halo.traps.rgb24.ref.png                                      |binary
 test/reference/hatchings.mask.argb32.ref.png                                 |binary
 test/reference/hatchings.mask.rgb24.ref.png                                  |binary
 test/reference/horizontal-clip.mask.argb32.ref.png                           |binary
 test/reference/horizontal-clip.mask.rgb24.ref.png                            |binary
 test/reference/huge-linear.mask.argb32.ref.png                               |binary
 test/reference/huge-linear.mask.rgb24.ref.png                                |binary
 test/reference/huge-radial.mask.argb32.ref.png                               |binary
 test/reference/huge-radial.mask.rgb24.ref.png                                |binary
 test/reference/image-bug-710072-aligned.mask.argb32.ref.png                  |binary
 test/reference/image-bug-710072-aligned.mask.rgb24.ref.png                   |binary
 test/reference/image-bug-710072-unaligned.mask.argb32.ref.png                |binary
 test/reference/image-bug-710072-unaligned.mask.rgb24.ref.png                 |binary
 test/reference/image-surface-source.mask.argb32.ref.png                      |binary
 test/reference/image-surface-source.mask.rgb24.ref.png                       |binary
 test/reference/implicit-close.mask.argb32.ref.png                            |binary
 test/reference/implicit-close.mask.rgb24.ref.png                             |binary
 test/reference/infinite-join.mask.argb32.ref.png                             |binary
 test/reference/infinite-join.mask.rgb24.ref.png                              |binary
 test/reference/inverse-text.base.argb32.ref.png                              |binary
 test/reference/inverse-text.base.rgb24.ref.png                               |binary
 test/reference/inverse-text.mask.argb32.ref.png                              |binary
 test/reference/inverse-text.mask.rgb24.ref.png                               |binary
 test/reference/inverse-text.traps.argb32.ref.png                             |binary
 test/reference/inverse-text.traps.rgb24.ref.png                              |binary
 test/reference/joins-loop.mask.argb32.ref.png                                |binary
 test/reference/joins-loop.mask.rgb24.ref.png                                 |binary
 test/reference/joins-retrace.mask.argb32.ref.png                             |binary
 test/reference/joins-retrace.mask.rgb24.ref.png                              |binary
 test/reference/joins-star.mask.argb32.ref.png                                |binary
 test/reference/joins-star.mask.rgb24.ref.png                                 |binary
 test/reference/joins.mask.argb32.ref.png                                     |binary
 test/reference/joins.mask.rgb24.ref.png                                      |binary
 test/reference/large-clip.mask.argb32.ref.png                                |binary
 test/reference/large-clip.mask.rgb24.ref.png                                 |binary
 test/reference/large-font.mask.argb32.ref.png                                |binary
 test/reference/large-font.mask.rgb24.ref.png                                 |binary
 test/reference/large-source-roi.mask.argb32.ref.png                          |binary
 test/reference/large-source-roi.mask.rgb24.ref.png                           |binary
 test/reference/large-source.mask.argb32.ref.png                              |binary
 test/reference/large-source.mask.rgb24.ref.png                               |binary
 test/reference/large-twin-antialias-mixed.base.argb32.ref.png                |binary
 test/reference/large-twin-antialias-mixed.base.rgb24.ref.png                 |binary
 test/reference/large-twin-antialias-mixed.mask.argb32.ref.png                |binary
 test/reference/large-twin-antialias-mixed.mask.rgb24.ref.png                 |binary
 test/reference/large-twin-antialias-mixed.traps.argb32.ref.png               |binary
 test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png                |binary
 test/reference/leaky-dash.mask.argb32.ref.png                                |binary
 test/reference/leaky-dash.mask.rgb24.ref.png                                 |binary
 test/reference/leaky-dashed-rectangle.mask.argb32.ref.png                    |binary
 test/reference/leaky-dashed-rectangle.mask.rgb24.ref.png                     |binary
 test/reference/leaky-dashed-stroke.mask.argb32.ref.png                       |binary
 test/reference/leaky-dashed-stroke.mask.rgb24.ref.png                        |binary
 test/reference/leaky-polygon.mask.argb32.ref.png                             |binary
 test/reference/leaky-polygon.mask.rgb24.ref.png                              |binary
 test/reference/line-width-large-overlap-dashed.base.argb32.ref.png           |binary
 test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png            |binary
 test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png           |binary
 test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png            |binary
 test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png          |binary
 test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png           |binary
 test/reference/line-width-large-overlap-flipped.base.argb32.ref.png          |binary
 test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png           |binary
 test/reference/line-width-large-overlap-flipped.mask.argb32.ref.png          |binary
 test/reference/line-width-large-overlap-flipped.mask.rgb24.ref.png           |binary
 test/reference/line-width-large-overlap-flipped.traps.argb32.ref.png         |binary
 test/reference/line-width-large-overlap-flipped.traps.rgb24.ref.png          |binary
 test/reference/line-width-large-overlap-flopped.base.argb32.ref.png          |binary
 test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png           |binary
 test/reference/line-width-large-overlap-flopped.mask.argb32.ref.png          |binary
 test/reference/line-width-large-overlap-flopped.mask.rgb24.ref.png           |binary
 test/reference/line-width-large-overlap-flopped.traps.argb32.ref.png         |binary
 test/reference/line-width-large-overlap-flopped.traps.rgb24.ref.png          |binary
 test/reference/line-width-large-overlap-offset.base.argb32.ref.png           |binary
 test/reference/line-width-large-overlap-offset.base.rgb24.ref.png            |binary
 test/reference/line-width-large-overlap-offset.mask.argb32.ref.png           |binary
 test/reference/line-width-large-overlap-offset.mask.rgb24.ref.png            |binary
 test/reference/line-width-large-overlap-offset.traps.argb32.ref.png          |binary
 test/reference/line-width-large-overlap-offset.traps.rgb24.ref.png           |binary
 test/reference/line-width-large-overlap-rotated.base.argb32.ref.png          |binary
 test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png           |binary
 test/reference/line-width-large-overlap-rotated.mask.argb32.ref.png          |binary
 test/reference/line-width-large-overlap-rotated.mask.rgb24.ref.png           |binary
 test/reference/line-width-large-overlap-rotated.traps.argb32.ref.png         |binary
 test/reference/line-width-large-overlap-rotated.traps.rgb24.ref.png          |binary
 test/reference/line-width-large-overlap.base.argb32.ref.png                  |binary
 test/reference/line-width-large-overlap.base.rgb24.ref.png                   |binary
 test/reference/line-width-large-overlap.mask.argb32.ref.png                  |binary
 test/reference/line-width-large-overlap.mask.rgb24.ref.png                   |binary
 test/reference/line-width-large-overlap.traps.argb32.ref.png                 |binary
 test/reference/line-width-large-overlap.traps.rgb24.ref.png                  |binary
 test/reference/line-width-overlap-dashed.mask.argb32.ref.png                 |binary
 test/reference/line-width-overlap-dashed.mask.rgb24.ref.png                  |binary
 test/reference/line-width-overlap-flipped.mask.argb32.ref.png                |binary
 test/reference/line-width-overlap-flipped.mask.rgb24.ref.png                 |binary
 test/reference/line-width-overlap-flopped.mask.argb32.ref.png                |binary
 test/reference/line-width-overlap-flopped.mask.rgb24.ref.png                 |binary
 test/reference/line-width-overlap-offset.mask.argb32.ref.png                 |binary
 test/reference/line-width-overlap-offset.mask.rgb24.ref.png                  |binary
 test/reference/line-width-overlap-offset.traps.argb32.ref.png                |binary
 test/reference/line-width-overlap-offset.traps.rgb24.ref.png                 |binary
 test/reference/line-width-overlap-rotated.mask.argb32.ref.png                |binary
 test/reference/line-width-overlap-rotated.mask.rgb24.ref.png                 |binary
 test/reference/line-width-overlap.mask.argb32.ref.png                        |binary
 test/reference/line-width-overlap.mask.rgb24.ref.png                         |binary
 test/reference/line-width-scale.mask.argb32.ref.png                          |binary
 test/reference/line-width-scale.mask.rgb24.ref.png                           |binary
 test/reference/line-width-tolerance.mask.argb32.ref.png                      |binary
 test/reference/line-width-tolerance.mask.rgb24.ref.png                       |binary
 test/reference/line-width.mask.argb32.ref.png                                |binary
 test/reference/line-width.mask.rgb24.ref.png                                 |binary
 test/reference/linear-gradient-extend.mask.argb32.ref.png                    |binary
 test/reference/linear-gradient-extend.mask.rgb24.ref.png                     |binary
 test/reference/linear-gradient-large.mask.argb32.ref.png                     |binary
 test/reference/linear-gradient-large.mask.rgb24.ref.png                      |binary
 test/reference/linear-gradient-one-stop.mask.argb32.ref.png                  |binary
 test/reference/linear-gradient-one-stop.mask.rgb24.ref.png                   |binary
 test/reference/linear-gradient-reflect.mask.argb32.ref.png                   |binary
 test/reference/linear-gradient-reflect.mask.rgb24.ref.png                    |binary
 test/reference/linear-gradient-subset.mask.argb32.ref.png                    |binary
 test/reference/linear-gradient-subset.mask.rgb24.ref.png                     |binary
 test/reference/linear-gradient.mask.argb32.ref.png                           |binary
 test/reference/linear-gradient.mask.rgb24.ref.png                            |binary
 test/reference/linear-step-function.mask.argb32.ref.png                      |binary
 test/reference/linear-step-function.mask.rgb24.ref.png                       |binary
 test/reference/linear-uniform.mask.argb32.ref.png                            |binary
 test/reference/linear-uniform.mask.rgb24.ref.png                             |binary
 test/reference/long-dashed-lines.mask.argb32.ref.png                         |binary
 test/reference/long-dashed-lines.mask.rgb24.ref.png                          |binary
 test/reference/long-lines.mask.argb32.ref.png                                |binary
 test/reference/long-lines.mask.rgb24.ref.png                                 |binary
 test/reference/map-all-to-image.mask.argb32.ref.png                          |binary
 test/reference/map-all-to-image.mask.rgb24.ref.png                           |binary
 test/reference/map-bit-to-image.mask.argb32.ref.png                          |binary
 test/reference/map-bit-to-image.mask.rgb24.ref.png                           |binary
 test/reference/map-to-image-fill.mask.argb32.ref.png                         |binary
 test/reference/map-to-image-fill.mask.rgb24.ref.png                          |binary
 test/reference/mask-alpha.mask.argb32.ref.png                                |binary
 test/reference/mask-alpha.mask.rgb24.ref.png                                 |binary
 test/reference/mask-ctm.mask.argb32.ref.png                                  |binary
 test/reference/mask-ctm.mask.rgb24.ref.png                                   |binary
 test/reference/mask-surface-ctm.mask.argb32.ref.png                          |binary
 test/reference/mask-surface-ctm.mask.rgb24.ref.png                           |binary
 test/reference/mask-transformed-image.mask.argb32.ref.png                    |binary
 test/reference/mask-transformed-image.mask.rgb24.ref.png                     |binary
 test/reference/mask-transformed-similar.mask.argb32.ref.png                  |binary
 test/reference/mask-transformed-similar.mask.rgb24.ref.png                   |binary
 test/reference/mask.mask.argb32.ref.png                                      |binary
 test/reference/mask.mask.rgb24.ref.png                                       |binary
 test/reference/mesh-pattern-accuracy.mask.argb32.ref.png                     |binary
 test/reference/mesh-pattern-accuracy.mask.rgb24.ref.png                      |binary
 test/reference/mesh-pattern-conical.mask.argb32.ref.png                      |binary
 test/reference/mesh-pattern-conical.mask.rgb24.ref.png                       |binary
 test/reference/mesh-pattern-control-points.mask.argb32.ref.png               |binary
 test/reference/mesh-pattern-control-points.mask.rgb24.ref.png                |binary
 test/reference/mesh-pattern-fold.mask.argb32.ref.png                         |binary
 test/reference/mesh-pattern-fold.mask.rgb24.ref.png                          |binary
 test/reference/mesh-pattern-overlap.mask.argb32.ref.png                      |binary
 test/reference/mesh-pattern-overlap.mask.rgb24.ref.png                       |binary
 test/reference/mesh-pattern-transformed.mask.argb32.ref.png                  |binary
 test/reference/mesh-pattern-transformed.mask.rgb24.ref.png                   |binary
 test/reference/mesh-pattern.mask.argb32.ref.png                              |binary
 test/reference/mesh-pattern.mask.rgb24.ref.png                               |binary
 test/reference/mime-data.mask.argb32.ref.png                                 |binary
 test/reference/mime-data.mask.rgb24.ref.png                                  |binary
 test/reference/miter-precision.mask.argb32.ref.png                           |binary
 test/reference/miter-precision.mask.rgb24.ref.png                            |binary
 test/reference/move-to-show-surface.mask.argb32.ref.png                      |binary
 test/reference/move-to-show-surface.mask.rgb24.ref.png                       |binary
 test/reference/negative-stride-image.base.argb32.ref.png                     |binary
 test/reference/negative-stride-image.base.rgb24.ref.png                      |binary
 test/reference/negative-stride-image.mask.argb32.ref.png                     |binary
 test/reference/negative-stride-image.mask.rgb24.ref.png                      |binary
 test/reference/negative-stride-image.traps.argb32.ref.png                    |binary
 test/reference/negative-stride-image.traps.rgb24.ref.png                     |binary
 test/reference/new-sub-path.mask.argb32.ref.png                              |binary
 test/reference/new-sub-path.mask.rgb24.ref.png                               |binary
 test/reference/nil-surface.mask.argb32.ref.png                               |binary
 test/reference/nil-surface.mask.rgb24.ref.png                                |binary
 test/reference/operator-alpha-alpha.mask.argb32.ref.png                      |binary
 test/reference/operator-alpha-alpha.mask.rgb24.ref.png                       |binary
 test/reference/operator-alpha.mask.argb32.ref.png                            |binary
 test/reference/operator-alpha.mask.rgb24.ref.png                             |binary
 test/reference/operator-clear.base.argb32.ref.png                            |binary
 test/reference/operator-clear.base.rgb24.ref.png                             |binary
 test/reference/operator-clear.mask.argb32.ref.png                            |binary
 test/reference/operator-clear.mask.rgb24.ref.png                             |binary
 test/reference/operator-source.base.argb32.ref.png                           |binary
 test/reference/operator-source.base.rgb24.ref.png                            |binary
 test/reference/operator-source.mask.argb32.ref.png                           |binary
 test/reference/operator-source.mask.rgb24.ref.png                            |binary
 test/reference/operator.mask.argb32.ref.png                                  |binary
 test/reference/operator.mask.rgb24.ref.png                                   |binary
 test/reference/over-above-source.mask.argb32.ref.png                         |binary
 test/reference/over-above-source.mask.rgb24.ref.png                          |binary
 test/reference/over-around-source.mask.argb32.ref.png                        |binary
 test/reference/over-around-source.mask.rgb24.ref.png                         |binary
 test/reference/over-below-source.mask.argb32.ref.png                         |binary
 test/reference/over-below-source.mask.rgb24.ref.png                          |binary
 test/reference/over-between-source.mask.argb32.ref.png                       |binary
 test/reference/over-between-source.mask.rgb24.ref.png                        |binary
 test/reference/overlapping-boxes.mask.argb32.ref.png                         |binary
 test/reference/overlapping-boxes.mask.rgb24.ref.png                          |binary
 test/reference/overlapping-dash-caps.mask.argb32.ref.png                     |binary
 test/reference/overlapping-dash-caps.mask.rgb24.ref.png                      |binary
 test/reference/overlapping-glyphs.base.argb32.ref.png                        |binary
 test/reference/overlapping-glyphs.base.rgb24.ref.png                         |binary
 test/reference/overlapping-glyphs.mask.argb32.ref.png                        |binary
 test/reference/overlapping-glyphs.mask.rgb24.ref.png                         |binary
 test/reference/overlapping-glyphs.traps.argb32.ref.png                       |binary
 test/reference/overlapping-glyphs.traps.rgb24.ref.png                        |binary
 test/reference/paint-clip-fill-aa.mask.argb32.ref.png                        |binary
 test/reference/paint-clip-fill-aa.mask.rgb24.ref.png                         |binary
 test/reference/paint-clip-fill-mono.mask.argb32.ref.png                      |binary
 test/reference/paint-clip-fill-mono.mask.rgb24.ref.png                       |binary
 test/reference/paint-repeat.mask.argb32.ref.png                              |binary
 test/reference/paint-repeat.mask.rgb24.ref.png                               |binary
 test/reference/paint-source-alpha.mask.argb32.ref.png                        |binary
 test/reference/paint-source-alpha.mask.rgb24.ref.png                         |binary
 test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png                |binary
 test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png                 |binary
 test/reference/paint-with-alpha-clip.mask.argb32.ref.png                     |binary
 test/reference/paint-with-alpha-clip.mask.rgb24.ref.png                      |binary
 test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png               |binary
 test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png                |binary
 test/reference/paint-with-alpha.mask.argb32.ref.png                          |binary
 test/reference/paint-with-alpha.mask.rgb24.ref.png                           |binary
 test/reference/paint.mask.argb32.ref.png                                     |binary
 test/reference/paint.mask.rgb24.ref.png                                      |binary
 test/reference/partial-clip-text-bottom.base.argb32.ref.png                  |binary
 test/reference/partial-clip-text-bottom.base.rgb24.ref.png                   |binary
 test/reference/partial-clip-text-bottom.mask.argb32.ref.png                  |binary
 test/reference/partial-clip-text-bottom.mask.rgb24.ref.png                   |binary
 test/reference/partial-clip-text-bottom.traps.argb32.ref.png                 |binary
 test/reference/partial-clip-text-bottom.traps.rgb24.ref.png                  |binary
 test/reference/partial-clip-text-left.base.argb32.ref.png                    |binary
 test/reference/partial-clip-text-left.base.rgb24.ref.png                     |binary
 test/reference/partial-clip-text-left.mask.argb32.ref.png                    |binary
 test/reference/partial-clip-text-left.mask.rgb24.ref.png                     |binary
 test/reference/partial-clip-text-left.traps.argb32.ref.png                   |binary
 test/reference/partial-clip-text-left.traps.rgb24.ref.png                    |binary
 test/reference/partial-clip-text-right.base.argb32.ref.png                   |binary
 test/reference/partial-clip-text-right.base.rgb24.ref.png                    |binary
 test/reference/partial-clip-text-right.mask.argb32.ref.png                   |binary
 test/reference/partial-clip-text-right.mask.rgb24.ref.png                    |binary
 test/reference/partial-clip-text-right.traps.argb32.ref.png                  |binary
 test/reference/partial-clip-text-right.traps.rgb24.ref.png                   |binary
 test/reference/partial-clip-text-top.base.argb32.ref.png                     |binary
 test/reference/partial-clip-text-top.base.rgb24.ref.png                      |binary
 test/reference/partial-clip-text-top.mask.argb32.ref.png                     |binary
 test/reference/partial-clip-text-top.mask.rgb24.ref.png                      |binary
 test/reference/partial-clip-text-top.traps.argb32.ref.png                    |binary
 test/reference/partial-clip-text-top.traps.rgb24.ref.png                     |binary
 test/reference/partial-coverage-half-reference.mask.argb32.ref.png           |binary
 test/reference/partial-coverage-half-reference.mask.rgb24.ref.png            |binary
 test/reference/partial-coverage-reference.mask.argb32.ref.png                |binary
 test/reference/partial-coverage-reference.mask.rgb24.ref.png                 |binary
 test/reference/partial-coverage-three-quarter-reference.mask.argb32.ref.png  |binary
 test/reference/partial-coverage-three-quarter-reference.mask.rgb24.ref.png   |binary
 test/reference/pass-through.base.argb32.ref.png                              |binary
 test/reference/pass-through.base.rgb24.ref.png                               |binary
 test/reference/pass-through.mask.argb32.ref.png                              |binary
 test/reference/pass-through.mask.rgb24.ref.png                               |binary
 test/reference/pass-through.traps.argb32.ref.png                             |binary
 test/reference/pass-through.traps.rgb24.ref.png                              |binary
 test/reference/path-append.mask.argb32.ref.png                               |binary
 test/reference/path-append.mask.rgb24.ref.png                                |binary
 test/reference/path-stroke-twice.mask.argb32.ref.png                         |binary
 test/reference/path-stroke-twice.mask.rgb24.ref.png                          |binary
 test/reference/pattern-getters.mask.argb32.ref.png                           |binary
 test/reference/pattern-getters.mask.rgb24.ref.png                            |binary
 test/reference/pdf-surface-source.mask.argb32.ref.png                        |binary
 test/reference/pdf-surface-source.mask.rgb24.ref.png                         |binary
 test/reference/pixman-rotate.mask.argb32.ref.png                             |binary
 test/reference/pixman-rotate.mask.rgb24.ref.png                              |binary
 test/reference/ps-surface-source.mask.argb32.ref.png                         |binary
 test/reference/ps-surface-source.mask.rgb24.ref.png                          |binary
 test/reference/pthread-same-source.mask.argb32.ref.png                       |binary
 test/reference/pthread-same-source.mask.rgb24.ref.png                        |binary
 test/reference/pthread-show-text.base.argb32.ref.png                         |binary
 test/reference/pthread-show-text.base.rgb24.ref.png                          |binary
 test/reference/pthread-show-text.mask.argb32.ref.png                         |binary
 test/reference/pthread-show-text.mask.rgb24.ref.png                          |binary
 test/reference/pthread-show-text.traps.argb32.ref.png                        |binary
 test/reference/pthread-show-text.traps.rgb24.ref.png                         |binary
 test/reference/pthread-similar.mask.argb32.ref.png                           |binary
 test/reference/pthread-similar.mask.rgb24.ref.png                            |binary
 test/reference/push-group-color.mask.argb32.ref.png                          |binary
 test/reference/push-group-color.mask.rgb24.ref.png                           |binary
 test/reference/push-group-path-offset.mask.argb32.ref.png                    |binary
 test/reference/push-group-path-offset.mask.rgb24.ref.png                     |binary
 test/reference/push-group.mask.argb32.ref.png                                |binary
 test/reference/push-group.mask.rgb24.ref.png                                 |binary
 test/reference/radial-gradient-extend.mask.argb32.ref.png                    |binary
 test/reference/radial-gradient-extend.mask.rgb24.ref.png                     |binary
 test/reference/radial-gradient-mask-source.mask.argb32.ref.png               |binary
 test/reference/radial-gradient-mask-source.mask.rgb24.ref.png                |binary
 test/reference/radial-gradient-mask.mask.argb32.ref.png                      |binary
 test/reference/radial-gradient-mask.mask.rgb24.ref.png                       |binary
 test/reference/radial-gradient-one-stop.mask.argb32.ref.png                  |binary
 test/reference/radial-gradient-one-stop.mask.rgb24.ref.png                   |binary
 test/reference/radial-gradient-source.mask.argb32.ref.png                    |binary
 test/reference/radial-gradient-source.mask.rgb24.ref.png                     |binary
 test/reference/radial-gradient.mask.argb32.ref.png                           |binary
 test/reference/radial-gradient.mask.rgb24.ref.png                            |binary
 test/reference/radial-outer-focus.base.argb32.ref.png                        |binary
 test/reference/radial-outer-focus.base.rgb24.ref.png                         |binary
 test/reference/radial-outer-focus.mask.argb32.ref.png                        |binary
 test/reference/radial-outer-focus.mask.rgb24.ref.png                         |binary
 test/reference/radial-outer-focus.traps.argb32.ref.png                       |binary
 test/reference/radial-outer-focus.traps.rgb24.ref.png                        |binary
 test/reference/random-clip.base.argb32.ref.png                               |binary
 test/reference/random-clip.base.rgb24.ref.png                                |binary
 test/reference/random-clip.mask.argb32.ref.png                               |binary
 test/reference/random-clip.mask.rgb24.ref.png                                |binary
 test/reference/random-clip.traps.argb32.ref.png                              |binary
 test/reference/random-clip.traps.rgb24.ref.png                               |binary
 test/reference/random-intersections-curves-eo.mask.argb32.ref.png            |binary
 test/reference/random-intersections-curves-eo.mask.rgb24.ref.png             |binary
 test/reference/random-intersections-curves-nz.mask.argb32.ref.png            |binary
 test/reference/random-intersections-curves-nz.mask.rgb24.ref.png             |binary
 test/reference/random-intersections-eo.mask.argb32.ref.png                   |binary
 test/reference/random-intersections-eo.mask.rgb24.ref.png                    |binary
 test/reference/random-intersections-nonzero.mask.argb32.ref.png              |binary
 test/reference/random-intersections-nonzero.mask.rgb24.ref.png               |binary
 test/reference/raster-source.mask.argb32.ref.png                             |binary
 test/reference/raster-source.mask.rgb24.ref.png                              |binary
 test/reference/rectangle-rounding-error.mask.argb32.ref.png                  |binary
 test/reference/rectangle-rounding-error.mask.rgb24.ref.png                   |binary
 test/reference/rectilinear-dash.mask.argb32.ref.png                          |binary
 test/reference/rectilinear-dash.mask.rgb24.ref.png                           |binary
 test/reference/rectilinear-fill.mask.argb32.ref.png                          |binary
 test/reference/rectilinear-fill.mask.rgb24.ref.png                           |binary
 test/reference/rectilinear-grid.mask.argb32.ref.png                          |binary
 test/reference/rectilinear-grid.mask.rgb24.ref.png                           |binary
 test/reference/rectilinear-miter-limit.mask.argb32.ref.png                   |binary
 test/reference/rectilinear-miter-limit.mask.rgb24.ref.png                    |binary
 test/reference/rectilinear-stroke.mask.argb32.ref.png                        |binary
 test/reference/rectilinear-stroke.mask.rgb24.ref.png                         |binary
 test/reference/reflected-stroke.mask.argb32.ref.png                          |binary
 test/reference/reflected-stroke.mask.rgb24.ref.png                           |binary
 test/reference/rel-path.mask.argb32.ref.png                                  |binary
 test/reference/rel-path.mask.rgb24.ref.png                                   |binary
 test/reference/rgb24-ignore-alpha.mask.argb32.ref.png                        |binary
 test/reference/rgb24-ignore-alpha.mask.rgb24.ref.png                         |binary
 test/reference/rotate-clip-image-surface-paint.mask.argb32.ref.png           |binary
 test/reference/rotate-clip-image-surface-paint.mask.rgb24.ref.png            |binary
 test/reference/rotate-image-surface-paint.mask.argb32.ref.png                |binary
 test/reference/rotate-image-surface-paint.mask.rgb24.ref.png                 |binary
 test/reference/rotated-clip.mask.argb32.ref.png                              |binary
 test/reference/rotated-clip.mask.rgb24.ref.png                               |binary
 test/reference/rounded-rectangle-fill.mask.argb32.ref.png                    |binary
 test/reference/rounded-rectangle-fill.mask.rgb24.ref.png                     |binary
 test/reference/rounded-rectangle-stroke.mask.argb32.ref.png                  |binary
 test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png                   |binary
 test/reference/scale-down-source-surface-paint.mask.argb32.ref.png           |binary
 test/reference/scale-down-source-surface-paint.mask.rgb24.ref.png            |binary
 test/reference/scale-offset-image.mask.argb32.ref.png                        |binary
 test/reference/scale-offset-image.mask.rgb24.ref.png                         |binary
 test/reference/scale-offset-similar.mask.argb32.ref.png                      |binary
 test/reference/scale-offset-similar.mask.rgb24.ref.png                       |binary
 test/reference/scale-source-surface-paint.mask.argb32.ref.png                |binary
 test/reference/scale-source-surface-paint.mask.rgb24.ref.png                 |binary
 test/reference/select-font-face.base.argb32.ref.png                          |binary
 test/reference/select-font-face.base.rgb24.ref.png                           |binary
 test/reference/select-font-face.mask.argb32.ref.png                          |binary
 test/reference/select-font-face.mask.rgb24.ref.png                           |binary
 test/reference/select-font-face.traps.argb32.ref.png                         |binary
 test/reference/select-font-face.traps.rgb24.ref.png                          |binary
 test/reference/self-copy-overlap.mask.argb32.ref.png                         |binary
 test/reference/self-copy-overlap.mask.rgb24.ref.png                          |binary
 test/reference/self-copy.mask.argb32.ref.png                                 |binary
 test/reference/self-copy.mask.rgb24.ref.png                                  |binary
 test/reference/self-intersecting.mask.argb32.ref.png                         |binary
 test/reference/self-intersecting.mask.rgb24.ref.png                          |binary
 test/reference/set-source.mask.argb32.ref.png                                |binary
 test/reference/set-source.mask.rgb24.ref.png                                 |binary
 test/reference/shape-general-convex.mask.argb32.ref.png                      |binary
 test/reference/shape-general-convex.mask.rgb24.ref.png                       |binary
 test/reference/shape-sierpinski.mask.argb32.ref.png                          |binary
 test/reference/shape-sierpinski.mask.rgb24.ref.png                           |binary
 test/reference/show-glyphs-advance.base.argb32.ref.png                       |binary
 test/reference/show-glyphs-advance.base.rgb24.ref.png                        |binary
 test/reference/show-glyphs-advance.mask.argb32.ref.png                       |binary
 test/reference/show-glyphs-advance.mask.rgb24.ref.png                        |binary
 test/reference/show-glyphs-advance.traps.argb32.ref.png                      |binary
 test/reference/show-glyphs-advance.traps.rgb24.ref.png                       |binary
 test/reference/show-glyphs-many.mask.argb32.ref.png                          |binary
 test/reference/show-glyphs-many.mask.rgb24.ref.png                           |binary
 test/reference/show-text-current-point.base.argb32.ref.png                   |binary
 test/reference/show-text-current-point.base.rgb24.ref.png                    |binary
 test/reference/show-text-current-point.mask.argb32.ref.png                   |binary
 test/reference/show-text-current-point.mask.rgb24.ref.png                    |binary
 test/reference/show-text-current-point.traps.argb32.ref.png                  |binary
 test/reference/show-text-current-point.traps.rgb24.ref.png                   |binary
 test/reference/skew-extreme.mask.argb32.ref.png                              |binary
 test/reference/skew-extreme.mask.rgb24.ref.png                               |binary
 test/reference/smask-fill.mask.argb32.ref.png                                |binary
 test/reference/smask-fill.mask.rgb24.ref.png                                 |binary
 test/reference/smask-image-mask.mask.argb32.ref.png                          |binary
 test/reference/smask-image-mask.mask.rgb24.ref.png                           |binary
 test/reference/smask-mask.mask.argb32.ref.png                                |binary
 test/reference/smask-mask.mask.rgb24.ref.png                                 |binary
 test/reference/smask-paint.mask.argb32.ref.png                               |binary
 test/reference/smask-paint.mask.rgb24.ref.png                                |binary
 test/reference/smask-stroke.mask.argb32.ref.png                              |binary
 test/reference/smask-stroke.mask.rgb24.ref.png                               |binary
 test/reference/smask-text.base.argb32.ref.png                                |binary
 test/reference/smask-text.base.rgb24.ref.png                                 |binary
 test/reference/smask-text.mask.argb32.ref.png                                |binary
 test/reference/smask-text.mask.rgb24.ref.png                                 |binary
 test/reference/smask-text.traps.argb32.ref.png                               |binary
 test/reference/smask-text.traps.rgb24.ref.png                                |binary
 test/reference/smask.base.argb32.ref.png                                     |binary
 test/reference/smask.base.rgb24.ref.png                                      |binary
 test/reference/smask.mask.argb32.ref.png                                     |binary
 test/reference/smask.mask.rgb24.ref.png                                      |binary
 test/reference/smask.traps.argb32.ref.png                                    |binary
 test/reference/smask.traps.rgb24.ref.png                                     |binary
 test/reference/solid-pattern-cache-stress.mask.argb32.ref.png                |binary
 test/reference/solid-pattern-cache-stress.mask.rgb24.ref.png                 |binary
 test/reference/source-clip-scale.mask.argb32.ref.png                         |binary
 test/reference/source-clip-scale.mask.rgb24.ref.png                          |binary
 test/reference/source-clip.mask.argb32.ref.png                               |binary
 test/reference/source-clip.mask.rgb24.ref.png                                |binary
 test/reference/source-surface-scale-paint.mask.argb32.ref.png                |binary
 test/reference/source-surface-scale-paint.mask.rgb24.ref.png                 |binary
 test/reference/spline-decomposition.mask.argb32.ref.png                      |binary
 test/reference/spline-decomposition.mask.rgb24.ref.png                       |binary
 test/reference/stride-12-image.base.argb32.ref.png                           |binary
 test/reference/stride-12-image.base.rgb24.ref.png                            |binary
 test/reference/stride-12-image.mask.argb32.ref.png                           |binary
 test/reference/stride-12-image.mask.rgb24.ref.png                            |binary
 test/reference/stride-12-image.traps.argb32.ref.png                          |binary
 test/reference/stride-12-image.traps.rgb24.ref.png                           |binary
 test/reference/stroke-ctm-caps.mask.argb32.ref.png                           |binary
 test/reference/stroke-ctm-caps.mask.rgb24.ref.png                            |binary
 test/reference/stroke-image.base.argb32.ref.png                              |binary
 test/reference/stroke-image.base.rgb24.ref.png                               |binary
 test/reference/stroke-image.mask.argb32.ref.png                              |binary
 test/reference/stroke-image.mask.rgb24.ref.png                               |binary
 test/reference/stroke-image.traps.argb32.ref.png                             |binary
 test/reference/stroke-image.traps.rgb24.ref.png                              |binary
 test/reference/stroke-open-box.mask.argb32.ref.png                           |binary
 test/reference/stroke-open-box.mask.rgb24.ref.png                            |binary
 test/reference/stroke-pattern.base.argb32.ref.png                            |binary
 test/reference/stroke-pattern.base.rgb24.ref.png                             |binary
 test/reference/stroke-pattern.mask.argb32.ref.png                            |binary
 test/reference/stroke-pattern.mask.rgb24.ref.png                             |binary
 test/reference/stroke-pattern.traps.argb32.ref.png                           |binary
 test/reference/stroke-pattern.traps.rgb24.ref.png                            |binary
 test/reference/subsurface-image-repeat.mask.argb32.ref.png                   |binary
 test/reference/subsurface-image-repeat.mask.rgb24.ref.png                    |binary
 test/reference/subsurface-modify-child.mask.argb32.ref.png                   |binary
 test/reference/subsurface-modify-child.mask.rgb24.ref.png                    |binary
 test/reference/subsurface-modify-parent.mask.argb32.ref.png                  |binary
 test/reference/subsurface-modify-parent.mask.rgb24.ref.png                   |binary
 test/reference/subsurface-outside-target.base.argb32.ref.png                 |binary
 test/reference/subsurface-outside-target.base.rgb24.ref.png                  |binary
 test/reference/subsurface-outside-target.mask.argb32.ref.png                 |binary
 test/reference/subsurface-outside-target.mask.rgb24.ref.png                  |binary
 test/reference/subsurface-outside-target.traps.argb32.ref.png                |binary
 test/reference/subsurface-outside-target.traps.rgb24.ref.png                 |binary
 test/reference/subsurface-pad.mask.argb32.ref.png                            |binary
 test/reference/subsurface-pad.mask.rgb24.ref.png                             |binary
 test/reference/subsurface-reflect.mask.argb32.ref.png                        |binary
 test/reference/subsurface-reflect.mask.rgb24.ref.png                         |binary
 test/reference/subsurface-repeat.mask.argb32.ref.png                         |binary
 test/reference/subsurface-repeat.mask.rgb24.ref.png                          |binary
 test/reference/subsurface-scale.base.argb32.ref.png                          |binary
 test/reference/subsurface-scale.base.rgb24.ref.png                           |binary
 test/reference/subsurface-scale.mask.argb32.ref.png                          |binary
 test/reference/subsurface-scale.mask.rgb24.ref.png                           |binary
 test/reference/subsurface-scale.traps.argb32.ref.png                         |binary
 test/reference/subsurface-scale.traps.rgb24.ref.png                          |binary
 test/reference/subsurface-similar-repeat.mask.argb32.ref.png                 |binary
 test/reference/subsurface-similar-repeat.mask.rgb24.ref.png                  |binary
 test/reference/subsurface.base.argb32.ref.png                                |binary
 test/reference/subsurface.base.rgb24.ref.png                                 |binary
 test/reference/subsurface.mask.argb32.ref.png                                |binary
 test/reference/subsurface.mask.rgb24.ref.png                                 |binary
 test/reference/subsurface.traps.argb32.ref.png                               |binary
 test/reference/subsurface.traps.rgb24.ref.png                                |binary
 test/reference/surface-pattern-big-scale-down.mask.argb32.ref.png            |binary
 test/reference/surface-pattern-big-scale-down.mask.rgb24.ref.png             |binary
 test/reference/surface-pattern-operator.mask.argb32.ref.png                  |binary
 test/reference/surface-pattern-operator.mask.rgb24.ref.png                   |binary
 test/reference/surface-pattern-scale-down-extend-none.mask.argb32.ref.png    |binary
 test/reference/surface-pattern-scale-down-extend-none.mask.rgb24.ref.png     |binary
 test/reference/surface-pattern-scale-down-extend-pad.mask.argb32.ref.png     |binary
 test/reference/surface-pattern-scale-down-extend-pad.mask.rgb24.ref.png      |binary
 test/reference/surface-pattern-scale-down-extend-reflect.mask.argb32.ref.png |binary
 test/reference/surface-pattern-scale-down-extend-reflect.mask.rgb24.ref.png  |binary
 test/reference/surface-pattern-scale-down-extend-repeat.mask.argb32.ref.png  |binary
 test/reference/surface-pattern-scale-down-extend-repeat.mask.rgb24.ref.png   |binary
 test/reference/surface-pattern-scale-down.mask.argb32.ref.png                |binary
 test/reference/surface-pattern-scale-down.mask.rgb24.ref.png                 |binary
 test/reference/surface-pattern-scale-up.mask.argb32.ref.png                  |binary
 test/reference/surface-pattern-scale-up.mask.rgb24.ref.png                   |binary
 test/reference/surface-pattern.mask.argb32.ref.png                           |binary
 test/reference/surface-pattern.mask.rgb24.ref.png                            |binary
 test/reference/svg-surface-source.mask.argb32.ref.png                        |binary
 test/reference/svg-surface-source.mask.rgb24.ref.png                         |binary
 test/reference/text-antialias-gray.base.argb32.ref.png                       |binary
 test/reference/text-antialias-gray.base.rgb24.ref.png                        |binary
 test/reference/text-antialias-gray.mask.argb32.ref.png                       |binary
 test/reference/text-antialias-gray.mask.rgb24.ref.png                        |binary
 test/reference/text-antialias-gray.traps.argb32.ref.png                      |binary
 test/reference/text-antialias-gray.traps.rgb24.ref.png                       |binary
 test/reference/text-antialias-none.mask.argb32.ref.png                       |binary
 test/reference/text-antialias-none.mask.rgb24.ref.png                        |binary
 test/reference/text-antialias-none.traps.argb32.ref.png                      |binary
 test/reference/text-antialias-none.traps.rgb24.ref.png                       |binary
 test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png               |binary
 test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png                |binary
 test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png               |binary
 test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png                |binary
 test/reference/text-antialias-subpixel-bgr.traps.argb32.ref.png              |binary
 test/reference/text-antialias-subpixel-bgr.traps.rgb24.ref.png               |binary
 test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png               |binary
 test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png                |binary
 test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png               |binary
 test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png                |binary
 test/reference/text-antialias-subpixel-rgb.traps.argb32.ref.png              |binary
 test/reference/text-antialias-subpixel-rgb.traps.rgb24.ref.png               |binary
 test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png              |binary
 test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png               |binary
 test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png              |binary
 test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png               |binary
 test/reference/text-antialias-subpixel-vbgr.traps.argb32.ref.png             |binary
 test/reference/text-antialias-subpixel-vbgr.traps.rgb24.ref.png              |binary
 test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png              |binary
 test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png               |binary
 test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png              |binary
 test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png               |binary
 test/reference/text-antialias-subpixel-vrgb.traps.argb32.ref.png             |binary
 test/reference/text-antialias-subpixel-vrgb.traps.rgb24.ref.png              |binary
 test/reference/text-antialias-subpixel.base.argb32.ref.png                   |binary
 test/reference/text-antialias-subpixel.base.rgb24.ref.png                    |binary
 test/reference/text-antialias-subpixel.mask.argb32.ref.png                   |binary
 test/reference/text-antialias-subpixel.mask.rgb24.ref.png                    |binary
 test/reference/text-antialias-subpixel.traps.argb32.ref.png                  |binary
 test/reference/text-antialias-subpixel.traps.rgb24.ref.png                   |binary
 test/reference/text-glyph-range.base.argb32.ref.png                          |binary
 test/reference/text-glyph-range.base.rgb24.ref.png                           |binary
 test/reference/text-glyph-range.mask.argb32.ref.png                          |binary
 test/reference/text-glyph-range.mask.rgb24.ref.png                           |binary
 test/reference/text-glyph-range.traps.argb32.ref.png                         |binary
 test/reference/text-glyph-range.traps.rgb24.ref.png                          |binary
 test/reference/text-pattern.base.argb32.ref.png                              |binary
 test/reference/text-pattern.base.rgb24.ref.png                               |binary
 test/reference/text-pattern.mask.argb32.ref.png                              |binary
 test/reference/text-pattern.mask.rgb24.ref.png                               |binary
 test/reference/text-rotate.base.argb32.ref.png                               |binary
 test/reference/text-rotate.base.rgb24.ref.png                                |binary
 test/reference/text-rotate.mask.argb32.ref.png                               |binary
 test/reference/text-rotate.mask.rgb24.ref.png                                |binary
 test/reference/text-rotate.traps.argb32.ref.png                              |binary
 test/reference/text-rotate.traps.rgb24.ref.png                               |binary
 test/reference/text-transform.mask.argb32.ref.png                            |binary
 test/reference/text-transform.mask.rgb24.ref.png                             |binary
 test/reference/tiger.mask.argb32.ref.png                                     |binary
 test/reference/tiger.mask.rgb24.ref.png                                      |binary
 test/reference/transforms.mask.argb32.ref.png                                |binary
 test/reference/transforms.mask.rgb24.ref.png                                 |binary
 test/reference/translate-show-surface.mask.argb32.ref.png                    |binary
 test/reference/translate-show-surface.mask.rgb24.ref.png                     |binary
 test/reference/trap-clip.mask.argb32.ref.png                                 |binary
 test/reference/trap-clip.mask.rgb24.ref.png                                  |binary
 test/reference/twin-antialias-gray.base.argb32.ref.png                       |binary
 test/reference/twin-antialias-gray.base.rgb24.ref.png                        |binary
 test/reference/twin-antialias-gray.mask.argb32.ref.png                       |binary
 test/reference/twin-antialias-gray.mask.rgb24.ref.png                        |binary
 test/reference/twin-antialias-gray.traps.argb32.ref.png                      |binary
 test/reference/twin-antialias-gray.traps.rgb24.ref.png                       |binary
 test/reference/twin-antialias-mixed.base.argb32.ref.png                      |binary
 test/reference/twin-antialias-mixed.base.rgb24.ref.png                       |binary
 test/reference/twin-antialias-mixed.mask.argb32.ref.png                      |binary
 test/reference/twin-antialias-mixed.mask.rgb24.ref.png                       |binary
 test/reference/twin-antialias-mixed.traps.argb32.ref.png                     |binary
 test/reference/twin-antialias-mixed.traps.rgb24.ref.png                      |binary
 test/reference/twin-antialias-none.base.argb32.ref.png                       |binary
 test/reference/twin-antialias-none.base.rgb24.ref.png                        |binary
 test/reference/twin-antialias-none.mask.argb32.ref.png                       |binary
 test/reference/twin-antialias-none.mask.rgb24.ref.png                        |binary
 test/reference/twin-antialias-none.traps.argb32.ref.png                      |binary
 test/reference/twin-antialias-none.traps.rgb24.ref.png                       |binary
 test/reference/twin-antialias-subpixel.base.argb32.ref.png                   |binary
 test/reference/twin-antialias-subpixel.base.rgb24.ref.png                    |binary
 test/reference/twin-antialias-subpixel.mask.argb32.ref.png                   |binary
 test/reference/twin-antialias-subpixel.mask.rgb24.ref.png                    |binary
 test/reference/twin-antialias-subpixel.traps.argb32.ref.png                  |binary
 test/reference/twin-antialias-subpixel.traps.rgb24.ref.png                   |binary
 test/reference/twin.base.argb32.ref.png                                      |binary
 test/reference/twin.base.rgb24.ref.png                                       |binary
 test/reference/twin.mask.argb32.ref.png                                      |binary
 test/reference/twin.mask.rgb24.ref.png                                       |binary
 test/reference/twin.traps.argb32.ref.png                                     |binary
 test/reference/twin.traps.rgb24.ref.png                                      |binary
 test/reference/unaligned-box.mask.argb32.ref.png                             |binary
 test/reference/unaligned-box.mask.rgb24.ref.png                              |binary
 test/reference/unantialiased-shapes.mask.argb32.ref.png                      |binary
 test/reference/unantialiased-shapes.mask.rgb24.ref.png                       |binary
 test/reference/unbounded-operator.base.argb32.ref.png                        |binary
 test/reference/unbounded-operator.base.rgb24.ref.png                         |binary
 test/reference/unbounded-operator.mask.argb32.ref.png                        |binary
 test/reference/unbounded-operator.mask.rgb24.ref.png                         |binary
 test/reference/unclosed-strokes.mask.argb32.ref.png                          |binary
 test/reference/unclosed-strokes.mask.rgb24.ref.png                           |binary
 test/reference/user-font-mask.mask.argb32.ref.png                            |binary
 test/reference/user-font-mask.mask.rgb24.ref.png                             |binary
 test/reference/user-font-proxy.base.argb32.ref.png                           |binary
 test/reference/user-font-proxy.base.rgb24.ref.png                            |binary
 test/reference/user-font-proxy.mask.argb32.ref.png                           |binary
 test/reference/user-font-proxy.mask.rgb24.ref.png                            |binary
 test/reference/user-font-proxy.traps.argb32.ref.png                          |binary
 test/reference/user-font-proxy.traps.rgb24.ref.png                           |binary
 test/reference/user-font-rescale.base.argb32.ref.png                         |binary
 test/reference/user-font-rescale.base.rgb24.ref.png                          |binary
 test/reference/user-font-rescale.mask.argb32.ref.png                         |binary
 test/reference/user-font-rescale.mask.rgb24.ref.png                          |binary
 test/reference/user-font-rescale.traps.argb32.ref.png                        |binary
 test/reference/user-font-rescale.traps.rgb24.ref.png                         |binary
 test/reference/user-font.base.argb32.ref.png                                 |binary
 test/reference/user-font.base.rgb24.ref.png                                  |binary
 test/reference/user-font.mask.argb32.ref.png                                 |binary
 test/reference/user-font.mask.rgb24.ref.png                                  |binary
 test/reference/user-font.traps.argb32.ref.png                                |binary
 test/reference/user-font.traps.rgb24.ref.png                                 |binary
 test/reference/white-in-noop.mask.argb32.ref.png                             |binary
 test/reference/white-in-noop.mask.rgb24.ref.png                              |binary
 test/reference/world-map-fill.mask.argb32.ref.png                            |binary
 test/reference/world-map-fill.mask.rgb24.ref.png                             |binary
 test/reference/world-map-stroke.mask.argb32.ref.png                          |binary
 test/reference/world-map-stroke.mask.rgb24.ref.png                           |binary
 test/reference/world-map.mask.argb32.ref.png                                 |binary
 test/reference/world-map.mask.rgb24.ref.png                                  |binary
 test/reference/xcb-huge-image-shm.mask.argb32.ref.png                        |binary
 test/reference/xcb-huge-image-shm.mask.rgb24.ref.png                         |binary
 test/reference/xcb-snapshot-assert.mask.argb32.ref.png                       |binary
 test/reference/xcb-snapshot-assert.mask.rgb24.ref.png                        |binary
 test/reference/xcb-stress-cache.mask.argb32.ref.png                          |binary
 test/reference/xcb-stress-cache.mask.rgb24.ref.png                           |binary
 test/reference/xcb-surface-source.mask.argb32.ref.png                        |binary
 test/reference/xcb-surface-source.mask.rgb24.ref.png                         |binary
 test/reference/xcomposite-projection.mask.argb32.ref.png                     |binary
 test/reference/xcomposite-projection.mask.rgb24.ref.png                      |binary
 test/reference/xlib-expose-event.mask.argb32.ref.png                         |binary
 test/reference/xlib-expose-event.mask.rgb24.ref.png                          |binary
 test/reference/xlib-surface-source.mask.argb32.ref.png                       |binary
 test/reference/xlib-surface-source.mask.rgb24.ref.png                        |binary
 test/reference/zero-alpha.mask.argb32.ref.png                                |binary
 test/reference/zero-alpha.mask.rgb24.ref.png                                 |binary
 test/reference/zero-mask.mask.argb32.ref.png                                 |binary
 test/reference/zero-mask.mask.rgb24.ref.png                                  |binary
 test/xlib-surface.c                                                          |   23 -
 1071 files changed, 305 insertions(+), 137 deletions(-)

New commits:
commit 89fddc38ebc3cd6f02dd09cd071ef7ba0a94631d
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Feb 22 12:57:12 2012 +0000

    traps-compositor: Reduce a complex clip generation to an ADD operator
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/cairo-traps-compositor.c b/src/cairo-traps-compositor.c
index 1fb8515..cc2235e 100644
--- a/src/cairo-traps-compositor.c
+++ b/src/cairo-traps-compositor.c
@@ -202,37 +202,113 @@ combine_clip_as_traps (const cairo_traps_compositor_t *compositor,
     return status;
 }
 
-static cairo_surface_t *
-traps_get_clip_surface (const cairo_traps_compositor_t *compositor,
-			cairo_surface_t *target,
-			const cairo_clip_t *clip,
-			const cairo_rectangle_int_t *extents)
+static cairo_status_t
+__clip_to_surface (const cairo_traps_compositor_t *compositor,
+		   const cairo_composite_rectangles_t *composite,
+		   const cairo_rectangle_int_t *extents,
+		   cairo_surface_t **surface)
 {
-    cairo_surface_t *surface;
+    cairo_surface_t *mask;
+    cairo_polygon_t polygon;
+    cairo_fill_rule_t fill_rule;
+    cairo_antialias_t antialias;
+    cairo_traps_t traps;
+    cairo_boxes_t clear;
+    cairo_surface_t *src;
+    int src_x, src_y;
     cairo_int_status_t status;
 
     TRACE ((stderr, "%s\n", __FUNCTION__));
 
-    surface = _cairo_surface_create_similar_solid (target,
-						   CAIRO_CONTENT_ALPHA,
-						   extents->width,
-						   extents->height,
-						   CAIRO_COLOR_WHITE);
-    if (unlikely (surface->status))
-	return surface;
+    status = _cairo_clip_get_polygon (composite->clip, &polygon,
+				      &fill_rule, &antialias);
+    if (status)
+	return status;
 
-    status = compositor->acquire (surface);
-    if (unlikely (status)) {
-	cairo_surface_destroy (surface);
-	return _cairo_surface_create_in_error (status);
+    _cairo_traps_init (&traps);
+    status = _cairo_bentley_ottmann_tessellate_polygon (&traps,
+							&polygon,
+							fill_rule);
+    _cairo_polygon_fini (&polygon);
+    if (unlikely (status))
+	return status;
+
+    mask = _cairo_surface_create_similar_scratch (composite->surface,
+						  CAIRO_CONTENT_ALPHA,
+						  extents->width,
+						  extents->height);
+    if (unlikely (mask->status)) {
+	_cairo_traps_fini (&traps);
+	return status;
     }
 
-    status = combine_clip_as_traps (compositor, surface, clip, extents);
+    src = compositor->pattern_to_surface (mask, NULL, FALSE,
+					  extents, NULL,
+					  &src_x, &src_y);
+    if (unlikely (status = src->status))
+	goto error;
+
+    status = compositor->acquire (mask);
+    if (unlikely (status))
+	goto error;
+
+    _cairo_boxes_init_from_rectangle (&clear,
+				      0, 0,
+				      extents->width,
+				      extents->height);
+    status = compositor->fill_boxes (mask,
+				     CAIRO_OPERATOR_CLEAR,
+				     CAIRO_COLOR_TRANSPARENT,
+				     &clear);
+    if (unlikely (status))
+	goto error;
+
+    status = compositor->composite_traps (mask, CAIRO_OPERATOR_ADD, src,
+					  src_x, src_y,
+					  extents->x, extents->y,
+					  extents,
+					  antialias, &traps);
+    if (unlikely (status))
+	goto error;
+
+    *surface = mask;
+out:
+    cairo_surface_destroy (src);
+    _cairo_traps_fini (&traps);
+    return status;
+
+error:
+    cairo_surface_destroy (mask);
+    goto out;
+}
+
+static cairo_surface_t *
+traps_get_clip_surface (const cairo_traps_compositor_t *compositor,
+			const cairo_composite_rectangles_t *composite,
+			const cairo_rectangle_int_t *extents)
+{
+    cairo_surface_t *surface = NULL;
+    cairo_int_status_t status;
+
+    TRACE ((stderr, "%s\n", __FUNCTION__));
+
+    status = __clip_to_surface (compositor, composite, extents, &surface);
     if (status == CAIRO_INT_STATUS_UNSUPPORTED) {
-	status = _cairo_clip_combine_with_surface (clip, surface,
+	surface = _cairo_surface_create_similar_solid (composite->surface,
+						       CAIRO_CONTENT_ALPHA,
+						       extents->width,
+						       extents->height,
+						       CAIRO_COLOR_WHITE);
+	if (unlikely (surface->status))
+	    return surface;
+
+	status = _cairo_clip_combine_with_surface (composite->clip, surface,
 						   extents->x, extents->y);
     }
-    compositor->release (surface);
+    if (unlikely (status)) {
+	cairo_surface_destroy (surface);
+	surface = _cairo_surface_create_in_error (status);
+    }
 
     return surface;
 }
@@ -449,8 +525,7 @@ clip_and_composite_combine (const cairo_traps_compositor_t *compositor,
     if (unlikely (status))
 	goto cleanup;
 
-    clip = traps_get_clip_surface (compositor, dst, extents->clip,
-				   &extents->bounded);
+    clip = traps_get_clip_surface (compositor, extents, &extents->bounded);
     if (unlikely ((status = clip->status)))
 	goto cleanup;
 
@@ -555,13 +630,12 @@ fixup_unbounded_with_mask (const cairo_traps_compositor_t *compositor,
 			   const cairo_composite_rectangles_t *extents)
 {
     cairo_surface_t *dst = extents->surface;
-    cairo_clip_t *clip = extents->clip;
     cairo_surface_t *mask;
 
     TRACE ((stderr, "%s\n", __FUNCTION__));
 
     /* XXX can we avoid querying the clip surface again? */
-    mask = traps_get_clip_surface (compositor, dst, clip, &extents->unbounded);
+    mask = traps_get_clip_surface (compositor, extents, &extents->unbounded);
     if (unlikely (mask->status))
 	return mask->status;
 
@@ -1094,8 +1168,8 @@ composite_aligned_boxes (const cairo_traps_compositor_t *compositor,
 	int mask_x = 0, mask_y = 0;
 
 	if (need_clip_mask) {
-	    mask = traps_get_clip_surface (compositor, dst, extents->clip,
-					   &extents->bounded);
+	    mask = traps_get_clip_surface (compositor,
+					   extents, &extents->bounded);
 	    if (unlikely (mask->status))
 		return mask->status;
 
commit 9e640c7ae2cc968cbf4607efdf7f7ab26e5c0bb8
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Feb 22 11:42:15 2012 +0000

    mask-compositor: Acquire the target surface when creating the composite mask
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/cairo-mask-compositor.c b/src/cairo-mask-compositor.c
index 807ba99..34e5fbb 100644
--- a/src/cairo-mask-compositor.c
+++ b/src/cairo-mask-compositor.c
@@ -162,21 +162,39 @@ create_composite_mask (const cairo_mask_compositor_t *compositor,
     struct blt_in info;
     int i;
 
-    surface = _cairo_surface_create_similar_solid (dst,
-						   CAIRO_CONTENT_ALPHA,
-						   extents->bounded.width,
-						   extents->bounded.height,
-						   CAIRO_COLOR_TRANSPARENT);
+    surface = _cairo_surface_create_similar_scratch (dst, CAIRO_CONTENT_ALPHA,
+						     extents->bounded.width,
+						     extents->bounded.height);
     if (unlikely (surface->status))
 	return surface;
 
+    status = compositor->acquire (surface);
+    if (unlikely (status)) {
+	cairo_surface_destroy (surface);
+	return _cairo_surface_create_in_error (status);
+    }
+
+    {
+	cairo_rectangle_int_t rect;
+
+	rect.x = rect.y = 0;
+	rect.width = extents->bounded.width;
+	rect.height = extents->bounded.height;
+
+	status = compositor->fill_rectangles (surface, CAIRO_OPERATOR_CLEAR,
+					      CAIRO_COLOR_TRANSPARENT,
+					      &rect, 1);
+	if (unlikely (status))
+	    goto error;
+    }
+
     if (mask_func) {
 	status = mask_func (compositor, surface, draw_closure,
 			    CAIRO_OPERATOR_SOURCE, NULL, NULL,
 			    extents->bounded.x, extents->bounded.y,
 			    &extents->bounded, extents->clip);
 	if (likely (status != CAIRO_INT_STATUS_UNSUPPORTED))
-	    return surface;
+	    goto out;
     }
 
     /* Is it worth setting the clip region here? */
@@ -184,10 +202,8 @@ create_composite_mask (const cairo_mask_compositor_t *compositor,
 			CAIRO_OPERATOR_ADD, NULL, NULL,
 			extents->bounded.x, extents->bounded.y,
 			&extents->bounded, NULL);
-    if (unlikely (status)) {
-	cairo_surface_destroy (surface);
-	return _cairo_surface_create_in_error (status);
-    }
+    if (unlikely (status))
+	goto error;
 
     info.compositor = compositor;
     info.dst = surface;
@@ -209,12 +225,20 @@ create_composite_mask (const cairo_mask_compositor_t *compositor,
 	status = _cairo_clip_combine_with_surface (extents->clip, surface,
 						   extents->bounded.x,
 						   extents->bounded.y);
-	if (unlikely (status)) {
-	    cairo_surface_destroy (surface);
-	    return _cairo_surface_create_in_error (status);
-	}
+	if (unlikely (status))
+	    goto error;
     }
 
+out:
+    compositor->release (surface);
+    return surface;
+
+error:
+    compositor->release (surface);
+    if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) {
+	cairo_surface_destroy (surface);
+	surface = _cairo_surface_create_in_error (status);
+    }
     return surface;
 }
 
diff --git a/src/cairo-traps-compositor.c b/src/cairo-traps-compositor.c
index a9f8c75..1fb8515 100644
--- a/src/cairo-traps-compositor.c
+++ b/src/cairo-traps-compositor.c
@@ -253,11 +253,9 @@ create_composite_mask (const cairo_traps_compositor_t *compositor,
 
     TRACE ((stderr, "%s\n", __FUNCTION__));
 
-    surface = _cairo_surface_create_similar_solid (dst,
-						   CAIRO_CONTENT_ALPHA,
-						   extents->bounded.width,
-						   extents->bounded.height,
-						   CAIRO_COLOR_TRANSPARENT);
+    surface = _cairo_surface_create_similar_scratch (dst, CAIRO_CONTENT_ALPHA,
+						     extents->bounded.width,
+						     extents->bounded.height);
     if (unlikely (surface->status))
 	return surface;
 
@@ -267,8 +265,10 @@ create_composite_mask (const cairo_traps_compositor_t *compositor,
 					  &extents->bounded,
 					  &extents->bounded,
 					  &src_x, &src_y);
-    if (unlikely (src->status))
+    if (unlikely (src->status)) {
+	cairo_surface_destroy (surface);
 	return src;
+    }
 
     status = compositor->acquire (surface);
     if (unlikely (status)) {
@@ -277,15 +277,30 @@ create_composite_mask (const cairo_traps_compositor_t *compositor,
 	return _cairo_surface_create_in_error (status);
     }
 
+    {
+	cairo_boxes_t clear;
+
+	_cairo_boxes_init_from_rectangle (&clear,
+					  0, 0,
+					  extents->bounded.width,
+					  extents->bounded.height);
+	status = compositor->fill_boxes (surface,
+					 CAIRO_OPERATOR_CLEAR,
+					 CAIRO_COLOR_TRANSPARENT,
+					 &clear);
+	if (unlikely (status))
+	    goto error;
+    }
+
     if (mask_func) {
 	status = mask_func (compositor, surface, draw_closure,
 			    CAIRO_OPERATOR_SOURCE, src, src_x, src_y,
 			    extents->bounded.x, extents->bounded.y,
 			    &extents->bounded, extents->clip);
-	if (likely (status != CAIRO_INT_STATUS_UNSUPPORTED)) {
-	    cairo_surface_destroy (src);
+	if (likely (status == CAIRO_INT_STATUS_SUCCESS))
 	    goto out;
-	}
+	if (unlikely (status != CAIRO_INT_STATUS_UNSUPPORTED))
+	    goto error;
     }
 
     /* Is it worth setting the clip region here? */
@@ -293,7 +308,6 @@ create_composite_mask (const cairo_traps_compositor_t *compositor,
 			CAIRO_OPERATOR_ADD, src, src_x, src_y,
 			extents->bounded.x, extents->bounded.y,
 			&extents->bounded, NULL);
-    cairo_surface_destroy (src);
     if (unlikely (status))
 	goto error;
 
@@ -329,15 +343,16 @@ create_composite_mask (const cairo_traps_compositor_t *compositor,
 
 out:
     compositor->release (surface);
-    surface->is_clear = FALSE;
+    cairo_surface_destroy (src);
     return surface;
 
 error:
+    compositor->release (surface);
     if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) {
 	cairo_surface_destroy (surface);
 	surface = _cairo_surface_create_in_error (status);
     }
-    compositor->release (surface);
+    cairo_surface_destroy (src);
     return surface;
 }
 
commit 605f23d15562d28138ade7f0717cbcf3d01147bf
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Feb 22 11:27:05 2012 +0000

    xlib: Hook up copy_boxes for the mask compositor
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/cairo-xlib-render-compositor.c b/src/cairo-xlib-render-compositor.c
index 0faa557..1067939 100644
--- a/src/cairo-xlib-render-compositor.c
+++ b/src/cairo-xlib-render-compositor.c
@@ -1459,6 +1459,7 @@ _cairo_xlib_mask_compositor_get (void)
 	compositor.draw_image_boxes = draw_image_boxes;
 	compositor.fill_rectangles = fill_rectangles;
 	compositor.fill_boxes = fill_boxes;
+	compositor.copy_boxes = copy_boxes;
 	//compositor.check_composite = check_composite;
 	compositor.composite = composite;
 	//compositor.check_composite_boxes = check_composite_boxes;
commit 6ab1deb5c6377828877253a7ec0ca43d97ca4a99
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Feb 22 11:03:54 2012 +0000

    boilerplate/xlib: Exercise the mask based compositor for xrender version 0.0
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/boilerplate/cairo-boilerplate-xlib.c b/boilerplate/cairo-boilerplate-xlib.c
index 3a6beef..aed075f 100644
--- a/boilerplate/cairo-boilerplate-xlib.c
+++ b/boilerplate/cairo-boilerplate-xlib.c
@@ -274,7 +274,7 @@ _cairo_boilerplate_xlib_create_similar (cairo_surface_t		*other,
 
 static cairo_surface_t *
 _cairo_boilerplate_xlib_create_surface (const char		  *name,
-					cairo_content_t 	   content,
+					cairo_content_t		   content,
 					double			   width,
 					double			   height,
 					double			   max_width,
@@ -315,6 +315,63 @@ _cairo_boilerplate_xlib_create_surface (const char		  *name,
 }
 
 static cairo_surface_t *
+_cairo_boilerplate_xlib_render_0_0_create_surface (const char		  *name,
+						   cairo_content_t		   content,
+						   double			   width,
+						   double			   height,
+						   double			   max_width,
+						   double			   max_height,
+						   cairo_boilerplate_mode_t   mode,
+						   void			 **closure)
+{
+    xlib_target_closure_t *xtc;
+    Display *dpy;
+    int screen;
+    Pixmap pixmap;
+    cairo_surface_t *surface, *dummy;
+
+    *closure = xtc = xcalloc (1, sizeof (xlib_target_closure_t));
+
+    width = ceil (width);
+    if (width < 1)
+	width = 1;
+
+    height = ceil (height);
+    if (height < 1)
+	height = 1;
+
+    xtc->dpy = dpy = XOpenDisplay (NULL);
+    if (xtc->dpy == NULL) {
+	free (xtc);
+	CAIRO_BOILERPLATE_DEBUG (("Failed to open display: %s\n", XDisplayName(0)));
+	return NULL;
+    }
+
+
+    screen = DefaultScreen (dpy);
+    pixmap = XCreatePixmap (dpy, DefaultRootWindow (dpy), 1, 1,
+			    DefaultDepth (dpy, screen));
+    dummy = cairo_xlib_surface_create (dpy, pixmap,
+				       DefaultVisual (dpy, screen),
+				       1, 1);
+    cairo_xlib_device_debug_cap_xrender_version (cairo_surface_get_device (dummy),
+						 0, 0);
+
+    if (mode == CAIRO_BOILERPLATE_MODE_TEST)
+	surface = _cairo_boilerplate_xlib_test_create_surface (dpy, content, width, height, xtc);
+    else /* mode == CAIRO_BOILERPLATE_MODE_PERF */
+	surface = _cairo_boilerplate_xlib_perf_create_surface (dpy, content, width, height, xtc);
+
+    cairo_surface_destroy (dummy);
+    XFreePixmap (dpy, pixmap);
+
+    if (surface == NULL || cairo_surface_status (surface))
+	_cairo_boilerplate_xlib_cleanup (xtc);
+
+    return surface;
+}
+
+static cairo_surface_t *
 _cairo_boilerplate_xlib_window_create_surface (const char		 *name,
 					       cairo_content_t		  content,
 					       double			  width,
@@ -538,6 +595,20 @@ static const cairo_boilerplate_target_t targets[] = {
         NULL,
 	FALSE, FALSE, FALSE
     },
+    {
+	"xlib-render-0_0", "mask", NULL, NULL,
+	CAIRO_SURFACE_TYPE_XLIB, CAIRO_CONTENT_COLOR, 1,
+	"cairo_xlib_surface_create",
+	_cairo_boilerplate_xlib_render_0_0_create_surface,
+	cairo_surface_create_similar,
+	NULL, NULL,
+	_cairo_boilerplate_get_image_surface,
+	cairo_surface_write_to_png,
+	_cairo_boilerplate_xlib_cleanup,
+	_cairo_boilerplate_xlib_synchronize,
+        NULL,
+	FALSE, FALSE, FALSE
+    },
 #endif
 #if CAIRO_HAS_XLIB_SURFACE
     /* This is a fallback surface which uses xlib fallbacks instead of
commit 08de30d8b5700040d3ff953bae8d801a4a05aff0
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Feb 22 10:51:30 2012 +0000

    test: Add a set of reference images for the mask-based compositor
    
    Serves as another reference for some xlib targets.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/test/reference/a1-bug.mask.argb32.ref.png b/test/reference/a1-bug.mask.argb32.ref.png
new file mode 100644
index 0000000..f9ae8a8
Binary files /dev/null and b/test/reference/a1-bug.mask.argb32.ref.png differ
diff --git a/test/reference/a1-bug.mask.rgb24.ref.png b/test/reference/a1-bug.mask.rgb24.ref.png
new file mode 100644
index 0000000..f9ae8a8
Binary files /dev/null and b/test/reference/a1-bug.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-clip-fill-equal.mask.argb32.ref.png b/test/reference/a1-clip-fill-equal.mask.argb32.ref.png
new file mode 100644
index 0000000..384ba4a
Binary files /dev/null and b/test/reference/a1-clip-fill-equal.mask.argb32.ref.png differ
diff --git a/test/reference/a1-clip-fill-equal.mask.rgb24.ref.png b/test/reference/a1-clip-fill-equal.mask.rgb24.ref.png
new file mode 100644
index 0000000..384ba4a
Binary files /dev/null and b/test/reference/a1-clip-fill-equal.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-clip-fill-rule.mask.argb32.ref.png b/test/reference/a1-clip-fill-rule.mask.argb32.ref.png
new file mode 100644
index 0000000..c3ba9dd
Binary files /dev/null and b/test/reference/a1-clip-fill-rule.mask.argb32.ref.png differ
diff --git a/test/reference/a1-clip-fill-rule.mask.rgb24.ref.png b/test/reference/a1-clip-fill-rule.mask.rgb24.ref.png
new file mode 100644
index 0000000..6fe9346
Binary files /dev/null and b/test/reference/a1-clip-fill-rule.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-clip-fill.mask.argb32.ref.png b/test/reference/a1-clip-fill.mask.argb32.ref.png
new file mode 100644
index 0000000..384ba4a
Binary files /dev/null and b/test/reference/a1-clip-fill.mask.argb32.ref.png differ
diff --git a/test/reference/a1-clip-fill.mask.rgb24.ref.png b/test/reference/a1-clip-fill.mask.rgb24.ref.png
new file mode 100644
index 0000000..384ba4a
Binary files /dev/null and b/test/reference/a1-clip-fill.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-clip-paint.mask.argb32.ref.png b/test/reference/a1-clip-paint.mask.argb32.ref.png
new file mode 100644
index 0000000..384ba4a
Binary files /dev/null and b/test/reference/a1-clip-paint.mask.argb32.ref.png differ
diff --git a/test/reference/a1-clip-paint.mask.rgb24.ref.png b/test/reference/a1-clip-paint.mask.rgb24.ref.png
new file mode 100644
index 0000000..384ba4a
Binary files /dev/null and b/test/reference/a1-clip-paint.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-clip-stroke.mask.argb32.ref.png b/test/reference/a1-clip-stroke.mask.argb32.ref.png
new file mode 100644
index 0000000..384ba4a
Binary files /dev/null and b/test/reference/a1-clip-stroke.mask.argb32.ref.png differ
diff --git a/test/reference/a1-clip-stroke.mask.rgb24.ref.png b/test/reference/a1-clip-stroke.mask.rgb24.ref.png
new file mode 100644
index 0000000..384ba4a
Binary files /dev/null and b/test/reference/a1-clip-stroke.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-fill.base.argb32.ref.png b/test/reference/a1-fill.base.argb32.ref.png
new file mode 100644
index 0000000..e40202b
Binary files /dev/null and b/test/reference/a1-fill.base.argb32.ref.png differ
diff --git a/test/reference/a1-fill.base.rgb24.ref.png b/test/reference/a1-fill.base.rgb24.ref.png
new file mode 100644
index 0000000..e40202b
Binary files /dev/null and b/test/reference/a1-fill.base.rgb24.ref.png differ
diff --git a/test/reference/a1-fill.mask.argb32.ref.png b/test/reference/a1-fill.mask.argb32.ref.png
new file mode 100644
index 0000000..e40202b
Binary files /dev/null and b/test/reference/a1-fill.mask.argb32.ref.png differ
diff --git a/test/reference/a1-fill.mask.rgb24.ref.png b/test/reference/a1-fill.mask.rgb24.ref.png
new file mode 100644
index 0000000..e40202b
Binary files /dev/null and b/test/reference/a1-fill.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-fill.traps.argb32.ref.png b/test/reference/a1-fill.traps.argb32.ref.png
new file mode 100644
index 0000000..e40202b
Binary files /dev/null and b/test/reference/a1-fill.traps.argb32.ref.png differ
diff --git a/test/reference/a1-fill.traps.rgb24.ref.png b/test/reference/a1-fill.traps.rgb24.ref.png
new file mode 100644
index 0000000..e40202b
Binary files /dev/null and b/test/reference/a1-fill.traps.rgb24.ref.png differ
diff --git a/test/reference/a1-image-sample.mask.argb32.ref.png b/test/reference/a1-image-sample.mask.argb32.ref.png
new file mode 100644
index 0000000..b8fd457
Binary files /dev/null and b/test/reference/a1-image-sample.mask.argb32.ref.png differ
diff --git a/test/reference/a1-image-sample.mask.rgb24.ref.png b/test/reference/a1-image-sample.mask.rgb24.ref.png
new file mode 100644
index 0000000..b8fd457
Binary files /dev/null and b/test/reference/a1-image-sample.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-line-width.mask.argb32.ref.png b/test/reference/a1-line-width.mask.argb32.ref.png
new file mode 100644
index 0000000..35d9cad
Binary files /dev/null and b/test/reference/a1-line-width.mask.argb32.ref.png differ
diff --git a/test/reference/a1-line-width.mask.rgb24.ref.png b/test/reference/a1-line-width.mask.rgb24.ref.png
new file mode 100644
index 0000000..35d9cad
Binary files /dev/null and b/test/reference/a1-line-width.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-mask-sample.mask.argb32.ref.png b/test/reference/a1-mask-sample.mask.argb32.ref.png
new file mode 100644
index 0000000..b8fd457
Binary files /dev/null and b/test/reference/a1-mask-sample.mask.argb32.ref.png differ
diff --git a/test/reference/a1-mask-sample.mask.rgb24.ref.png b/test/reference/a1-mask-sample.mask.rgb24.ref.png
new file mode 100644
index 0000000..b8fd457
Binary files /dev/null and b/test/reference/a1-mask-sample.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-mask.mask.argb32.ref.png b/test/reference/a1-mask.mask.argb32.ref.png
new file mode 100644
index 0000000..864fc10
Binary files /dev/null and b/test/reference/a1-mask.mask.argb32.ref.png differ
diff --git a/test/reference/a1-mask.mask.rgb24.ref.png b/test/reference/a1-mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..864fc10
Binary files /dev/null and b/test/reference/a1-mask.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-rasterisation-rectangles.mask.argb32.ref.png b/test/reference/a1-rasterisation-rectangles.mask.argb32.ref.png
new file mode 100644
index 0000000..784cf87
Binary files /dev/null and b/test/reference/a1-rasterisation-rectangles.mask.argb32.ref.png differ
diff --git a/test/reference/a1-rasterisation-rectangles.mask.rgb24.ref.png b/test/reference/a1-rasterisation-rectangles.mask.rgb24.ref.png
new file mode 100644
index 0000000..784cf87
Binary files /dev/null and b/test/reference/a1-rasterisation-rectangles.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-rasterisation-triangles.mask.argb32.ref.png b/test/reference/a1-rasterisation-triangles.mask.argb32.ref.png
new file mode 100644
index 0000000..784cf87
Binary files /dev/null and b/test/reference/a1-rasterisation-triangles.mask.argb32.ref.png differ
diff --git a/test/reference/a1-rasterisation-triangles.mask.rgb24.ref.png b/test/reference/a1-rasterisation-triangles.mask.rgb24.ref.png
new file mode 100644
index 0000000..784cf87
Binary files /dev/null and b/test/reference/a1-rasterisation-triangles.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-rectilinear-grid.mask.argb32.ref.png b/test/reference/a1-rectilinear-grid.mask.argb32.ref.png
new file mode 100644
index 0000000..2dfb85e
Binary files /dev/null and b/test/reference/a1-rectilinear-grid.mask.argb32.ref.png differ
diff --git a/test/reference/a1-rectilinear-grid.mask.rgb24.ref.png b/test/reference/a1-rectilinear-grid.mask.rgb24.ref.png
new file mode 100644
index 0000000..2dfb85e
Binary files /dev/null and b/test/reference/a1-rectilinear-grid.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-sample.mask.argb32.ref.png b/test/reference/a1-sample.mask.argb32.ref.png
new file mode 100644
index 0000000..4c6131c
Binary files /dev/null and b/test/reference/a1-sample.mask.argb32.ref.png differ
diff --git a/test/reference/a1-sample.mask.rgb24.ref.png b/test/reference/a1-sample.mask.rgb24.ref.png
new file mode 100644
index 0000000..4c6131c
Binary files /dev/null and b/test/reference/a1-sample.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-tiger.mask.argb32.ref.png b/test/reference/a1-tiger.mask.argb32.ref.png
new file mode 100644
index 0000000..9a62af7
Binary files /dev/null and b/test/reference/a1-tiger.mask.argb32.ref.png differ
diff --git a/test/reference/a1-tiger.mask.rgb24.ref.png b/test/reference/a1-tiger.mask.rgb24.ref.png
new file mode 100644
index 0000000..9a62af7
Binary files /dev/null and b/test/reference/a1-tiger.mask.rgb24.ref.png differ
diff --git a/test/reference/a1-traps-sample.mask.argb32.ref.png b/test/reference/a1-traps-sample.mask.argb32.ref.png
new file mode 100644
index 0000000..384ba4a
Binary files /dev/null and b/test/reference/a1-traps-sample.mask.argb32.ref.png differ
diff --git a/test/reference/a1-traps-sample.mask.rgb24.ref.png b/test/reference/a1-traps-sample.mask.rgb24.ref.png
new file mode 100644
index 0000000..384ba4a
Binary files /dev/null and b/test/reference/a1-traps-sample.mask.rgb24.ref.png differ
diff --git a/test/reference/a8-clear.mask.argb32.ref.png b/test/reference/a8-clear.mask.argb32.ref.png
new file mode 100644
index 0000000..98a624e
Binary files /dev/null and b/test/reference/a8-clear.mask.argb32.ref.png differ
diff --git a/test/reference/a8-clear.mask.rgb24.ref.png b/test/reference/a8-clear.mask.rgb24.ref.png
new file mode 100644
index 0000000..98a624e
Binary files /dev/null and b/test/reference/a8-clear.mask.rgb24.ref.png differ
diff --git a/test/reference/a8-mask.mask.argb32.ref.png b/test/reference/a8-mask.mask.argb32.ref.png
new file mode 100644
index 0000000..e0503d9
Binary files /dev/null and b/test/reference/a8-mask.mask.argb32.ref.png differ
diff --git a/test/reference/a8-mask.mask.rgb24.ref.png b/test/reference/a8-mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..e0503d9
Binary files /dev/null and b/test/reference/a8-mask.mask.rgb24.ref.png differ
diff --git a/test/reference/aliasing.mask.argb32.ref.png b/test/reference/aliasing.mask.argb32.ref.png
new file mode 100644
index 0000000..c11eb67
Binary files /dev/null and b/test/reference/aliasing.mask.argb32.ref.png differ
diff --git a/test/reference/aliasing.mask.rgb24.ref.png b/test/reference/aliasing.mask.rgb24.ref.png
new file mode 100644
index 0000000..c11eb67
Binary files /dev/null and b/test/reference/aliasing.mask.rgb24.ref.png differ
diff --git a/test/reference/alpha-similar.mask.argb32.ref.png b/test/reference/alpha-similar.mask.argb32.ref.png
new file mode 100644
index 0000000..9e1bfaa
Binary files /dev/null and b/test/reference/alpha-similar.mask.argb32.ref.png differ
diff --git a/test/reference/alpha-similar.mask.rgb24.ref.png b/test/reference/alpha-similar.mask.rgb24.ref.png
new file mode 100644
index 0000000..a1f5280
Binary files /dev/null and b/test/reference/alpha-similar.mask.rgb24.ref.png differ
diff --git a/test/reference/api-special-cases.mask.argb32.ref.png b/test/reference/api-special-cases.mask.argb32.ref.png
new file mode 100644
index 0000000..56b88a9
Binary files /dev/null and b/test/reference/api-special-cases.mask.argb32.ref.png differ
diff --git a/test/reference/api-special-cases.mask.rgb24.ref.png b/test/reference/api-special-cases.mask.rgb24.ref.png
new file mode 100644
index 0000000..56b88a9
Binary files /dev/null and b/test/reference/api-special-cases.mask.rgb24.ref.png differ
diff --git a/test/reference/arc-direction.base.argb32.ref.png b/test/reference/arc-direction.base.argb32.ref.png
new file mode 100644
index 0000000..2790a2b
Binary files /dev/null and b/test/reference/arc-direction.base.argb32.ref.png differ
diff --git a/test/reference/arc-direction.base.rgb24.ref.png b/test/reference/arc-direction.base.rgb24.ref.png
new file mode 100644
index 0000000..2790a2b
Binary files /dev/null and b/test/reference/arc-direction.base.rgb24.ref.png differ
diff --git a/test/reference/arc-direction.mask.argb32.ref.png b/test/reference/arc-direction.mask.argb32.ref.png
new file mode 100644
index 0000000..280c09b
Binary files /dev/null and b/test/reference/arc-direction.mask.argb32.ref.png differ
diff --git a/test/reference/arc-direction.mask.rgb24.ref.png b/test/reference/arc-direction.mask.rgb24.ref.png
new file mode 100644
index 0000000..280c09b
Binary files /dev/null and b/test/reference/arc-direction.mask.rgb24.ref.png differ
diff --git a/test/reference/arc-direction.traps.argb32.ref.png b/test/reference/arc-direction.traps.argb32.ref.png
new file mode 100644
index 0000000..280c09b
Binary files /dev/null and b/test/reference/arc-direction.traps.argb32.ref.png differ
diff --git a/test/reference/arc-direction.traps.rgb24.ref.png b/test/reference/arc-direction.traps.rgb24.ref.png
new file mode 100644
index 0000000..280c09b
Binary files /dev/null and b/test/reference/arc-direction.traps.rgb24.ref.png differ
diff --git a/test/reference/arc-infinite-loop.mask.argb32.ref.png b/test/reference/arc-infinite-loop.mask.argb32.ref.png
new file mode 100644
index 0000000..82d645f
Binary files /dev/null and b/test/reference/arc-infinite-loop.mask.argb32.ref.png differ
diff --git a/test/reference/arc-infinite-loop.mask.rgb24.ref.png b/test/reference/arc-infinite-loop.mask.rgb24.ref.png
new file mode 100644
index 0000000..82d645f
Binary files /dev/null and b/test/reference/arc-infinite-loop.mask.rgb24.ref.png differ
diff --git a/test/reference/arc-looping-dash.mask.argb32.ref.png b/test/reference/arc-looping-dash.mask.argb32.ref.png
new file mode 100644
index 0000000..516e66c
Binary files /dev/null and b/test/reference/arc-looping-dash.mask.argb32.ref.png differ
diff --git a/test/reference/arc-looping-dash.mask.rgb24.ref.png b/test/reference/arc-looping-dash.mask.rgb24.ref.png
new file mode 100644
index 0000000..516e66c
Binary files /dev/null and b/test/reference/arc-looping-dash.mask.rgb24.ref.png differ
diff --git a/test/reference/big-empty-triangle.mask.argb32.ref.png b/test/reference/big-empty-triangle.mask.argb32.ref.png
new file mode 100644
index 0000000..a88d3b6
Binary files /dev/null and b/test/reference/big-empty-triangle.mask.argb32.ref.png differ
diff --git a/test/reference/big-empty-triangle.mask.rgb24.ref.png b/test/reference/big-empty-triangle.mask.rgb24.ref.png
new file mode 100644
index 0000000..6c2ca32
Binary files /dev/null and b/test/reference/big-empty-triangle.mask.rgb24.ref.png differ
diff --git a/test/reference/big-line.mask.argb32.ref.png b/test/reference/big-line.mask.argb32.ref.png
new file mode 100644
index 0000000..1bcde8f
Binary files /dev/null and b/test/reference/big-line.mask.argb32.ref.png differ
diff --git a/test/reference/big-line.mask.rgb24.ref.png b/test/reference/big-line.mask.rgb24.ref.png
new file mode 100644
index 0000000..1bcde8f
Binary files /dev/null and b/test/reference/big-line.mask.rgb24.ref.png differ
diff --git a/test/reference/big-little-box.mask.argb32.ref.png b/test/reference/big-little-box.mask.argb32.ref.png
new file mode 100644
index 0000000..928c5e6
Binary files /dev/null and b/test/reference/big-little-box.mask.argb32.ref.png differ
diff --git a/test/reference/big-little-box.mask.rgb24.ref.png b/test/reference/big-little-box.mask.rgb24.ref.png
new file mode 100644
index 0000000..c069d6f
Binary files /dev/null and b/test/reference/big-little-box.mask.rgb24.ref.png differ
diff --git a/test/reference/big-little-triangle.mask.argb32.ref.png b/test/reference/big-little-triangle.mask.argb32.ref.png
new file mode 100644
index 0000000..1c2522f
Binary files /dev/null and b/test/reference/big-little-triangle.mask.argb32.ref.png differ
diff --git a/test/reference/big-little-triangle.mask.rgb24.ref.png b/test/reference/big-little-triangle.mask.rgb24.ref.png
new file mode 100644
index 0000000..24fc472
Binary files /dev/null and b/test/reference/big-little-triangle.mask.rgb24.ref.png differ
diff --git a/test/reference/big-trap.mask.argb32.ref.png b/test/reference/big-trap.mask.argb32.ref.png
new file mode 100644
index 0000000..c0975c9
Binary files /dev/null and b/test/reference/big-trap.mask.argb32.ref.png differ
diff --git a/test/reference/big-trap.mask.rgb24.ref.png b/test/reference/big-trap.mask.rgb24.ref.png
new file mode 100644
index 0000000..c0975c9
Binary files /dev/null and b/test/reference/big-trap.mask.rgb24.ref.png differ
diff --git a/test/reference/bilevel-image.mask.argb32.ref.png b/test/reference/bilevel-image.mask.argb32.ref.png
new file mode 100644
index 0000000..3fb25c2
Binary files /dev/null and b/test/reference/bilevel-image.mask.argb32.ref.png differ
diff --git a/test/reference/bilevel-image.mask.rgb24.ref.png b/test/reference/bilevel-image.mask.rgb24.ref.png
new file mode 100644
index 0000000..3fb25c2
Binary files /dev/null and b/test/reference/bilevel-image.mask.rgb24.ref.png differ
diff --git a/test/reference/bitmap-font.mask.argb32.ref.png b/test/reference/bitmap-font.mask.argb32.ref.png
new file mode 100644
index 0000000..bc2bc52
Binary files /dev/null and b/test/reference/bitmap-font.mask.argb32.ref.png differ
diff --git a/test/reference/bitmap-font.mask.rgb24.ref.png b/test/reference/bitmap-font.mask.rgb24.ref.png
new file mode 100644
index 0000000..285d742
Binary files /dev/null and b/test/reference/bitmap-font.mask.rgb24.ref.png differ
diff --git a/test/reference/bug-40410.mask.argb32.ref.png b/test/reference/bug-40410.mask.argb32.ref.png
new file mode 100644
index 0000000..ae4420a
Binary files /dev/null and b/test/reference/bug-40410.mask.argb32.ref.png differ
diff --git a/test/reference/bug-40410.mask.rgb24.ref.png b/test/reference/bug-40410.mask.rgb24.ref.png
new file mode 100644
index 0000000..ae4420a
Binary files /dev/null and b/test/reference/bug-40410.mask.rgb24.ref.png differ
diff --git a/test/reference/bug-bo-rectangular.mask.argb32.ref.png b/test/reference/bug-bo-rectangular.mask.argb32.ref.png
new file mode 100644
index 0000000..ffa4ede
Binary files /dev/null and b/test/reference/bug-bo-rectangular.mask.argb32.ref.png differ
diff --git a/test/reference/bug-bo-rectangular.mask.rgb24.ref.png b/test/reference/bug-bo-rectangular.mask.rgb24.ref.png
new file mode 100644
index 0000000..ffa4ede
Binary files /dev/null and b/test/reference/bug-bo-rectangular.mask.rgb24.ref.png differ
diff --git a/test/reference/bug-bo-ricotz.base.argb32.ref.png b/test/reference/bug-bo-ricotz.base.argb32.ref.png
new file mode 100644
index 0000000..ff7a552
Binary files /dev/null and b/test/reference/bug-bo-ricotz.base.argb32.ref.png differ
diff --git a/test/reference/bug-bo-ricotz.base.rgb24.ref.png b/test/reference/bug-bo-ricotz.base.rgb24.ref.png
new file mode 100644
index 0000000..ff7a552
Binary files /dev/null and b/test/reference/bug-bo-ricotz.base.rgb24.ref.png differ
diff --git a/test/reference/bug-bo-ricotz.mask.argb32.ref.png b/test/reference/bug-bo-ricotz.mask.argb32.ref.png
new file mode 100644
index 0000000..0e52b24
Binary files /dev/null and b/test/reference/bug-bo-ricotz.mask.argb32.ref.png differ
diff --git a/test/reference/bug-bo-ricotz.mask.rgb24.ref.png b/test/reference/bug-bo-ricotz.mask.rgb24.ref.png
new file mode 100644
index 0000000..0e52b24
Binary files /dev/null and b/test/reference/bug-bo-ricotz.mask.rgb24.ref.png differ
diff --git a/test/reference/bug-bo-ricotz.traps.argb32.ref.png b/test/reference/bug-bo-ricotz.traps.argb32.ref.png
new file mode 100644
index 0000000..0e52b24
Binary files /dev/null and b/test/reference/bug-bo-ricotz.traps.argb32.ref.png differ
diff --git a/test/reference/bug-bo-ricotz.traps.rgb24.ref.png b/test/reference/bug-bo-ricotz.traps.rgb24.ref.png
new file mode 100644
index 0000000..0e52b24
Binary files /dev/null and b/test/reference/bug-bo-ricotz.traps.rgb24.ref.png differ
diff --git a/test/reference/bug-extents.mask.argb32.ref.png b/test/reference/bug-extents.mask.argb32.ref.png
new file mode 100644
index 0000000..2c6875e
Binary files /dev/null and b/test/reference/bug-extents.mask.argb32.ref.png differ
diff --git a/test/reference/bug-extents.mask.rgb24.ref.png b/test/reference/bug-extents.mask.rgb24.ref.png
new file mode 100644
index 0000000..2c6875e
Binary files /dev/null and b/test/reference/bug-extents.mask.rgb24.ref.png differ
diff --git a/test/reference/bug-seams.mask.argb32.ref.png b/test/reference/bug-seams.mask.argb32.ref.png
new file mode 100644
index 0000000..99098db
Binary files /dev/null and b/test/reference/bug-seams.mask.argb32.ref.png differ
diff --git a/test/reference/bug-seams.mask.rgb24.ref.png b/test/reference/bug-seams.mask.rgb24.ref.png
new file mode 100644
index 0000000..99098db
Binary files /dev/null and b/test/reference/bug-seams.mask.rgb24.ref.png differ
diff --git a/test/reference/caps-joins-alpha.mask.argb32.ref.png b/test/reference/caps-joins-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..964a70f
Binary files /dev/null and b/test/reference/caps-joins-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/caps-joins-alpha.mask.rgb24.ref.png b/test/reference/caps-joins-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..964a70f
Binary files /dev/null and b/test/reference/caps-joins-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/caps-joins-curve.mask.argb32.ref.png b/test/reference/caps-joins-curve.mask.argb32.ref.png
new file mode 100644
index 0000000..3595900
Binary files /dev/null and b/test/reference/caps-joins-curve.mask.argb32.ref.png differ
diff --git a/test/reference/caps-joins-curve.mask.rgb24.ref.png b/test/reference/caps-joins-curve.mask.rgb24.ref.png
new file mode 100644
index 0000000..3595900
Binary files /dev/null and b/test/reference/caps-joins-curve.mask.rgb24.ref.png differ
diff --git a/test/reference/caps-joins.mask.argb32.ref.png b/test/reference/caps-joins.mask.argb32.ref.png
new file mode 100644
index 0000000..4983c02
Binary files /dev/null and b/test/reference/caps-joins.mask.argb32.ref.png differ
diff --git a/test/reference/caps-joins.mask.rgb24.ref.png b/test/reference/caps-joins.mask.rgb24.ref.png
new file mode 100644
index 0000000..4983c02
Binary files /dev/null and b/test/reference/caps-joins.mask.rgb24.ref.png differ
diff --git a/test/reference/caps-sub-paths.mask.argb32.ref.png b/test/reference/caps-sub-paths.mask.argb32.ref.png
new file mode 100644
index 0000000..7443389
Binary files /dev/null and b/test/reference/caps-sub-paths.mask.argb32.ref.png differ
diff --git a/test/reference/caps-sub-paths.mask.rgb24.ref.png b/test/reference/caps-sub-paths.mask.rgb24.ref.png
new file mode 100644
index 0000000..7443389
Binary files /dev/null and b/test/reference/caps-sub-paths.mask.rgb24.ref.png differ
diff --git a/test/reference/caps-tails-curve.mask.argb32.ref.png b/test/reference/caps-tails-curve.mask.argb32.ref.png
new file mode 100644
index 0000000..b0f477d
Binary files /dev/null and b/test/reference/caps-tails-curve.mask.argb32.ref.png differ
diff --git a/test/reference/caps-tails-curve.mask.rgb24.ref.png b/test/reference/caps-tails-curve.mask.rgb24.ref.png
new file mode 100644
index 0000000..b0f477d
Binary files /dev/null and b/test/reference/caps-tails-curve.mask.rgb24.ref.png differ
diff --git a/test/reference/caps.mask.argb32.ref.png b/test/reference/caps.mask.argb32.ref.png
new file mode 100644
index 0000000..bf784fd
Binary files /dev/null and b/test/reference/caps.mask.argb32.ref.png differ
diff --git a/test/reference/caps.mask.rgb24.ref.png b/test/reference/caps.mask.rgb24.ref.png
new file mode 100644
index 0000000..bf784fd
Binary files /dev/null and b/test/reference/caps.mask.rgb24.ref.png differ
diff --git a/test/reference/checkerboard.mask.argb32.ref.png b/test/reference/checkerboard.mask.argb32.ref.png
new file mode 100644
index 0000000..1444bc4
Binary files /dev/null and b/test/reference/checkerboard.mask.argb32.ref.png differ
diff --git a/test/reference/checkerboard.mask.rgb24.ref.png b/test/reference/checkerboard.mask.rgb24.ref.png
new file mode 100644
index 0000000..1444bc4
Binary files /dev/null and b/test/reference/checkerboard.mask.rgb24.ref.png differ
diff --git a/test/reference/clear-source.mask.argb32.ref.png b/test/reference/clear-source.mask.argb32.ref.png
new file mode 100644
index 0000000..352bf45
Binary files /dev/null and b/test/reference/clear-source.mask.argb32.ref.png differ
diff --git a/test/reference/clear-source.mask.rgb24.ref.png b/test/reference/clear-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..352bf45
Binary files /dev/null and b/test/reference/clear-source.mask.rgb24.ref.png differ
diff --git a/test/reference/clear.mask.argb32.ref.png b/test/reference/clear.mask.argb32.ref.png
new file mode 100644
index 0000000..102ac3d
Binary files /dev/null and b/test/reference/clear.mask.argb32.ref.png differ
diff --git a/test/reference/clear.mask.rgb24.ref.png b/test/reference/clear.mask.rgb24.ref.png
new file mode 100644
index 0000000..3267aff
Binary files /dev/null and b/test/reference/clear.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-all.mask.argb32.ref.png b/test/reference/clip-all.mask.argb32.ref.png
new file mode 100644
index 0000000..1ed070c
Binary files /dev/null and b/test/reference/clip-all.mask.argb32.ref.png differ
diff --git a/test/reference/clip-all.mask.rgb24.ref.png b/test/reference/clip-all.mask.rgb24.ref.png
new file mode 100644
index 0000000..1ed070c
Binary files /dev/null and b/test/reference/clip-all.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-complex-shape-eo-aa.mask.argb32.ref.png b/test/reference/clip-complex-shape-eo-aa.mask.argb32.ref.png
new file mode 100644
index 0000000..bafbb8a
Binary files /dev/null and b/test/reference/clip-complex-shape-eo-aa.mask.argb32.ref.png differ
diff --git a/test/reference/clip-complex-shape-eo-aa.mask.rgb24.ref.png b/test/reference/clip-complex-shape-eo-aa.mask.rgb24.ref.png
new file mode 100644
index 0000000..bafbb8a
Binary files /dev/null and b/test/reference/clip-complex-shape-eo-aa.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-complex-shape-eo-mono.mask.argb32.ref.png b/test/reference/clip-complex-shape-eo-mono.mask.argb32.ref.png
new file mode 100644
index 0000000..bafbb8a
Binary files /dev/null and b/test/reference/clip-complex-shape-eo-mono.mask.argb32.ref.png differ
diff --git a/test/reference/clip-complex-shape-eo-mono.mask.rgb24.ref.png b/test/reference/clip-complex-shape-eo-mono.mask.rgb24.ref.png
new file mode 100644
index 0000000..bafbb8a
Binary files /dev/null and b/test/reference/clip-complex-shape-eo-mono.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-contexts.mask.argb32.ref.png b/test/reference/clip-contexts.mask.argb32.ref.png
new file mode 100644
index 0000000..0d575a6
Binary files /dev/null and b/test/reference/clip-contexts.mask.argb32.ref.png differ
diff --git a/test/reference/clip-contexts.mask.rgb24.ref.png b/test/reference/clip-contexts.mask.rgb24.ref.png
new file mode 100644
index 0000000..0d575a6
Binary files /dev/null and b/test/reference/clip-contexts.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-device-offset.mask.argb32.ref.png b/test/reference/clip-device-offset.mask.argb32.ref.png
new file mode 100644
index 0000000..06be985
Binary files /dev/null and b/test/reference/clip-device-offset.mask.argb32.ref.png differ
diff --git a/test/reference/clip-device-offset.mask.rgb24.ref.png b/test/reference/clip-device-offset.mask.rgb24.ref.png
new file mode 100644
index 0000000..2419384
Binary files /dev/null and b/test/reference/clip-device-offset.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-disjoint-hatching.mask.argb32.ref.png b/test/reference/clip-disjoint-hatching.mask.argb32.ref.png
new file mode 100644
index 0000000..a29f04a
Binary files /dev/null and b/test/reference/clip-disjoint-hatching.mask.argb32.ref.png differ
diff --git a/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png b/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png
new file mode 100644
index 0000000..a29f04a
Binary files /dev/null and b/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-disjoint.mask.argb32.ref.png b/test/reference/clip-disjoint.mask.argb32.ref.png
new file mode 100644
index 0000000..4e18b7c
Binary files /dev/null and b/test/reference/clip-disjoint.mask.argb32.ref.png differ
diff --git a/test/reference/clip-disjoint.mask.rgb24.ref.png b/test/reference/clip-disjoint.mask.rgb24.ref.png
new file mode 100644
index 0000000..4e18b7c
Binary files /dev/null and b/test/reference/clip-disjoint.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-empty-group.mask.argb32.ref.png b/test/reference/clip-empty-group.mask.argb32.ref.png
new file mode 100644
index 0000000..a59ca47
Binary files /dev/null and b/test/reference/clip-empty-group.mask.argb32.ref.png differ
diff --git a/test/reference/clip-empty-group.mask.rgb24.ref.png b/test/reference/clip-empty-group.mask.rgb24.ref.png
new file mode 100644
index 0000000..a59ca47
Binary files /dev/null and b/test/reference/clip-empty-group.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-empty-save.mask.argb32.ref.png b/test/reference/clip-empty-save.mask.argb32.ref.png
new file mode 100644
index 0000000..1ed070c
Binary files /dev/null and b/test/reference/clip-empty-save.mask.argb32.ref.png differ
diff --git a/test/reference/clip-empty-save.mask.rgb24.ref.png b/test/reference/clip-empty-save.mask.rgb24.ref.png
new file mode 100644
index 0000000..1ed070c
Binary files /dev/null and b/test/reference/clip-empty-save.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-empty.mask.argb32.ref.png b/test/reference/clip-empty.mask.argb32.ref.png
new file mode 100644
index 0000000..1ed070c
Binary files /dev/null and b/test/reference/clip-empty.mask.argb32.ref.png differ
diff --git a/test/reference/clip-empty.mask.rgb24.ref.png b/test/reference/clip-empty.mask.rgb24.ref.png
new file mode 100644
index 0000000..1ed070c
Binary files /dev/null and b/test/reference/clip-empty.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png b/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png
new file mode 100644
index 0000000..2340bdf
Binary files /dev/null and b/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png differ
diff --git a/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png b/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png
new file mode 100644
index 0000000..299bd72
Binary files /dev/null and b/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-fill-no-op.mask.argb32.ref.png b/test/reference/clip-fill-no-op.mask.argb32.ref.png
new file mode 100644
index 0000000..2256461
Binary files /dev/null and b/test/reference/clip-fill-no-op.mask.argb32.ref.png differ
diff --git a/test/reference/clip-fill-no-op.mask.rgb24.ref.png b/test/reference/clip-fill-no-op.mask.rgb24.ref.png
new file mode 100644
index 0000000..2256461
Binary files /dev/null and b/test/reference/clip-fill-no-op.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png b/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png
new file mode 100644
index 0000000..05b2628
Binary files /dev/null and b/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png differ
diff --git a/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png b/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png
new file mode 100644
index 0000000..9ce760b
Binary files /dev/null and b/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-fill-rule-pixel-aligned.mask.argb32.ref.png b/test/reference/clip-fill-rule-pixel-aligned.mask.argb32.ref.png
new file mode 100644
index 0000000..9b82c4b
Binary files /dev/null and b/test/reference/clip-fill-rule-pixel-aligned.mask.argb32.ref.png differ
diff --git a/test/reference/clip-fill-rule-pixel-aligned.mask.rgb24.ref.png b/test/reference/clip-fill-rule-pixel-aligned.mask.rgb24.ref.png
new file mode 100644
index 0000000..0b4f068
Binary files /dev/null and b/test/reference/clip-fill-rule-pixel-aligned.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-fill-rule.mask.argb32.ref.png b/test/reference/clip-fill-rule.mask.argb32.ref.png
new file mode 100644
index 0000000..cb23ea6
Binary files /dev/null and b/test/reference/clip-fill-rule.mask.argb32.ref.png differ
diff --git a/test/reference/clip-fill-rule.mask.rgb24.ref.png b/test/reference/clip-fill-rule.mask.rgb24.ref.png
new file mode 100644
index 0000000..5265dde
Binary files /dev/null and b/test/reference/clip-fill-rule.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-fill.mask.argb32.ref.png b/test/reference/clip-fill.mask.argb32.ref.png
new file mode 100644
index 0000000..c3f2700
Binary files /dev/null and b/test/reference/clip-fill.mask.argb32.ref.png differ
diff --git a/test/reference/clip-fill.mask.rgb24.ref.png b/test/reference/clip-fill.mask.rgb24.ref.png
new file mode 100644
index 0000000..c3f2700
Binary files /dev/null and b/test/reference/clip-fill.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-group-shapes-aligned-rectangles.mask.argb32.ref.png b/test/reference/clip-group-shapes-aligned-rectangles.mask.argb32.ref.png
new file mode 100644
index 0000000..cba7507
Binary files /dev/null and b/test/reference/clip-group-shapes-aligned-rectangles.mask.argb32.ref.png differ
diff --git a/test/reference/clip-group-shapes-aligned-rectangles.mask.rgb24.ref.png b/test/reference/clip-group-shapes-aligned-rectangles.mask.rgb24.ref.png
new file mode 100644
index 0000000..cba7507
Binary files /dev/null and b/test/reference/clip-group-shapes-aligned-rectangles.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-group-shapes-circles.mask.argb32.ref.png b/test/reference/clip-group-shapes-circles.mask.argb32.ref.png
new file mode 100644
index 0000000..7dd6a83
Binary files /dev/null and b/test/reference/clip-group-shapes-circles.mask.argb32.ref.png differ
diff --git a/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png b/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png
new file mode 100644
index 0000000..7dd6a83
Binary files /dev/null and b/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png b/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png
new file mode 100644
index 0000000..877e78b
Binary files /dev/null and b/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png differ
diff --git a/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png b/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png
new file mode 100644
index 0000000..877e78b
Binary files /dev/null and b/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-image.mask.argb32.ref.png b/test/reference/clip-image.mask.argb32.ref.png
new file mode 100644
index 0000000..86c28af
Binary files /dev/null and b/test/reference/clip-image.mask.argb32.ref.png differ
diff --git a/test/reference/clip-image.mask.rgb24.ref.png b/test/reference/clip-image.mask.rgb24.ref.png
new file mode 100644
index 0000000..86c28af
Binary files /dev/null and b/test/reference/clip-image.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-intersect.mask.argb32.ref.png b/test/reference/clip-intersect.mask.argb32.ref.png
new file mode 100644
index 0000000..6627b3a
Binary files /dev/null and b/test/reference/clip-intersect.mask.argb32.ref.png differ
diff --git a/test/reference/clip-intersect.mask.rgb24.ref.png b/test/reference/clip-intersect.mask.rgb24.ref.png
new file mode 100644
index 0000000..6627b3a
Binary files /dev/null and b/test/reference/clip-intersect.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-mixed-antialias.mask.argb32.ref.png b/test/reference/clip-mixed-antialias.mask.argb32.ref.png
new file mode 100644
index 0000000..243c4dd
Binary files /dev/null and b/test/reference/clip-mixed-antialias.mask.argb32.ref.png differ
diff --git a/test/reference/clip-mixed-antialias.mask.rgb24.ref.png b/test/reference/clip-mixed-antialias.mask.rgb24.ref.png
new file mode 100644
index 0000000..243c4dd
Binary files /dev/null and b/test/reference/clip-mixed-antialias.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-nesting.mask.argb32.ref.png b/test/reference/clip-nesting.mask.argb32.ref.png
new file mode 100644
index 0000000..ce0cc0d
Binary files /dev/null and b/test/reference/clip-nesting.mask.argb32.ref.png differ
diff --git a/test/reference/clip-nesting.mask.rgb24.ref.png b/test/reference/clip-nesting.mask.rgb24.ref.png
new file mode 100644
index 0000000..5247843
Binary files /dev/null and b/test/reference/clip-nesting.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-operator.mask.argb32.ref.png b/test/reference/clip-operator.mask.argb32.ref.png
new file mode 100644
index 0000000..8db1a07
Binary files /dev/null and b/test/reference/clip-operator.mask.argb32.ref.png differ
diff --git a/test/reference/clip-operator.mask.rgb24.ref.png b/test/reference/clip-operator.mask.rgb24.ref.png
new file mode 100644
index 0000000..ddd1ec3
Binary files /dev/null and b/test/reference/clip-operator.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-polygons.base.argb32.ref.png b/test/reference/clip-polygons.base.argb32.ref.png
new file mode 100644
index 0000000..e1f294c
Binary files /dev/null and b/test/reference/clip-polygons.base.argb32.ref.png differ
diff --git a/test/reference/clip-polygons.base.rgb24.ref.png b/test/reference/clip-polygons.base.rgb24.ref.png
new file mode 100644
index 0000000..e1f294c
Binary files /dev/null and b/test/reference/clip-polygons.base.rgb24.ref.png differ
diff --git a/test/reference/clip-polygons.mask.argb32.ref.png b/test/reference/clip-polygons.mask.argb32.ref.png
new file mode 100644
index 0000000..e139ef3
Binary files /dev/null and b/test/reference/clip-polygons.mask.argb32.ref.png differ
diff --git a/test/reference/clip-polygons.mask.rgb24.ref.png b/test/reference/clip-polygons.mask.rgb24.ref.png
new file mode 100644
index 0000000..e139ef3
Binary files /dev/null and b/test/reference/clip-polygons.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-polygons.traps.argb32.ref.png b/test/reference/clip-polygons.traps.argb32.ref.png
new file mode 100644
index 0000000..e139ef3
Binary files /dev/null and b/test/reference/clip-polygons.traps.argb32.ref.png differ
diff --git a/test/reference/clip-polygons.traps.rgb24.ref.png b/test/reference/clip-polygons.traps.rgb24.ref.png
new file mode 100644
index 0000000..e139ef3
Binary files /dev/null and b/test/reference/clip-polygons.traps.rgb24.ref.png differ
diff --git a/test/reference/clip-push-group.mask.argb32.ref.png b/test/reference/clip-push-group.mask.argb32.ref.png
new file mode 100644
index 0000000..86724a2
Binary files /dev/null and b/test/reference/clip-push-group.mask.argb32.ref.png differ
diff --git a/test/reference/clip-push-group.mask.rgb24.ref.png b/test/reference/clip-push-group.mask.rgb24.ref.png
new file mode 100644
index 0000000..86724a2
Binary files /dev/null and b/test/reference/clip-push-group.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-rectilinear.base.argb32.ref.png b/test/reference/clip-rectilinear.base.argb32.ref.png
new file mode 100644
index 0000000..2a27bec
Binary files /dev/null and b/test/reference/clip-rectilinear.base.argb32.ref.png differ
diff --git a/test/reference/clip-rectilinear.base.rgb24.ref.png b/test/reference/clip-rectilinear.base.rgb24.ref.png
new file mode 100644
index 0000000..2a27bec
Binary files /dev/null and b/test/reference/clip-rectilinear.base.rgb24.ref.png differ
diff --git a/test/reference/clip-rectilinear.mask.argb32.ref.png b/test/reference/clip-rectilinear.mask.argb32.ref.png
new file mode 100644
index 0000000..2a27bec
Binary files /dev/null and b/test/reference/clip-rectilinear.mask.argb32.ref.png differ
diff --git a/test/reference/clip-rectilinear.mask.rgb24.ref.png b/test/reference/clip-rectilinear.mask.rgb24.ref.png
new file mode 100644
index 0000000..2a27bec
Binary files /dev/null and b/test/reference/clip-rectilinear.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-rectilinear.traps.argb32.ref.png b/test/reference/clip-rectilinear.traps.argb32.ref.png
new file mode 100644
index 0000000..2a27bec
Binary files /dev/null and b/test/reference/clip-rectilinear.traps.argb32.ref.png differ
diff --git a/test/reference/clip-rectilinear.traps.rgb24.ref.png b/test/reference/clip-rectilinear.traps.rgb24.ref.png
new file mode 100644
index 0000000..2a27bec
Binary files /dev/null and b/test/reference/clip-rectilinear.traps.rgb24.ref.png differ
diff --git a/test/reference/clip-rotate-image-surface-paint.mask.argb32.ref.png b/test/reference/clip-rotate-image-surface-paint.mask.argb32.ref.png
new file mode 100644
index 0000000..1093804
Binary files /dev/null and b/test/reference/clip-rotate-image-surface-paint.mask.argb32.ref.png differ
diff --git a/test/reference/clip-rotate-image-surface-paint.mask.rgb24.ref.png b/test/reference/clip-rotate-image-surface-paint.mask.rgb24.ref.png
new file mode 100644
index 0000000..1093804
Binary files /dev/null and b/test/reference/clip-rotate-image-surface-paint.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-shape.mask.argb32.ref.png b/test/reference/clip-shape.mask.argb32.ref.png
new file mode 100644
index 0000000..03edf68
Binary files /dev/null and b/test/reference/clip-shape.mask.argb32.ref.png differ
diff --git a/test/reference/clip-shape.mask.rgb24.ref.png b/test/reference/clip-shape.mask.rgb24.ref.png
new file mode 100644
index 0000000..03edf68
Binary files /dev/null and b/test/reference/clip-shape.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-stroke-no-op.mask.argb32.ref.png b/test/reference/clip-stroke-no-op.mask.argb32.ref.png
new file mode 100644
index 0000000..2256461
Binary files /dev/null and b/test/reference/clip-stroke-no-op.mask.argb32.ref.png differ
diff --git a/test/reference/clip-stroke-no-op.mask.rgb24.ref.png b/test/reference/clip-stroke-no-op.mask.rgb24.ref.png
new file mode 100644
index 0000000..2256461
Binary files /dev/null and b/test/reference/clip-stroke-no-op.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-stroke-unbounded.mask.argb32.ref.png b/test/reference/clip-stroke-unbounded.mask.argb32.ref.png
new file mode 100644
index 0000000..274feb6
Binary files /dev/null and b/test/reference/clip-stroke-unbounded.mask.argb32.ref.png differ
diff --git a/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png b/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png
new file mode 100644
index 0000000..a9a8f7b
Binary files /dev/null and b/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-stroke.mask.argb32.ref.png b/test/reference/clip-stroke.mask.argb32.ref.png
new file mode 100644
index 0000000..afa7fc0
Binary files /dev/null and b/test/reference/clip-stroke.mask.argb32.ref.png differ
diff --git a/test/reference/clip-stroke.mask.rgb24.ref.png b/test/reference/clip-stroke.mask.rgb24.ref.png
new file mode 100644
index 0000000..afa7fc0
Binary files /dev/null and b/test/reference/clip-stroke.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-text.mask.argb32.ref.png b/test/reference/clip-text.mask.argb32.ref.png
new file mode 100644
index 0000000..98484cd
Binary files /dev/null and b/test/reference/clip-text.mask.argb32.ref.png differ
diff --git a/test/reference/clip-text.mask.rgb24.ref.png b/test/reference/clip-text.mask.rgb24.ref.png
new file mode 100644
index 0000000..98484cd
Binary files /dev/null and b/test/reference/clip-text.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-twice-rectangle.mask.argb32.ref.png b/test/reference/clip-twice-rectangle.mask.argb32.ref.png
new file mode 100644
index 0000000..d0e65ea
Binary files /dev/null and b/test/reference/clip-twice-rectangle.mask.argb32.ref.png differ
diff --git a/test/reference/clip-twice-rectangle.mask.rgb24.ref.png b/test/reference/clip-twice-rectangle.mask.rgb24.ref.png
new file mode 100644
index 0000000..d0e65ea
Binary files /dev/null and b/test/reference/clip-twice-rectangle.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-twice.mask.argb32.ref.png b/test/reference/clip-twice.mask.argb32.ref.png
new file mode 100644
index 0000000..828dd23
Binary files /dev/null and b/test/reference/clip-twice.mask.argb32.ref.png differ
diff --git a/test/reference/clip-twice.mask.rgb24.ref.png b/test/reference/clip-twice.mask.rgb24.ref.png
new file mode 100644
index 0000000..8b6baed
Binary files /dev/null and b/test/reference/clip-twice.mask.rgb24.ref.png differ
diff --git a/test/reference/clip-unbounded.mask.argb32.ref.png b/test/reference/clip-unbounded.mask.argb32.ref.png
new file mode 100644
index 0000000..0b65905
Binary files /dev/null and b/test/reference/clip-unbounded.mask.argb32.ref.png differ
diff --git a/test/reference/clip-unbounded.mask.rgb24.ref.png b/test/reference/clip-unbounded.mask.rgb24.ref.png
new file mode 100644
index 0000000..2baf9f4
Binary files /dev/null and b/test/reference/clip-unbounded.mask.rgb24.ref.png differ
diff --git a/test/reference/clipped-group.mask.argb32.ref.png b/test/reference/clipped-group.mask.argb32.ref.png
new file mode 100644
index 0000000..53b149f
Binary files /dev/null and b/test/reference/clipped-group.mask.argb32.ref.png differ
diff --git a/test/reference/clipped-group.mask.rgb24.ref.png b/test/reference/clipped-group.mask.rgb24.ref.png
new file mode 100644
index 0000000..53b149f
Binary files /dev/null and b/test/reference/clipped-group.mask.rgb24.ref.png differ
diff --git a/test/reference/clipped-surface.mask.argb32.ref.png b/test/reference/clipped-surface.mask.argb32.ref.png
new file mode 100644
index 0000000..8e8b008
Binary files /dev/null and b/test/reference/clipped-surface.mask.argb32.ref.png differ
diff --git a/test/reference/clipped-surface.mask.rgb24.ref.png b/test/reference/clipped-surface.mask.rgb24.ref.png
new file mode 100644
index 0000000..8e8b008
Binary files /dev/null and b/test/reference/clipped-surface.mask.rgb24.ref.png differ
diff --git a/test/reference/close-path-current-point.mask.argb32.ref.png b/test/reference/close-path-current-point.mask.argb32.ref.png
new file mode 100644
index 0000000..ab3124b
Binary files /dev/null and b/test/reference/close-path-current-point.mask.argb32.ref.png differ
diff --git a/test/reference/close-path-current-point.mask.rgb24.ref.png b/test/reference/close-path-current-point.mask.rgb24.ref.png
new file mode 100644
index 0000000..ab3124b
Binary files /dev/null and b/test/reference/close-path-current-point.mask.rgb24.ref.png differ
diff --git a/test/reference/close-path.mask.argb32.ref.png b/test/reference/close-path.mask.argb32.ref.png
new file mode 100644
index 0000000..5506ff8
Binary files /dev/null and b/test/reference/close-path.mask.argb32.ref.png differ
diff --git a/test/reference/close-path.mask.rgb24.ref.png b/test/reference/close-path.mask.rgb24.ref.png
new file mode 100644
index 0000000..5506ff8
Binary files /dev/null and b/test/reference/close-path.mask.rgb24.ref.png differ
diff --git a/test/reference/composite-integer-translate-over-repeat.mask.argb32.ref.png b/test/reference/composite-integer-translate-over-repeat.mask.argb32.ref.png
new file mode 100644
index 0000000..c425749
Binary files /dev/null and b/test/reference/composite-integer-translate-over-repeat.mask.argb32.ref.png differ
diff --git a/test/reference/composite-integer-translate-over-repeat.mask.rgb24.ref.png b/test/reference/composite-integer-translate-over-repeat.mask.rgb24.ref.png
new file mode 100644
index 0000000..c425749
Binary files /dev/null and b/test/reference/composite-integer-translate-over-repeat.mask.rgb24.ref.png differ
diff --git a/test/reference/composite-integer-translate-over.mask.argb32.ref.png b/test/reference/composite-integer-translate-over.mask.argb32.ref.png
new file mode 100644
index 0000000..7ac3ddf
Binary files /dev/null and b/test/reference/composite-integer-translate-over.mask.argb32.ref.png differ
diff --git a/test/reference/composite-integer-translate-over.mask.rgb24.ref.png b/test/reference/composite-integer-translate-over.mask.rgb24.ref.png
new file mode 100644
index 0000000..7ac3ddf
Binary files /dev/null and b/test/reference/composite-integer-translate-over.mask.rgb24.ref.png differ
diff --git a/test/reference/composite-integer-translate-source.mask.argb32.ref.png b/test/reference/composite-integer-translate-source.mask.argb32.ref.png
new file mode 100644
index 0000000..7ac3ddf
Binary files /dev/null and b/test/reference/composite-integer-translate-source.mask.argb32.ref.png differ
diff --git a/test/reference/composite-integer-translate-source.mask.rgb24.ref.png b/test/reference/composite-integer-translate-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..7ac3ddf
Binary files /dev/null and b/test/reference/composite-integer-translate-source.mask.rgb24.ref.png differ
diff --git a/test/reference/copy-disjoint.base.argb32.ref.png b/test/reference/copy-disjoint.base.argb32.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/copy-disjoint.base.argb32.ref.png differ
diff --git a/test/reference/copy-disjoint.base.rgb24.ref.png b/test/reference/copy-disjoint.base.rgb24.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/copy-disjoint.base.rgb24.ref.png differ
diff --git a/test/reference/copy-disjoint.mask.argb32.ref.png b/test/reference/copy-disjoint.mask.argb32.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/copy-disjoint.mask.argb32.ref.png differ
diff --git a/test/reference/copy-disjoint.mask.rgb24.ref.png b/test/reference/copy-disjoint.mask.rgb24.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/copy-disjoint.mask.rgb24.ref.png differ
diff --git a/test/reference/copy-disjoint.traps.argb32.ref.png b/test/reference/copy-disjoint.traps.argb32.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/copy-disjoint.traps.argb32.ref.png differ
diff --git a/test/reference/copy-disjoint.traps.rgb24.ref.png b/test/reference/copy-disjoint.traps.rgb24.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/copy-disjoint.traps.rgb24.ref.png differ
diff --git a/test/reference/copy-path.mask.argb32.ref.png b/test/reference/copy-path.mask.argb32.ref.png
new file mode 100644
index 0000000..b50e9e4
Binary files /dev/null and b/test/reference/copy-path.mask.argb32.ref.png differ
diff --git a/test/reference/copy-path.mask.rgb24.ref.png b/test/reference/copy-path.mask.rgb24.ref.png
new file mode 100644
index 0000000..b50e9e4
Binary files /dev/null and b/test/reference/copy-path.mask.rgb24.ref.png differ
diff --git a/test/reference/create-from-png-stream.mask.argb32.ref.png b/test/reference/create-from-png-stream.mask.argb32.ref.png
new file mode 100644
index 0000000..0a145d9
Binary files /dev/null and b/test/reference/create-from-png-stream.mask.argb32.ref.png differ
diff --git a/test/reference/create-from-png-stream.mask.rgb24.ref.png b/test/reference/create-from-png-stream.mask.rgb24.ref.png
new file mode 100644
index 0000000..0a145d9
Binary files /dev/null and b/test/reference/create-from-png-stream.mask.rgb24.ref.png differ
diff --git a/test/reference/create-from-png.mask.argb32.ref.png b/test/reference/create-from-png.mask.argb32.ref.png
new file mode 100644
index 0000000..0a145d9
Binary files /dev/null and b/test/reference/create-from-png.mask.argb32.ref.png differ
diff --git a/test/reference/create-from-png.mask.rgb24.ref.png b/test/reference/create-from-png.mask.rgb24.ref.png
new file mode 100644
index 0000000..0a145d9
Binary files /dev/null and b/test/reference/create-from-png.mask.rgb24.ref.png differ
diff --git a/test/reference/create-from-png.traps.argb32.ref.png b/test/reference/create-from-png.traps.argb32.ref.png
new file mode 100644
index 0000000..0a145d9
Binary files /dev/null and b/test/reference/create-from-png.traps.argb32.ref.png differ
diff --git a/test/reference/create-from-png.traps.rgb24.ref.png b/test/reference/create-from-png.traps.rgb24.ref.png
new file mode 100644
index 0000000..0a145d9
Binary files /dev/null and b/test/reference/create-from-png.traps.rgb24.ref.png differ
diff --git a/test/reference/culled-glyphs.mask.argb32.ref.png b/test/reference/culled-glyphs.mask.argb32.ref.png
new file mode 100644
index 0000000..6701295
Binary files /dev/null and b/test/reference/culled-glyphs.mask.argb32.ref.png differ
diff --git a/test/reference/culled-glyphs.mask.rgb24.ref.png b/test/reference/culled-glyphs.mask.rgb24.ref.png
new file mode 100644
index 0000000..6701295
Binary files /dev/null and b/test/reference/culled-glyphs.mask.rgb24.ref.png differ
diff --git a/test/reference/curve-to-as-line-to.mask.argb32.ref.png b/test/reference/curve-to-as-line-to.mask.argb32.ref.png
new file mode 100644
index 0000000..d241183
Binary files /dev/null and b/test/reference/curve-to-as-line-to.mask.argb32.ref.png differ
diff --git a/test/reference/curve-to-as-line-to.mask.rgb24.ref.png b/test/reference/curve-to-as-line-to.mask.rgb24.ref.png
new file mode 100644
index 0000000..d241183
Binary files /dev/null and b/test/reference/curve-to-as-line-to.mask.rgb24.ref.png differ
diff --git a/test/reference/dash-caps-joins.mask.argb32.ref.png b/test/reference/dash-caps-joins.mask.argb32.ref.png
new file mode 100644
index 0000000..b09b86f
Binary files /dev/null and b/test/reference/dash-caps-joins.mask.argb32.ref.png differ
diff --git a/test/reference/dash-caps-joins.mask.rgb24.ref.png b/test/reference/dash-caps-joins.mask.rgb24.ref.png
new file mode 100644
index 0000000..b09b86f
Binary files /dev/null and b/test/reference/dash-caps-joins.mask.rgb24.ref.png differ
diff --git a/test/reference/dash-curve.mask.argb32.ref.png b/test/reference/dash-curve.mask.argb32.ref.png
new file mode 100644
index 0000000..8bebde2
Binary files /dev/null and b/test/reference/dash-curve.mask.argb32.ref.png differ
diff --git a/test/reference/dash-curve.mask.rgb24.ref.png b/test/reference/dash-curve.mask.rgb24.ref.png
new file mode 100644
index 0000000..8bebde2
Binary files /dev/null and b/test/reference/dash-curve.mask.rgb24.ref.png differ
diff --git a/test/reference/dash-infinite-loop.mask.argb32.ref.png b/test/reference/dash-infinite-loop.mask.argb32.ref.png
new file mode 100644
index 0000000..2ae1717
Binary files /dev/null and b/test/reference/dash-infinite-loop.mask.argb32.ref.png differ
diff --git a/test/reference/dash-infinite-loop.mask.rgb24.ref.png b/test/reference/dash-infinite-loop.mask.rgb24.ref.png
new file mode 100644
index 0000000..2ae1717
Binary files /dev/null and b/test/reference/dash-infinite-loop.mask.rgb24.ref.png differ
diff --git a/test/reference/dash-no-dash.mask.argb32.ref.png b/test/reference/dash-no-dash.mask.argb32.ref.png
new file mode 100644
index 0000000..c150a4f
Binary files /dev/null and b/test/reference/dash-no-dash.mask.argb32.ref.png differ
diff --git a/test/reference/dash-no-dash.mask.rgb24.ref.png b/test/reference/dash-no-dash.mask.rgb24.ref.png
new file mode 100644
index 0000000..c150a4f
Binary files /dev/null and b/test/reference/dash-no-dash.mask.rgb24.ref.png differ
diff --git a/test/reference/dash-offset-negative.mask.argb32.ref.png b/test/reference/dash-offset-negative.mask.argb32.ref.png
new file mode 100644
index 0000000..df22d08
Binary files /dev/null and b/test/reference/dash-offset-negative.mask.argb32.ref.png differ
diff --git a/test/reference/dash-offset-negative.mask.rgb24.ref.png b/test/reference/dash-offset-negative.mask.rgb24.ref.png
new file mode 100644
index 0000000..df22d08
Binary files /dev/null and b/test/reference/dash-offset-negative.mask.rgb24.ref.png differ
diff --git a/test/reference/dash-offset.mask.argb32.ref.png b/test/reference/dash-offset.mask.argb32.ref.png
new file mode 100644
index 0000000..52600c4
Binary files /dev/null and b/test/reference/dash-offset.mask.argb32.ref.png differ
diff --git a/test/reference/dash-offset.mask.rgb24.ref.png b/test/reference/dash-offset.mask.rgb24.ref.png
new file mode 100644
index 0000000..52600c4
Binary files /dev/null and b/test/reference/dash-offset.mask.rgb24.ref.png differ
diff --git a/test/reference/dash-scale.mask.argb32.ref.png b/test/reference/dash-scale.mask.argb32.ref.png
new file mode 100644
index 0000000..deef9dc
Binary files /dev/null and b/test/reference/dash-scale.mask.argb32.ref.png differ
diff --git a/test/reference/dash-scale.mask.rgb24.ref.png b/test/reference/dash-scale.mask.rgb24.ref.png
new file mode 100644
index 0000000..deef9dc
Binary files /dev/null and b/test/reference/dash-scale.mask.rgb24.ref.png differ
diff --git a/test/reference/dash-state.mask.argb32.ref.png b/test/reference/dash-state.mask.argb32.ref.png
new file mode 100644
index 0000000..31551cf
Binary files /dev/null and b/test/reference/dash-state.mask.argb32.ref.png differ
diff --git a/test/reference/dash-state.mask.rgb24.ref.png b/test/reference/dash-state.mask.rgb24.ref.png
new file mode 100644
index 0000000..31551cf
Binary files /dev/null and b/test/reference/dash-state.mask.rgb24.ref.png differ
diff --git a/test/reference/dash-zero-length.mask.argb32.ref.png b/test/reference/dash-zero-length.mask.argb32.ref.png
new file mode 100644
index 0000000..fdc5f5e
Binary files /dev/null and b/test/reference/dash-zero-length.mask.argb32.ref.png differ
diff --git a/test/reference/dash-zero-length.mask.rgb24.ref.png b/test/reference/dash-zero-length.mask.rgb24.ref.png
new file mode 100644
index 0000000..b14bd8d
Binary files /dev/null and b/test/reference/dash-zero-length.mask.rgb24.ref.png differ
diff --git a/test/reference/degenerate-arc.mask.argb32.ref.png b/test/reference/degenerate-arc.mask.argb32.ref.png
new file mode 100644
index 0000000..4da4fd6
Binary files /dev/null and b/test/reference/degenerate-arc.mask.argb32.ref.png differ
diff --git a/test/reference/degenerate-arc.mask.rgb24.ref.png b/test/reference/degenerate-arc.mask.rgb24.ref.png
new file mode 100644
index 0000000..4da4fd6
Binary files /dev/null and b/test/reference/degenerate-arc.mask.rgb24.ref.png differ
diff --git a/test/reference/degenerate-arcs.mask.argb32.ref.png b/test/reference/degenerate-arcs.mask.argb32.ref.png
new file mode 100644
index 0000000..fc1869d
Binary files /dev/null and b/test/reference/degenerate-arcs.mask.argb32.ref.png differ
diff --git a/test/reference/degenerate-arcs.mask.rgb24.ref.png b/test/reference/degenerate-arcs.mask.rgb24.ref.png
new file mode 100644
index 0000000..fc1869d
Binary files /dev/null and b/test/reference/degenerate-arcs.mask.rgb24.ref.png differ
diff --git a/test/reference/degenerate-curve-to.mask.argb32.ref.png b/test/reference/degenerate-curve-to.mask.argb32.ref.png
new file mode 100644
index 0000000..18ab11e
Binary files /dev/null and b/test/reference/degenerate-curve-to.mask.argb32.ref.png differ
diff --git a/test/reference/degenerate-curve-to.mask.rgb24.ref.png b/test/reference/degenerate-curve-to.mask.rgb24.ref.png
new file mode 100644
index 0000000..18ab11e
Binary files /dev/null and b/test/reference/degenerate-curve-to.mask.rgb24.ref.png differ
diff --git a/test/reference/degenerate-dash.mask.argb32.ref.png b/test/reference/degenerate-dash.mask.argb32.ref.png
new file mode 100644
index 0000000..2ddfc8b
Binary files /dev/null and b/test/reference/degenerate-dash.mask.argb32.ref.png differ
diff --git a/test/reference/degenerate-dash.mask.rgb24.ref.png b/test/reference/degenerate-dash.mask.rgb24.ref.png
new file mode 100644
index 0000000..2ddfc8b
Binary files /dev/null and b/test/reference/degenerate-dash.mask.rgb24.ref.png differ
diff --git a/test/reference/degenerate-linear-gradient.mask.argb32.ref.png b/test/reference/degenerate-linear-gradient.mask.argb32.ref.png
new file mode 100644
index 0000000..ceed48a
Binary files /dev/null and b/test/reference/degenerate-linear-gradient.mask.argb32.ref.png differ
diff --git a/test/reference/degenerate-linear-gradient.mask.rgb24.ref.png b/test/reference/degenerate-linear-gradient.mask.rgb24.ref.png
new file mode 100644
index 0000000..ceed48a
Binary files /dev/null and b/test/reference/degenerate-linear-gradient.mask.rgb24.ref.png differ
diff --git a/test/reference/degenerate-path.mask.argb32.ref.png b/test/reference/degenerate-path.mask.argb32.ref.png
new file mode 100644
index 0000000..0459397
Binary files /dev/null and b/test/reference/degenerate-path.mask.argb32.ref.png differ
diff --git a/test/reference/degenerate-path.mask.rgb24.ref.png b/test/reference/degenerate-path.mask.rgb24.ref.png
new file mode 100644
index 0000000..07fda63
Binary files /dev/null and b/test/reference/degenerate-path.mask.rgb24.ref.png differ
diff --git a/test/reference/degenerate-pen.mask.argb32.ref.png b/test/reference/degenerate-pen.mask.argb32.ref.png
new file mode 100644
index 0000000..ea65d22
Binary files /dev/null and b/test/reference/degenerate-pen.mask.argb32.ref.png differ
diff --git a/test/reference/degenerate-pen.mask.rgb24.ref.png b/test/reference/degenerate-pen.mask.rgb24.ref.png
new file mode 100644
index 0000000..ea65d22
Binary files /dev/null and b/test/reference/degenerate-pen.mask.rgb24.ref.png differ
diff --git a/test/reference/degenerate-radial-gradient.mask.argb32.ref.png b/test/reference/degenerate-radial-gradient.mask.argb32.ref.png
new file mode 100644
index 0000000..9a5213b
Binary files /dev/null and b/test/reference/degenerate-radial-gradient.mask.argb32.ref.png differ
diff --git a/test/reference/degenerate-radial-gradient.mask.rgb24.ref.png b/test/reference/degenerate-radial-gradient.mask.rgb24.ref.png
new file mode 100644
index 0000000..9a5213b
Binary files /dev/null and b/test/reference/degenerate-radial-gradient.mask.rgb24.ref.png differ
diff --git a/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png b/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png
new file mode 100644
index 0000000..c4293ad
Binary files /dev/null and b/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png differ
diff --git a/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png b/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png
new file mode 100644
index 0000000..c4293ad
Binary files /dev/null and b/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png differ
diff --git a/test/reference/device-offset-fractional.mask.argb32.ref.png b/test/reference/device-offset-fractional.mask.argb32.ref.png
new file mode 100644
index 0000000..b1eef5f
Binary files /dev/null and b/test/reference/device-offset-fractional.mask.argb32.ref.png differ
diff --git a/test/reference/device-offset-fractional.mask.rgb24.ref.png b/test/reference/device-offset-fractional.mask.rgb24.ref.png
new file mode 100644
index 0000000..b1eef5f
Binary files /dev/null and b/test/reference/device-offset-fractional.mask.rgb24.ref.png differ
diff --git a/test/reference/device-offset-positive.mask.argb32.ref.png b/test/reference/device-offset-positive.mask.argb32.ref.png
new file mode 100644
index 0000000..1115bca
Binary files /dev/null and b/test/reference/device-offset-positive.mask.argb32.ref.png differ
diff --git a/test/reference/device-offset-positive.mask.rgb24.ref.png b/test/reference/device-offset-positive.mask.rgb24.ref.png
new file mode 100644
index 0000000..dcdd332
Binary files /dev/null and b/test/reference/device-offset-positive.mask.rgb24.ref.png differ
diff --git a/test/reference/device-offset-scale.mask.argb32.ref.png b/test/reference/device-offset-scale.mask.argb32.ref.png
new file mode 100644
index 0000000..fdffbf3
Binary files /dev/null and b/test/reference/device-offset-scale.mask.argb32.ref.png differ
diff --git a/test/reference/device-offset-scale.mask.rgb24.ref.png b/test/reference/device-offset-scale.mask.rgb24.ref.png
new file mode 100644
index 0000000..fdffbf3
Binary files /dev/null and b/test/reference/device-offset-scale.mask.rgb24.ref.png differ
diff --git a/test/reference/device-offset.mask.argb32.ref.png b/test/reference/device-offset.mask.argb32.ref.png
new file mode 100644
index 0000000..43ced46
Binary files /dev/null and b/test/reference/device-offset.mask.argb32.ref.png differ
diff --git a/test/reference/device-offset.mask.rgb24.ref.png b/test/reference/device-offset.mask.rgb24.ref.png
new file mode 100644
index 0000000..f19acba
Binary files /dev/null and b/test/reference/device-offset.mask.rgb24.ref.png differ
diff --git a/test/reference/drunkard-tails.mask.argb32.ref.png b/test/reference/drunkard-tails.mask.argb32.ref.png
new file mode 100644
index 0000000..053e470
Binary files /dev/null and b/test/reference/drunkard-tails.mask.argb32.ref.png differ
diff --git a/test/reference/drunkard-tails.mask.rgb24.ref.png b/test/reference/drunkard-tails.mask.rgb24.ref.png
new file mode 100644
index 0000000..053e470
Binary files /dev/null and b/test/reference/drunkard-tails.mask.rgb24.ref.png differ
diff --git a/test/reference/extend-pad-border.mask.argb32.ref.png b/test/reference/extend-pad-border.mask.argb32.ref.png
new file mode 100644
index 0000000..f4fc524
Binary files /dev/null and b/test/reference/extend-pad-border.mask.argb32.ref.png differ
diff --git a/test/reference/extend-pad-border.mask.rgb24.ref.png b/test/reference/extend-pad-border.mask.rgb24.ref.png
new file mode 100644
index 0000000..f4fc524
Binary files /dev/null and b/test/reference/extend-pad-border.mask.rgb24.ref.png differ
diff --git a/test/reference/extend-pad-similar.mask.argb32.ref.png b/test/reference/extend-pad-similar.mask.argb32.ref.png
new file mode 100644
index 0000000..9345221
Binary files /dev/null and b/test/reference/extend-pad-similar.mask.argb32.ref.png differ
diff --git a/test/reference/extend-pad-similar.mask.rgb24.ref.png b/test/reference/extend-pad-similar.mask.rgb24.ref.png
new file mode 100644
index 0000000..9345221
Binary files /dev/null and b/test/reference/extend-pad-similar.mask.rgb24.ref.png differ
diff --git a/test/reference/extend-pad.mask.argb32.ref.png b/test/reference/extend-pad.mask.argb32.ref.png
new file mode 100644
index 0000000..9345221
Binary files /dev/null and b/test/reference/extend-pad.mask.argb32.ref.png differ
diff --git a/test/reference/extend-pad.mask.rgb24.ref.png b/test/reference/extend-pad.mask.rgb24.ref.png
new file mode 100644
index 0000000..9345221
Binary files /dev/null and b/test/reference/extend-pad.mask.rgb24.ref.png differ
diff --git a/test/reference/extend-reflect-similar.mask.argb32.ref.png b/test/reference/extend-reflect-similar.mask.argb32.ref.png
new file mode 100644
index 0000000..5fc3448
Binary files /dev/null and b/test/reference/extend-reflect-similar.mask.argb32.ref.png differ
diff --git a/test/reference/extend-reflect-similar.mask.rgb24.ref.png b/test/reference/extend-reflect-similar.mask.rgb24.ref.png
new file mode 100644
index 0000000..5fc3448
Binary files /dev/null and b/test/reference/extend-reflect-similar.mask.rgb24.ref.png differ
diff --git a/test/reference/extend-reflect.mask.argb32.ref.png b/test/reference/extend-reflect.mask.argb32.ref.png
new file mode 100644
index 0000000..5fc3448
Binary files /dev/null and b/test/reference/extend-reflect.mask.argb32.ref.png differ
diff --git a/test/reference/extend-reflect.mask.rgb24.ref.png b/test/reference/extend-reflect.mask.rgb24.ref.png
new file mode 100644
index 0000000..5fc3448
Binary files /dev/null and b/test/reference/extend-reflect.mask.rgb24.ref.png differ
diff --git a/test/reference/extend-repeat-similar.mask.argb32.ref.png b/test/reference/extend-repeat-similar.mask.argb32.ref.png
new file mode 100644
index 0000000..81f0503
Binary files /dev/null and b/test/reference/extend-repeat-similar.mask.argb32.ref.png differ
diff --git a/test/reference/extend-repeat-similar.mask.rgb24.ref.png b/test/reference/extend-repeat-similar.mask.rgb24.ref.png
new file mode 100644
index 0000000..81f0503
Binary files /dev/null and b/test/reference/extend-repeat-similar.mask.rgb24.ref.png differ
diff --git a/test/reference/extend-repeat.mask.argb32.ref.png b/test/reference/extend-repeat.mask.argb32.ref.png
new file mode 100644
index 0000000..81f0503
Binary files /dev/null and b/test/reference/extend-repeat.mask.argb32.ref.png differ
diff --git a/test/reference/extend-repeat.mask.rgb24.ref.png b/test/reference/extend-repeat.mask.rgb24.ref.png
new file mode 100644
index 0000000..81f0503
Binary files /dev/null and b/test/reference/extend-repeat.mask.rgb24.ref.png differ
diff --git a/test/reference/extended-blend-alpha-mask.mask.argb32.ref.png b/test/reference/extended-blend-alpha-mask.mask.argb32.ref.png
new file mode 100644
index 0000000..a1dd2a9
Binary files /dev/null and b/test/reference/extended-blend-alpha-mask.mask.argb32.ref.png differ
diff --git a/test/reference/extended-blend-alpha-mask.mask.rgb24.ref.png b/test/reference/extended-blend-alpha-mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..b5f12f1
Binary files /dev/null and b/test/reference/extended-blend-alpha-mask.mask.rgb24.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..4d56a21
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.rgb24.ref.png b/test/reference/extended-blend-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..86d0e2d
Binary files /dev/null and b/test/reference/extended-blend-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/extended-blend-mask.mask.argb32.ref.png b/test/reference/extended-blend-mask.mask.argb32.ref.png
new file mode 100644
index 0000000..5fa78e4
Binary files /dev/null and b/test/reference/extended-blend-mask.mask.argb32.ref.png differ
diff --git a/test/reference/extended-blend-mask.mask.rgb24.ref.png b/test/reference/extended-blend-mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..1c85474
Binary files /dev/null and b/test/reference/extended-blend-mask.mask.rgb24.ref.png differ
diff --git a/test/reference/extended-blend-solid-alpha.mask.argb32.ref.png b/test/reference/extended-blend-solid-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..4d56a21
Binary files /dev/null and b/test/reference/extended-blend-solid-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/extended-blend-solid-alpha.mask.rgb24.ref.png b/test/reference/extended-blend-solid-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..86d0e2d
Binary files /dev/null and b/test/reference/extended-blend-solid-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/extended-blend-solid.mask.argb32.ref.png b/test/reference/extended-blend-solid.mask.argb32.ref.png
new file mode 100644
index 0000000..902ef88
Binary files /dev/null and b/test/reference/extended-blend-solid.mask.argb32.ref.png differ
diff --git a/test/reference/extended-blend-solid.mask.rgb24.ref.png b/test/reference/extended-blend-solid.mask.rgb24.ref.png
new file mode 100644
index 0000000..4580e0d
Binary files /dev/null and b/test/reference/extended-blend-solid.mask.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..902ef88
Binary files /dev/null and b/test/reference/extended-blend.mask.argb32.ref.png 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..4580e0d
Binary files /dev/null and b/test/reference/extended-blend.mask.rgb24.ref.png differ
diff --git a/test/reference/fallback.base.argb32.ref.png b/test/reference/fallback.base.argb32.ref.png
new file mode 100644
index 0000000..c0c5f46
Binary files /dev/null and b/test/reference/fallback.base.argb32.ref.png differ
diff --git a/test/reference/fallback.base.rgb24.ref.png b/test/reference/fallback.base.rgb24.ref.png
new file mode 100644
index 0000000..18b6a7c
Binary files /dev/null and b/test/reference/fallback.base.rgb24.ref.png differ
diff --git a/test/reference/fallback.mask.argb32.ref.png b/test/reference/fallback.mask.argb32.ref.png
new file mode 100644
index 0000000..b7ce573
Binary files /dev/null and b/test/reference/fallback.mask.argb32.ref.png differ
diff --git a/test/reference/fallback.mask.rgb24.ref.png b/test/reference/fallback.mask.rgb24.ref.png
new file mode 100644
index 0000000..16d3c14
Binary files /dev/null and b/test/reference/fallback.mask.rgb24.ref.png differ
diff --git a/test/reference/fallback.traps.argb32.ref.png b/test/reference/fallback.traps.argb32.ref.png
new file mode 100644
index 0000000..b7ce573
Binary files /dev/null and b/test/reference/fallback.traps.argb32.ref.png differ
diff --git a/test/reference/fallback.traps.rgb24.ref.png b/test/reference/fallback.traps.rgb24.ref.png
new file mode 100644
index 0000000..16d3c14
Binary files /dev/null and b/test/reference/fallback.traps.rgb24.ref.png differ
diff --git a/test/reference/fill-alpha-pattern.mask.argb32.ref.png b/test/reference/fill-alpha-pattern.mask.argb32.ref.png
new file mode 100644
index 0000000..4344f23
Binary files /dev/null and b/test/reference/fill-alpha-pattern.mask.argb32.ref.png differ
diff --git a/test/reference/fill-alpha-pattern.mask.rgb24.ref.png b/test/reference/fill-alpha-pattern.mask.rgb24.ref.png
new file mode 100644
index 0000000..4344f23
Binary files /dev/null and b/test/reference/fill-alpha-pattern.mask.rgb24.ref.png differ
diff --git a/test/reference/fill-alpha.mask.argb32.ref.png b/test/reference/fill-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..9de7b50
Binary files /dev/null and b/test/reference/fill-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/fill-alpha.mask.rgb24.ref.png b/test/reference/fill-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..9de7b50
Binary files /dev/null and b/test/reference/fill-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/fill-and-stroke-alpha-add.mask.argb32.ref.png b/test/reference/fill-and-stroke-alpha-add.mask.argb32.ref.png
new file mode 100644
index 0000000..c804c7a
Binary files /dev/null and b/test/reference/fill-and-stroke-alpha-add.mask.argb32.ref.png differ
diff --git a/test/reference/fill-and-stroke-alpha-add.mask.rgb24.ref.png b/test/reference/fill-and-stroke-alpha-add.mask.rgb24.ref.png
new file mode 100644
index 0000000..c804c7a
Binary files /dev/null and b/test/reference/fill-and-stroke-alpha-add.mask.rgb24.ref.png differ
diff --git a/test/reference/fill-and-stroke-alpha.mask.argb32.ref.png b/test/reference/fill-and-stroke-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..e22ebf9
Binary files /dev/null and b/test/reference/fill-and-stroke-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/fill-and-stroke-alpha.mask.rgb24.ref.png b/test/reference/fill-and-stroke-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..e22ebf9
Binary files /dev/null and b/test/reference/fill-and-stroke-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/fill-and-stroke.mask.argb32.ref.png b/test/reference/fill-and-stroke.mask.argb32.ref.png
new file mode 100644
index 0000000..b51f4b0
Binary files /dev/null and b/test/reference/fill-and-stroke.mask.argb32.ref.png differ
diff --git a/test/reference/fill-and-stroke.mask.rgb24.ref.png b/test/reference/fill-and-stroke.mask.rgb24.ref.png
new file mode 100644
index 0000000..4017293
Binary files /dev/null and b/test/reference/fill-and-stroke.mask.rgb24.ref.png differ
diff --git a/test/reference/fill-degenerate-sort-order.mask.argb32.ref.png b/test/reference/fill-degenerate-sort-order.mask.argb32.ref.png
new file mode 100644
index 0000000..38bb1a0
Binary files /dev/null and b/test/reference/fill-degenerate-sort-order.mask.argb32.ref.png differ
diff --git a/test/reference/fill-degenerate-sort-order.mask.rgb24.ref.png b/test/reference/fill-degenerate-sort-order.mask.rgb24.ref.png
new file mode 100644
index 0000000..c392c21
Binary files /dev/null and b/test/reference/fill-degenerate-sort-order.mask.rgb24.ref.png differ
diff --git a/test/reference/fill-disjoint.base.argb32.ref.png b/test/reference/fill-disjoint.base.argb32.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/fill-disjoint.base.argb32.ref.png differ
diff --git a/test/reference/fill-disjoint.base.rgb24.ref.png b/test/reference/fill-disjoint.base.rgb24.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/fill-disjoint.base.rgb24.ref.png differ
diff --git a/test/reference/fill-disjoint.mask.argb32.ref.png b/test/reference/fill-disjoint.mask.argb32.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/fill-disjoint.mask.argb32.ref.png differ
diff --git a/test/reference/fill-disjoint.mask.rgb24.ref.png b/test/reference/fill-disjoint.mask.rgb24.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/fill-disjoint.mask.rgb24.ref.png differ
diff --git a/test/reference/fill-disjoint.traps.argb32.ref.png b/test/reference/fill-disjoint.traps.argb32.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/fill-disjoint.traps.argb32.ref.png differ
diff --git a/test/reference/fill-disjoint.traps.rgb24.ref.png b/test/reference/fill-disjoint.traps.rgb24.ref.png
new file mode 100644
index 0000000..da9a3b1
Binary files /dev/null and b/test/reference/fill-disjoint.traps.rgb24.ref.png differ
diff --git a/test/reference/fill-empty.mask.argb32.ref.png b/test/reference/fill-empty.mask.argb32.ref.png
new file mode 100644
index 0000000..8c26f7e
Binary files /dev/null and b/test/reference/fill-empty.mask.argb32.ref.png differ
diff --git a/test/reference/fill-empty.mask.rgb24.ref.png b/test/reference/fill-empty.mask.rgb24.ref.png
new file mode 100644
index 0000000..dc7a8a0
Binary files /dev/null and b/test/reference/fill-empty.mask.rgb24.ref.png differ
diff --git a/test/reference/fill-image.mask.argb32.ref.png b/test/reference/fill-image.mask.argb32.ref.png
new file mode 100644
index 0000000..068fbb7
Binary files /dev/null and b/test/reference/fill-image.mask.argb32.ref.png differ
diff --git a/test/reference/fill-image.mask.rgb24.ref.png b/test/reference/fill-image.mask.rgb24.ref.png
new file mode 100644
index 0000000..068fbb7
Binary files /dev/null and b/test/reference/fill-image.mask.rgb24.ref.png differ
diff --git a/test/reference/fill-missed-stop.mask.argb32.ref.png b/test/reference/fill-missed-stop.mask.argb32.ref.png
new file mode 100644
index 0000000..477eec9
Binary files /dev/null and b/test/reference/fill-missed-stop.mask.argb32.ref.png differ
diff --git a/test/reference/fill-missed-stop.mask.rgb24.ref.png b/test/reference/fill-missed-stop.mask.rgb24.ref.png
new file mode 100644
index 0000000..2e663f0
Binary files /dev/null and b/test/reference/fill-missed-stop.mask.rgb24.ref.png differ
diff --git a/test/reference/fill-rule.mask.argb32.ref.png b/test/reference/fill-rule.mask.argb32.ref.png
new file mode 100644
index 0000000..23e0a3a
Binary files /dev/null and b/test/reference/fill-rule.mask.argb32.ref.png differ
diff --git a/test/reference/fill-rule.mask.rgb24.ref.png b/test/reference/fill-rule.mask.rgb24.ref.png
new file mode 100644
index 0000000..55486e6
Binary files /dev/null and b/test/reference/fill-rule.mask.rgb24.ref.png differ
diff --git a/test/reference/filter-bilinear-extents.mask.argb32.ref.png b/test/reference/filter-bilinear-extents.mask.argb32.ref.png
new file mode 100644
index 0000000..797e798
Binary files /dev/null and b/test/reference/filter-bilinear-extents.mask.argb32.ref.png differ
diff --git a/test/reference/filter-bilinear-extents.mask.rgb24.ref.png b/test/reference/filter-bilinear-extents.mask.rgb24.ref.png
new file mode 100644
index 0000000..797e798
Binary files /dev/null and b/test/reference/filter-bilinear-extents.mask.rgb24.ref.png differ
diff --git a/test/reference/filter-nearest-offset.mask.argb32.ref.png b/test/reference/filter-nearest-offset.mask.argb32.ref.png
new file mode 100644
index 0000000..8cca9a1
Binary files /dev/null and b/test/reference/filter-nearest-offset.mask.argb32.ref.png differ
diff --git a/test/reference/filter-nearest-offset.mask.rgb24.ref.png b/test/reference/filter-nearest-offset.mask.rgb24.ref.png
new file mode 100644
index 0000000..8cca9a1
Binary files /dev/null and b/test/reference/filter-nearest-offset.mask.rgb24.ref.png differ
diff --git a/test/reference/filter-nearest-transformed.mask.argb32.ref.png b/test/reference/filter-nearest-transformed.mask.argb32.ref.png
new file mode 100644
index 0000000..24adf8b
Binary files /dev/null and b/test/reference/filter-nearest-transformed.mask.argb32.ref.png differ
diff --git a/test/reference/filter-nearest-transformed.mask.rgb24.ref.png b/test/reference/filter-nearest-transformed.mask.rgb24.ref.png
new file mode 100644
index 0000000..24adf8b
Binary files /dev/null and b/test/reference/filter-nearest-transformed.mask.rgb24.ref.png differ
diff --git a/test/reference/finer-grained-fallbacks.mask.argb32.ref.png b/test/reference/finer-grained-fallbacks.mask.argb32.ref.png
new file mode 100644
index 0000000..8cd99d0
Binary files /dev/null and b/test/reference/finer-grained-fallbacks.mask.argb32.ref.png differ
diff --git a/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png b/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png
new file mode 100644
index 0000000..5d6cd94
Binary files /dev/null and b/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png differ
diff --git a/test/reference/font-matrix-translation.mask.argb32.ref.png b/test/reference/font-matrix-translation.mask.argb32.ref.png
new file mode 100644
index 0000000..a4a1082
Binary files /dev/null and b/test/reference/font-matrix-translation.mask.argb32.ref.png differ
diff --git a/test/reference/font-matrix-translation.mask.rgb24.ref.png b/test/reference/font-matrix-translation.mask.rgb24.ref.png
new file mode 100644
index 0000000..a4a1082
Binary files /dev/null and b/test/reference/font-matrix-translation.mask.rgb24.ref.png differ
diff --git a/test/reference/font-matrix-translation.traps.argb32.ref.png b/test/reference/font-matrix-translation.traps.argb32.ref.png
new file mode 100644
index 0000000..a4a1082
Binary files /dev/null and b/test/reference/font-matrix-translation.traps.argb32.ref.png differ
diff --git a/test/reference/font-matrix-translation.traps.rgb24.ref.png b/test/reference/font-matrix-translation.traps.rgb24.ref.png
new file mode 100644
index 0000000..a4a1082
Binary files /dev/null and b/test/reference/font-matrix-translation.traps.rgb24.ref.png differ
diff --git a/test/reference/ft-show-glyphs-positioning.mask.argb32.ref.png b/test/reference/ft-show-glyphs-positioning.mask.argb32.ref.png
new file mode 100644
index 0000000..af6dcaf
Binary files /dev/null and b/test/reference/ft-show-glyphs-positioning.mask.argb32.ref.png differ
diff --git a/test/reference/ft-show-glyphs-positioning.mask.rgb24.ref.png b/test/reference/ft-show-glyphs-positioning.mask.rgb24.ref.png
new file mode 100644
index 0000000..af6dcaf
Binary files /dev/null and b/test/reference/ft-show-glyphs-positioning.mask.rgb24.ref.png differ
diff --git a/test/reference/ft-show-glyphs-positioning.traps.argb32.ref.png b/test/reference/ft-show-glyphs-positioning.traps.argb32.ref.png
new file mode 100644
index 0000000..af6dcaf
Binary files /dev/null and b/test/reference/ft-show-glyphs-positioning.traps.argb32.ref.png differ
diff --git a/test/reference/ft-show-glyphs-positioning.traps.rgb24.ref.png b/test/reference/ft-show-glyphs-positioning.traps.rgb24.ref.png
new file mode 100644
index 0000000..af6dcaf
Binary files /dev/null and b/test/reference/ft-show-glyphs-positioning.traps.rgb24.ref.png differ
diff --git a/test/reference/ft-show-glyphs-table.mask.argb32.ref.png b/test/reference/ft-show-glyphs-table.mask.argb32.ref.png
new file mode 100644
index 0000000..ed69124
Binary files /dev/null and b/test/reference/ft-show-glyphs-table.mask.argb32.ref.png differ
diff --git a/test/reference/ft-show-glyphs-table.mask.rgb24.ref.png b/test/reference/ft-show-glyphs-table.mask.rgb24.ref.png
new file mode 100644
index 0000000..ed69124
Binary files /dev/null and b/test/reference/ft-show-glyphs-table.mask.rgb24.ref.png differ
diff --git a/test/reference/ft-show-glyphs-table.traps.argb32.ref.png b/test/reference/ft-show-glyphs-table.traps.argb32.ref.png
new file mode 100644
index 0000000..ed69124
Binary files /dev/null and b/test/reference/ft-show-glyphs-table.traps.argb32.ref.png differ
diff --git a/test/reference/ft-show-glyphs-table.traps.rgb24.ref.png b/test/reference/ft-show-glyphs-table.traps.rgb24.ref.png
new file mode 100644
index 0000000..ed69124
Binary files /dev/null and b/test/reference/ft-show-glyphs-table.traps.rgb24.ref.png differ
diff --git a/test/reference/ft-text-antialias-none.mask.argb32.ref.png b/test/reference/ft-text-antialias-none.mask.argb32.ref.png
new file mode 100644
index 0000000..c638c9e
Binary files /dev/null and b/test/reference/ft-text-antialias-none.mask.argb32.ref.png differ
diff --git a/test/reference/ft-text-antialias-none.mask.rgb24.ref.png b/test/reference/ft-text-antialias-none.mask.rgb24.ref.png
new file mode 100644
index 0000000..c638c9e
Binary files /dev/null and b/test/reference/ft-text-antialias-none.mask.rgb24.ref.png differ
diff --git a/test/reference/ft-text-vertical-layout-type1.mask.argb32.ref.png b/test/reference/ft-text-vertical-layout-type1.mask.argb32.ref.png
new file mode 100644
index 0000000..4941965
Binary files /dev/null and b/test/reference/ft-text-vertical-layout-type1.mask.argb32.ref.png differ
diff --git a/test/reference/ft-text-vertical-layout-type1.mask.rgb24.ref.png b/test/reference/ft-text-vertical-layout-type1.mask.rgb24.ref.png
new file mode 100644
index 0000000..4941965
Binary files /dev/null and b/test/reference/ft-text-vertical-layout-type1.mask.rgb24.ref.png differ
diff --git a/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png b/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png
new file mode 100644
index 0000000..7f7b428
Binary files /dev/null and b/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png differ
diff --git a/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png b/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png
new file mode 100644
index 0000000..7f7b428
Binary files /dev/null and b/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png differ
diff --git a/test/reference/get-group-target.mask.argb32.ref.png b/test/reference/get-group-target.mask.argb32.ref.png
new file mode 100644
index 0000000..d162775
Binary files /dev/null and b/test/reference/get-group-target.mask.argb32.ref.png differ
diff --git a/test/reference/get-group-target.mask.rgb24.ref.png b/test/reference/get-group-target.mask.rgb24.ref.png
new file mode 100644
index 0000000..d162775
Binary files /dev/null and b/test/reference/get-group-target.mask.rgb24.ref.png differ
diff --git a/test/reference/gl-surface-source.base.argb32.ref.png b/test/reference/gl-surface-source.base.argb32.ref.png
new file mode 100644
index 0000000..0182972
Binary files /dev/null and b/test/reference/gl-surface-source.base.argb32.ref.png differ
diff --git a/test/reference/gl-surface-source.base.rgb24.ref.png b/test/reference/gl-surface-source.base.rgb24.ref.png
new file mode 100644
index 0000000..0d68a82
Binary files /dev/null and b/test/reference/gl-surface-source.base.rgb24.ref.png differ
diff --git a/test/reference/gl-surface-source.mask.argb32.ref.png b/test/reference/gl-surface-source.mask.argb32.ref.png
new file mode 100644
index 0000000..0182972
Binary files /dev/null and b/test/reference/gl-surface-source.mask.argb32.ref.png differ
diff --git a/test/reference/gl-surface-source.mask.rgb24.ref.png b/test/reference/gl-surface-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..0d68a82
Binary files /dev/null and b/test/reference/gl-surface-source.mask.rgb24.ref.png differ
diff --git a/test/reference/gl-surface-source.traps.argb32.ref.png b/test/reference/gl-surface-source.traps.argb32.ref.png
new file mode 100644
index 0000000..0182972
Binary files /dev/null and b/test/reference/gl-surface-source.traps.argb32.ref.png differ
diff --git a/test/reference/gl-surface-source.traps.rgb24.ref.png b/test/reference/gl-surface-source.traps.rgb24.ref.png
new file mode 100644
index 0000000..0d68a82
Binary files /dev/null and b/test/reference/gl-surface-source.traps.rgb24.ref.png differ
diff --git a/test/reference/glyph-cache-pressure.mask.argb32.ref.png b/test/reference/glyph-cache-pressure.mask.argb32.ref.png
new file mode 100644
index 0000000..a6e1b06
Binary files /dev/null and b/test/reference/glyph-cache-pressure.mask.argb32.ref.png differ
diff --git a/test/reference/glyph-cache-pressure.mask.rgb24.ref.png b/test/reference/glyph-cache-pressure.mask.rgb24.ref.png
new file mode 100644
index 0000000..a6e1b06
Binary files /dev/null and b/test/reference/glyph-cache-pressure.mask.rgb24.ref.png differ
diff --git a/test/reference/glyph-cache-pressure.traps.argb32.ref.png b/test/reference/glyph-cache-pressure.traps.argb32.ref.png
new file mode 100644
index 0000000..a6e1b06
Binary files /dev/null and b/test/reference/glyph-cache-pressure.traps.argb32.ref.png differ
diff --git a/test/reference/glyph-cache-pressure.traps.rgb24.ref.png b/test/reference/glyph-cache-pressure.traps.rgb24.ref.png
new file mode 100644
index 0000000..a6e1b06
Binary files /dev/null and b/test/reference/glyph-cache-pressure.traps.rgb24.ref.png differ
diff --git a/test/reference/gradient-alpha.mask.argb32.ref.png b/test/reference/gradient-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..f64b26a
Binary files /dev/null and b/test/reference/gradient-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/gradient-alpha.mask.rgb24.ref.png b/test/reference/gradient-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..3c7258d
Binary files /dev/null and b/test/reference/gradient-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/gradient-constant-alpha.mask.argb32.ref.png b/test/reference/gradient-constant-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..7f49e2c
Binary files /dev/null and b/test/reference/gradient-constant-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/gradient-constant-alpha.mask.rgb24.ref.png b/test/reference/gradient-constant-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..69cd596
Binary files /dev/null and b/test/reference/gradient-constant-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/gradient-zero-stops-mask.mask.argb32.ref.png b/test/reference/gradient-zero-stops-mask.mask.argb32.ref.png
new file mode 100644
index 0000000..0a50f4c
Binary files /dev/null and b/test/reference/gradient-zero-stops-mask.mask.argb32.ref.png differ
diff --git a/test/reference/gradient-zero-stops-mask.mask.rgb24.ref.png b/test/reference/gradient-zero-stops-mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..21465ce
Binary files /dev/null and b/test/reference/gradient-zero-stops-mask.mask.rgb24.ref.png differ
diff --git a/test/reference/gradient-zero-stops.mask.argb32.ref.png b/test/reference/gradient-zero-stops.mask.argb32.ref.png
new file mode 100644
index 0000000..0a50f4c
Binary files /dev/null and b/test/reference/gradient-zero-stops.mask.argb32.ref.png differ
diff --git a/test/reference/gradient-zero-stops.mask.rgb24.ref.png b/test/reference/gradient-zero-stops.mask.rgb24.ref.png
new file mode 100644
index 0000000..21465ce
Binary files /dev/null and b/test/reference/gradient-zero-stops.mask.rgb24.ref.png differ
diff --git a/test/reference/group-clip.mask.argb32.ref.png b/test/reference/group-clip.mask.argb32.ref.png
new file mode 100644
index 0000000..7b8a753
Binary files /dev/null and b/test/reference/group-clip.mask.argb32.ref.png differ
diff --git a/test/reference/group-clip.mask.rgb24.ref.png b/test/reference/group-clip.mask.rgb24.ref.png
new file mode 100644
index 0000000..7b8a753
Binary files /dev/null and b/test/reference/group-clip.mask.rgb24.ref.png differ
diff --git a/test/reference/group-paint.mask.argb32.ref.png b/test/reference/group-paint.mask.argb32.ref.png
new file mode 100644
index 0000000..1ed070c
Binary files /dev/null and b/test/reference/group-paint.mask.argb32.ref.png differ
diff --git a/test/reference/group-paint.mask.rgb24.ref.png b/test/reference/group-paint.mask.rgb24.ref.png
new file mode 100644
index 0000000..1ed070c
Binary files /dev/null and b/test/reference/group-paint.mask.rgb24.ref.png differ
diff --git a/test/reference/group-unaligned.mask.argb32.ref.png b/test/reference/group-unaligned.mask.argb32.ref.png
new file mode 100644
index 0000000..beb0ae2
Binary files /dev/null and b/test/reference/group-unaligned.mask.argb32.ref.png differ
diff --git a/test/reference/group-unaligned.mask.rgb24.ref.png b/test/reference/group-unaligned.mask.rgb24.ref.png
new file mode 100644
index 0000000..beb0ae2
Binary files /dev/null and b/test/reference/group-unaligned.mask.rgb24.ref.png differ
diff --git a/test/reference/halo-transform.mask.argb32.ref.png b/test/reference/halo-transform.mask.argb32.ref.png
new file mode 100644
index 0000000..96c6f42
Binary files /dev/null and b/test/reference/halo-transform.mask.argb32.ref.png differ
diff --git a/test/reference/halo-transform.mask.rgb24.ref.png b/test/reference/halo-transform.mask.rgb24.ref.png
new file mode 100644
index 0000000..96c6f42
Binary files /dev/null and b/test/reference/halo-transform.mask.rgb24.ref.png differ
diff --git a/test/reference/halo-transform.traps.argb32.ref.png b/test/reference/halo-transform.traps.argb32.ref.png
new file mode 100644
index 0000000..96c6f42
Binary files /dev/null and b/test/reference/halo-transform.traps.argb32.ref.png differ
diff --git a/test/reference/halo-transform.traps.rgb24.ref.png b/test/reference/halo-transform.traps.rgb24.ref.png
new file mode 100644
index 0000000..96c6f42
Binary files /dev/null and b/test/reference/halo-transform.traps.rgb24.ref.png differ
diff --git a/test/reference/halo.mask.argb32.ref.png b/test/reference/halo.mask.argb32.ref.png
new file mode 100644
index 0000000..191ee47
Binary files /dev/null and b/test/reference/halo.mask.argb32.ref.png differ
diff --git a/test/reference/halo.mask.rgb24.ref.png b/test/reference/halo.mask.rgb24.ref.png
new file mode 100644
index 0000000..191ee47
Binary files /dev/null and b/test/reference/halo.mask.rgb24.ref.png differ
diff --git a/test/reference/halo.traps.argb32.ref.png b/test/reference/halo.traps.argb32.ref.png
new file mode 100644
index 0000000..191ee47
Binary files /dev/null and b/test/reference/halo.traps.argb32.ref.png differ
diff --git a/test/reference/halo.traps.rgb24.ref.png b/test/reference/halo.traps.rgb24.ref.png
new file mode 100644
index 0000000..191ee47
Binary files /dev/null and b/test/reference/halo.traps.rgb24.ref.png differ
diff --git a/test/reference/hatchings.mask.argb32.ref.png b/test/reference/hatchings.mask.argb32.ref.png
new file mode 100644
index 0000000..77fe853
Binary files /dev/null and b/test/reference/hatchings.mask.argb32.ref.png differ
diff --git a/test/reference/hatchings.mask.rgb24.ref.png b/test/reference/hatchings.mask.rgb24.ref.png
new file mode 100644
index 0000000..77fe853
Binary files /dev/null and b/test/reference/hatchings.mask.rgb24.ref.png differ
diff --git a/test/reference/horizontal-clip.mask.argb32.ref.png b/test/reference/horizontal-clip.mask.argb32.ref.png
new file mode 100644
index 0000000..43dd07f
Binary files /dev/null and b/test/reference/horizontal-clip.mask.argb32.ref.png differ
diff --git a/test/reference/horizontal-clip.mask.rgb24.ref.png b/test/reference/horizontal-clip.mask.rgb24.ref.png
new file mode 100644
index 0000000..43dd07f
Binary files /dev/null and b/test/reference/horizontal-clip.mask.rgb24.ref.png differ
diff --git a/test/reference/huge-linear.mask.argb32.ref.png b/test/reference/huge-linear.mask.argb32.ref.png
new file mode 100644
index 0000000..f89217b
Binary files /dev/null and b/test/reference/huge-linear.mask.argb32.ref.png differ
diff --git a/test/reference/huge-linear.mask.rgb24.ref.png b/test/reference/huge-linear.mask.rgb24.ref.png
new file mode 100644
index 0000000..f89217b
Binary files /dev/null and b/test/reference/huge-linear.mask.rgb24.ref.png differ
diff --git a/test/reference/huge-radial.mask.argb32.ref.png b/test/reference/huge-radial.mask.argb32.ref.png
new file mode 100644
index 0000000..541bb30
Binary files /dev/null and b/test/reference/huge-radial.mask.argb32.ref.png differ
diff --git a/test/reference/huge-radial.mask.rgb24.ref.png b/test/reference/huge-radial.mask.rgb24.ref.png
new file mode 100644
index 0000000..541bb30
Binary files /dev/null and b/test/reference/huge-radial.mask.rgb24.ref.png differ
diff --git a/test/reference/image-bug-710072-aligned.mask.argb32.ref.png b/test/reference/image-bug-710072-aligned.mask.argb32.ref.png
new file mode 100644
index 0000000..42abd20
Binary files /dev/null and b/test/reference/image-bug-710072-aligned.mask.argb32.ref.png differ
diff --git a/test/reference/image-bug-710072-aligned.mask.rgb24.ref.png b/test/reference/image-bug-710072-aligned.mask.rgb24.ref.png
new file mode 100644
index 0000000..42abd20
Binary files /dev/null and b/test/reference/image-bug-710072-aligned.mask.rgb24.ref.png differ
diff --git a/test/reference/image-bug-710072-unaligned.mask.argb32.ref.png b/test/reference/image-bug-710072-unaligned.mask.argb32.ref.png
new file mode 100644
index 0000000..13efa30
Binary files /dev/null and b/test/reference/image-bug-710072-unaligned.mask.argb32.ref.png differ
diff --git a/test/reference/image-bug-710072-unaligned.mask.rgb24.ref.png b/test/reference/image-bug-710072-unaligned.mask.rgb24.ref.png
new file mode 100644
index 0000000..13efa30
Binary files /dev/null and b/test/reference/image-bug-710072-unaligned.mask.rgb24.ref.png differ
diff --git a/test/reference/image-surface-source.mask.argb32.ref.png b/test/reference/image-surface-source.mask.argb32.ref.png
new file mode 100644
index 0000000..0182972
Binary files /dev/null and b/test/reference/image-surface-source.mask.argb32.ref.png differ
diff --git a/test/reference/image-surface-source.mask.rgb24.ref.png b/test/reference/image-surface-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..0d68a82
Binary files /dev/null and b/test/reference/image-surface-source.mask.rgb24.ref.png differ
diff --git a/test/reference/implicit-close.mask.argb32.ref.png b/test/reference/implicit-close.mask.argb32.ref.png
new file mode 100644
index 0000000..f15f8a3
Binary files /dev/null and b/test/reference/implicit-close.mask.argb32.ref.png differ
diff --git a/test/reference/implicit-close.mask.rgb24.ref.png b/test/reference/implicit-close.mask.rgb24.ref.png
new file mode 100644
index 0000000..f15f8a3
Binary files /dev/null and b/test/reference/implicit-close.mask.rgb24.ref.png differ
diff --git a/test/reference/infinite-join.mask.argb32.ref.png b/test/reference/infinite-join.mask.argb32.ref.png
new file mode 100644
index 0000000..54a9112
Binary files /dev/null and b/test/reference/infinite-join.mask.argb32.ref.png differ
diff --git a/test/reference/infinite-join.mask.rgb24.ref.png b/test/reference/infinite-join.mask.rgb24.ref.png
new file mode 100644
index 0000000..54a9112
Binary files /dev/null and b/test/reference/infinite-join.mask.rgb24.ref.png differ
diff --git a/test/reference/inverse-text.base.argb32.ref.png b/test/reference/inverse-text.base.argb32.ref.png
new file mode 100644
index 0000000..b7bbb97
Binary files /dev/null and b/test/reference/inverse-text.base.argb32.ref.png differ
diff --git a/test/reference/inverse-text.base.rgb24.ref.png b/test/reference/inverse-text.base.rgb24.ref.png
new file mode 100644
index 0000000..b7bbb97
Binary files /dev/null and b/test/reference/inverse-text.base.rgb24.ref.png differ
diff --git a/test/reference/inverse-text.mask.argb32.ref.png b/test/reference/inverse-text.mask.argb32.ref.png
new file mode 100644
index 0000000..b7bbb97
Binary files /dev/null and b/test/reference/inverse-text.mask.argb32.ref.png differ
diff --git a/test/reference/inverse-text.mask.rgb24.ref.png b/test/reference/inverse-text.mask.rgb24.ref.png
new file mode 100644
index 0000000..b7bbb97
Binary files /dev/null and b/test/reference/inverse-text.mask.rgb24.ref.png differ
diff --git a/test/reference/inverse-text.traps.argb32.ref.png b/test/reference/inverse-text.traps.argb32.ref.png
new file mode 100644
index 0000000..b7bbb97
Binary files /dev/null and b/test/reference/inverse-text.traps.argb32.ref.png differ
diff --git a/test/reference/inverse-text.traps.rgb24.ref.png b/test/reference/inverse-text.traps.rgb24.ref.png
new file mode 100644
index 0000000..b7bbb97
Binary files /dev/null and b/test/reference/inverse-text.traps.rgb24.ref.png differ
diff --git a/test/reference/joins-loop.mask.argb32.ref.png b/test/reference/joins-loop.mask.argb32.ref.png
new file mode 100644
index 0000000..8e3f25a
Binary files /dev/null and b/test/reference/joins-loop.mask.argb32.ref.png differ
diff --git a/test/reference/joins-loop.mask.rgb24.ref.png b/test/reference/joins-loop.mask.rgb24.ref.png
new file mode 100644
index 0000000..8e3f25a
Binary files /dev/null and b/test/reference/joins-loop.mask.rgb24.ref.png differ
diff --git a/test/reference/joins-retrace.mask.argb32.ref.png b/test/reference/joins-retrace.mask.argb32.ref.png
new file mode 100644
index 0000000..22b0ecf
Binary files /dev/null and b/test/reference/joins-retrace.mask.argb32.ref.png differ
diff --git a/test/reference/joins-retrace.mask.rgb24.ref.png b/test/reference/joins-retrace.mask.rgb24.ref.png
new file mode 100644
index 0000000..22b0ecf
Binary files /dev/null and b/test/reference/joins-retrace.mask.rgb24.ref.png differ
diff --git a/test/reference/joins-star.mask.argb32.ref.png b/test/reference/joins-star.mask.argb32.ref.png
new file mode 100644
index 0000000..76a541c
Binary files /dev/null and b/test/reference/joins-star.mask.argb32.ref.png differ
diff --git a/test/reference/joins-star.mask.rgb24.ref.png b/test/reference/joins-star.mask.rgb24.ref.png
new file mode 100644
index 0000000..76a541c
Binary files /dev/null and b/test/reference/joins-star.mask.rgb24.ref.png differ
diff --git a/test/reference/joins.mask.argb32.ref.png b/test/reference/joins.mask.argb32.ref.png
new file mode 100644
index 0000000..a1d069d
Binary files /dev/null and b/test/reference/joins.mask.argb32.ref.png differ
diff --git a/test/reference/joins.mask.rgb24.ref.png b/test/reference/joins.mask.rgb24.ref.png
new file mode 100644
index 0000000..a1d069d
Binary files /dev/null and b/test/reference/joins.mask.rgb24.ref.png differ
diff --git a/test/reference/large-clip.mask.argb32.ref.png b/test/reference/large-clip.mask.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/large-clip.mask.argb32.ref.png differ
diff --git a/test/reference/large-clip.mask.rgb24.ref.png b/test/reference/large-clip.mask.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/large-clip.mask.rgb24.ref.png differ
diff --git a/test/reference/large-font.mask.argb32.ref.png b/test/reference/large-font.mask.argb32.ref.png
new file mode 100644
index 0000000..503061a
Binary files /dev/null and b/test/reference/large-font.mask.argb32.ref.png differ
diff --git a/test/reference/large-font.mask.rgb24.ref.png b/test/reference/large-font.mask.rgb24.ref.png
new file mode 100644
index 0000000..503061a
Binary files /dev/null and b/test/reference/large-font.mask.rgb24.ref.png differ
diff --git a/test/reference/large-source-roi.mask.argb32.ref.png b/test/reference/large-source-roi.mask.argb32.ref.png
new file mode 100644
index 0000000..216a065
Binary files /dev/null and b/test/reference/large-source-roi.mask.argb32.ref.png differ
diff --git a/test/reference/large-source-roi.mask.rgb24.ref.png b/test/reference/large-source-roi.mask.rgb24.ref.png
new file mode 100644
index 0000000..216a065
Binary files /dev/null and b/test/reference/large-source-roi.mask.rgb24.ref.png differ
diff --git a/test/reference/large-source.mask.argb32.ref.png b/test/reference/large-source.mask.argb32.ref.png
new file mode 100644
index 0000000..a54455f
Binary files /dev/null and b/test/reference/large-source.mask.argb32.ref.png differ
diff --git a/test/reference/large-source.mask.rgb24.ref.png b/test/reference/large-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..a54455f
Binary files /dev/null and b/test/reference/large-source.mask.rgb24.ref.png differ
diff --git a/test/reference/large-twin-antialias-mixed.mask.argb32.ref.png b/test/reference/large-twin-antialias-mixed.mask.argb32.ref.png
new file mode 100644
index 0000000..ace463b
Binary files /dev/null and b/test/reference/large-twin-antialias-mixed.mask.argb32.ref.png differ
diff --git a/test/reference/large-twin-antialias-mixed.mask.rgb24.ref.png b/test/reference/large-twin-antialias-mixed.mask.rgb24.ref.png
new file mode 100644
index 0000000..ace463b
Binary files /dev/null and b/test/reference/large-twin-antialias-mixed.mask.rgb24.ref.png differ
diff --git a/test/reference/leaky-dash.mask.argb32.ref.png b/test/reference/leaky-dash.mask.argb32.ref.png
new file mode 100644
index 0000000..0973ece
Binary files /dev/null and b/test/reference/leaky-dash.mask.argb32.ref.png differ
diff --git a/test/reference/leaky-dash.mask.rgb24.ref.png b/test/reference/leaky-dash.mask.rgb24.ref.png
new file mode 100644
index 0000000..0973ece
Binary files /dev/null and b/test/reference/leaky-dash.mask.rgb24.ref.png differ
diff --git a/test/reference/leaky-dashed-rectangle.mask.argb32.ref.png b/test/reference/leaky-dashed-rectangle.mask.argb32.ref.png
new file mode 100644
index 0000000..05f4584
Binary files /dev/null and b/test/reference/leaky-dashed-rectangle.mask.argb32.ref.png differ
diff --git a/test/reference/leaky-dashed-rectangle.mask.rgb24.ref.png b/test/reference/leaky-dashed-rectangle.mask.rgb24.ref.png
new file mode 100644
index 0000000..05f4584
Binary files /dev/null and b/test/reference/leaky-dashed-rectangle.mask.rgb24.ref.png differ
diff --git a/test/reference/leaky-dashed-stroke.mask.argb32.ref.png b/test/reference/leaky-dashed-stroke.mask.argb32.ref.png
new file mode 100644
index 0000000..ae64dae
Binary files /dev/null and b/test/reference/leaky-dashed-stroke.mask.argb32.ref.png differ
diff --git a/test/reference/leaky-dashed-stroke.mask.rgb24.ref.png b/test/reference/leaky-dashed-stroke.mask.rgb24.ref.png
new file mode 100644
index 0000000..ae64dae
Binary files /dev/null and b/test/reference/leaky-dashed-stroke.mask.rgb24.ref.png differ
diff --git a/test/reference/leaky-polygon.mask.argb32.ref.png b/test/reference/leaky-polygon.mask.argb32.ref.png
new file mode 100644
index 0000000..d2a06a3
Binary files /dev/null and b/test/reference/leaky-polygon.mask.argb32.ref.png differ
diff --git a/test/reference/leaky-polygon.mask.rgb24.ref.png b/test/reference/leaky-polygon.mask.rgb24.ref.png
new file mode 100644
index 0000000..d2a06a3
Binary files /dev/null and b/test/reference/leaky-polygon.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png b/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png
new file mode 100644
index 0000000..e6cdcc2
Binary files /dev/null and b/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png b/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png
new file mode 100644
index 0000000..e6cdcc2
Binary files /dev/null and b/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png b/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png
new file mode 100644
index 0000000..8cd4d31
Binary files /dev/null and b/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png b/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png
new file mode 100644
index 0000000..8cd4d31
Binary files /dev/null and b/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png b/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png
new file mode 100644
index 0000000..8cd4d31
Binary files /dev/null and b/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png b/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png
new file mode 100644
index 0000000..8cd4d31
Binary files /dev/null and b/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png b/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png b/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flipped.mask.argb32.ref.png b/test/reference/line-width-large-overlap-flipped.mask.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flipped.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flipped.mask.rgb24.ref.png b/test/reference/line-width-large-overlap-flipped.mask.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flipped.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flipped.traps.argb32.ref.png b/test/reference/line-width-large-overlap-flipped.traps.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flipped.traps.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flipped.traps.rgb24.ref.png b/test/reference/line-width-large-overlap-flipped.traps.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flipped.traps.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png b/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png b/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flopped.mask.argb32.ref.png b/test/reference/line-width-large-overlap-flopped.mask.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flopped.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flopped.mask.rgb24.ref.png b/test/reference/line-width-large-overlap-flopped.mask.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flopped.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flopped.traps.argb32.ref.png b/test/reference/line-width-large-overlap-flopped.traps.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flopped.traps.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-flopped.traps.rgb24.ref.png b/test/reference/line-width-large-overlap-flopped.traps.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-flopped.traps.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-offset.base.argb32.ref.png b/test/reference/line-width-large-overlap-offset.base.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-offset.base.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png b/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-offset.mask.argb32.ref.png b/test/reference/line-width-large-overlap-offset.mask.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-offset.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-offset.mask.rgb24.ref.png b/test/reference/line-width-large-overlap-offset.mask.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-offset.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-offset.traps.argb32.ref.png b/test/reference/line-width-large-overlap-offset.traps.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-offset.traps.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-offset.traps.rgb24.ref.png b/test/reference/line-width-large-overlap-offset.traps.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap-offset.traps.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png b/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png
new file mode 100644
index 0000000..87fe752
Binary files /dev/null and b/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png b/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png
new file mode 100644
index 0000000..87fe752
Binary files /dev/null and b/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-rotated.mask.argb32.ref.png b/test/reference/line-width-large-overlap-rotated.mask.argb32.ref.png
new file mode 100644
index 0000000..35dca5c
Binary files /dev/null and b/test/reference/line-width-large-overlap-rotated.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-rotated.mask.rgb24.ref.png b/test/reference/line-width-large-overlap-rotated.mask.rgb24.ref.png
new file mode 100644
index 0000000..35dca5c
Binary files /dev/null and b/test/reference/line-width-large-overlap-rotated.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap-rotated.traps.argb32.ref.png b/test/reference/line-width-large-overlap-rotated.traps.argb32.ref.png
new file mode 100644
index 0000000..35dca5c
Binary files /dev/null and b/test/reference/line-width-large-overlap-rotated.traps.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap-rotated.traps.rgb24.ref.png b/test/reference/line-width-large-overlap-rotated.traps.rgb24.ref.png
new file mode 100644
index 0000000..35dca5c
Binary files /dev/null and b/test/reference/line-width-large-overlap-rotated.traps.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap.base.argb32.ref.png b/test/reference/line-width-large-overlap.base.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap.base.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap.base.rgb24.ref.png b/test/reference/line-width-large-overlap.base.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap.base.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap.mask.argb32.ref.png b/test/reference/line-width-large-overlap.mask.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap.mask.rgb24.ref.png b/test/reference/line-width-large-overlap.mask.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-large-overlap.traps.argb32.ref.png b/test/reference/line-width-large-overlap.traps.argb32.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap.traps.argb32.ref.png differ
diff --git a/test/reference/line-width-large-overlap.traps.rgb24.ref.png b/test/reference/line-width-large-overlap.traps.rgb24.ref.png
new file mode 100644
index 0000000..3c3464b
Binary files /dev/null and b/test/reference/line-width-large-overlap.traps.rgb24.ref.png differ
diff --git a/test/reference/line-width-overlap-dashed.mask.argb32.ref.png b/test/reference/line-width-overlap-dashed.mask.argb32.ref.png
new file mode 100644
index 0000000..0de187d
Binary files /dev/null and b/test/reference/line-width-overlap-dashed.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png b/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png
new file mode 100644
index 0000000..0de187d
Binary files /dev/null and b/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-overlap-flipped.mask.argb32.ref.png b/test/reference/line-width-overlap-flipped.mask.argb32.ref.png
new file mode 100644
index 0000000..13d70c8
Binary files /dev/null and b/test/reference/line-width-overlap-flipped.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-overlap-flipped.mask.rgb24.ref.png b/test/reference/line-width-overlap-flipped.mask.rgb24.ref.png
new file mode 100644
index 0000000..13d70c8
Binary files /dev/null and b/test/reference/line-width-overlap-flipped.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-overlap-flopped.mask.argb32.ref.png b/test/reference/line-width-overlap-flopped.mask.argb32.ref.png
new file mode 100644
index 0000000..13d70c8
Binary files /dev/null and b/test/reference/line-width-overlap-flopped.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-overlap-flopped.mask.rgb24.ref.png b/test/reference/line-width-overlap-flopped.mask.rgb24.ref.png
new file mode 100644
index 0000000..13d70c8
Binary files /dev/null and b/test/reference/line-width-overlap-flopped.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-overlap-offset.mask.argb32.ref.png b/test/reference/line-width-overlap-offset.mask.argb32.ref.png
new file mode 100644
index 0000000..eafa50b
Binary files /dev/null and b/test/reference/line-width-overlap-offset.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-overlap-offset.mask.rgb24.ref.png b/test/reference/line-width-overlap-offset.mask.rgb24.ref.png
new file mode 100644
index 0000000..eafa50b
Binary files /dev/null and b/test/reference/line-width-overlap-offset.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-overlap-offset.traps.argb32.ref.png b/test/reference/line-width-overlap-offset.traps.argb32.ref.png
new file mode 100644
index 0000000..13a138b
Binary files /dev/null and b/test/reference/line-width-overlap-offset.traps.argb32.ref.png differ
diff --git a/test/reference/line-width-overlap-offset.traps.rgb24.ref.png b/test/reference/line-width-overlap-offset.traps.rgb24.ref.png
new file mode 100644
index 0000000..13a138b
Binary files /dev/null and b/test/reference/line-width-overlap-offset.traps.rgb24.ref.png differ
diff --git a/test/reference/line-width-overlap-rotated.mask.argb32.ref.png b/test/reference/line-width-overlap-rotated.mask.argb32.ref.png
new file mode 100644
index 0000000..619a593
Binary files /dev/null and b/test/reference/line-width-overlap-rotated.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-overlap-rotated.mask.rgb24.ref.png b/test/reference/line-width-overlap-rotated.mask.rgb24.ref.png
new file mode 100644
index 0000000..619a593
Binary files /dev/null and b/test/reference/line-width-overlap-rotated.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-overlap.mask.argb32.ref.png b/test/reference/line-width-overlap.mask.argb32.ref.png
new file mode 100644
index 0000000..13d70c8
Binary files /dev/null and b/test/reference/line-width-overlap.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-overlap.mask.rgb24.ref.png b/test/reference/line-width-overlap.mask.rgb24.ref.png
new file mode 100644
index 0000000..13d70c8
Binary files /dev/null and b/test/reference/line-width-overlap.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-scale.mask.argb32.ref.png b/test/reference/line-width-scale.mask.argb32.ref.png
new file mode 100644
index 0000000..5767bc7
Binary files /dev/null and b/test/reference/line-width-scale.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-scale.mask.rgb24.ref.png b/test/reference/line-width-scale.mask.rgb24.ref.png
new file mode 100644
index 0000000..5767bc7
Binary files /dev/null and b/test/reference/line-width-scale.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width-tolerance.mask.argb32.ref.png b/test/reference/line-width-tolerance.mask.argb32.ref.png
new file mode 100644
index 0000000..9c4d439
Binary files /dev/null and b/test/reference/line-width-tolerance.mask.argb32.ref.png differ
diff --git a/test/reference/line-width-tolerance.mask.rgb24.ref.png b/test/reference/line-width-tolerance.mask.rgb24.ref.png
new file mode 100644
index 0000000..9c4d439
Binary files /dev/null and b/test/reference/line-width-tolerance.mask.rgb24.ref.png differ
diff --git a/test/reference/line-width.mask.argb32.ref.png b/test/reference/line-width.mask.argb32.ref.png
new file mode 100644
index 0000000..2a78828
Binary files /dev/null and b/test/reference/line-width.mask.argb32.ref.png differ
diff --git a/test/reference/line-width.mask.rgb24.ref.png b/test/reference/line-width.mask.rgb24.ref.png
new file mode 100644
index 0000000..2a78828
Binary files /dev/null and b/test/reference/line-width.mask.rgb24.ref.png differ
diff --git a/test/reference/linear-gradient-extend.mask.argb32.ref.png b/test/reference/linear-gradient-extend.mask.argb32.ref.png
new file mode 100644
index 0000000..79ce747
Binary files /dev/null and b/test/reference/linear-gradient-extend.mask.argb32.ref.png differ
diff --git a/test/reference/linear-gradient-extend.mask.rgb24.ref.png b/test/reference/linear-gradient-extend.mask.rgb24.ref.png
new file mode 100644
index 0000000..79ce747
Binary files /dev/null and b/test/reference/linear-gradient-extend.mask.rgb24.ref.png differ
diff --git a/test/reference/linear-gradient-large.mask.argb32.ref.png b/test/reference/linear-gradient-large.mask.argb32.ref.png
new file mode 100644
index 0000000..f1f37ab
Binary files /dev/null and b/test/reference/linear-gradient-large.mask.argb32.ref.png differ
diff --git a/test/reference/linear-gradient-large.mask.rgb24.ref.png b/test/reference/linear-gradient-large.mask.rgb24.ref.png
new file mode 100644
index 0000000..f1f37ab
Binary files /dev/null and b/test/reference/linear-gradient-large.mask.rgb24.ref.png differ
diff --git a/test/reference/linear-gradient-one-stop.mask.argb32.ref.png b/test/reference/linear-gradient-one-stop.mask.argb32.ref.png
new file mode 100644
index 0000000..da02fda
Binary files /dev/null and b/test/reference/linear-gradient-one-stop.mask.argb32.ref.png differ
diff --git a/test/reference/linear-gradient-one-stop.mask.rgb24.ref.png b/test/reference/linear-gradient-one-stop.mask.rgb24.ref.png
new file mode 100644
index 0000000..efc12ee
Binary files /dev/null and b/test/reference/linear-gradient-one-stop.mask.rgb24.ref.png differ
diff --git a/test/reference/linear-gradient-reflect.mask.argb32.ref.png b/test/reference/linear-gradient-reflect.mask.argb32.ref.png
new file mode 100644
index 0000000..b68dccb
Binary files /dev/null and b/test/reference/linear-gradient-reflect.mask.argb32.ref.png differ
diff --git a/test/reference/linear-gradient-reflect.mask.rgb24.ref.png b/test/reference/linear-gradient-reflect.mask.rgb24.ref.png
new file mode 100644
index 0000000..b68dccb
Binary files /dev/null and b/test/reference/linear-gradient-reflect.mask.rgb24.ref.png differ
diff --git a/test/reference/linear-gradient-subset.mask.argb32.ref.png b/test/reference/linear-gradient-subset.mask.argb32.ref.png
new file mode 100644
index 0000000..3d30d0a
Binary files /dev/null and b/test/reference/linear-gradient-subset.mask.argb32.ref.png differ
diff --git a/test/reference/linear-gradient-subset.mask.rgb24.ref.png b/test/reference/linear-gradient-subset.mask.rgb24.ref.png
new file mode 100644
index 0000000..3d30d0a
Binary files /dev/null and b/test/reference/linear-gradient-subset.mask.rgb24.ref.png differ
diff --git a/test/reference/linear-gradient.mask.argb32.ref.png b/test/reference/linear-gradient.mask.argb32.ref.png
new file mode 100644
index 0000000..3f78c52
Binary files /dev/null and b/test/reference/linear-gradient.mask.argb32.ref.png differ
diff --git a/test/reference/linear-gradient.mask.rgb24.ref.png b/test/reference/linear-gradient.mask.rgb24.ref.png
new file mode 100644
index 0000000..3f78c52
Binary files /dev/null and b/test/reference/linear-gradient.mask.rgb24.ref.png differ
diff --git a/test/reference/linear-step-function.mask.argb32.ref.png b/test/reference/linear-step-function.mask.argb32.ref.png
new file mode 100644
index 0000000..0ed126e
Binary files /dev/null and b/test/reference/linear-step-function.mask.argb32.ref.png differ
diff --git a/test/reference/linear-step-function.mask.rgb24.ref.png b/test/reference/linear-step-function.mask.rgb24.ref.png
new file mode 100644
index 0000000..0ed126e
Binary files /dev/null and b/test/reference/linear-step-function.mask.rgb24.ref.png differ
diff --git a/test/reference/linear-uniform.mask.argb32.ref.png b/test/reference/linear-uniform.mask.argb32.ref.png
new file mode 100644
index 0000000..94ca336
Binary files /dev/null and b/test/reference/linear-uniform.mask.argb32.ref.png differ
diff --git a/test/reference/linear-uniform.mask.rgb24.ref.png b/test/reference/linear-uniform.mask.rgb24.ref.png
new file mode 100644
index 0000000..94ca336
Binary files /dev/null and b/test/reference/linear-uniform.mask.rgb24.ref.png differ
diff --git a/test/reference/long-dashed-lines.mask.argb32.ref.png b/test/reference/long-dashed-lines.mask.argb32.ref.png
new file mode 100644
index 0000000..9c7208c
Binary files /dev/null and b/test/reference/long-dashed-lines.mask.argb32.ref.png differ
diff --git a/test/reference/long-dashed-lines.mask.rgb24.ref.png b/test/reference/long-dashed-lines.mask.rgb24.ref.png
new file mode 100644
index 0000000..9c7208c
Binary files /dev/null and b/test/reference/long-dashed-lines.mask.rgb24.ref.png differ
diff --git a/test/reference/long-lines.mask.argb32.ref.png b/test/reference/long-lines.mask.argb32.ref.png
new file mode 100644
index 0000000..fe91163
Binary files /dev/null and b/test/reference/long-lines.mask.argb32.ref.png differ
diff --git a/test/reference/long-lines.mask.rgb24.ref.png b/test/reference/long-lines.mask.rgb24.ref.png
new file mode 100644
index 0000000..fe91163
Binary files /dev/null and b/test/reference/long-lines.mask.rgb24.ref.png differ
diff --git a/test/reference/map-all-to-image.mask.argb32.ref.png b/test/reference/map-all-to-image.mask.argb32.ref.png
new file mode 100644
index 0000000..c56d969
Binary files /dev/null and b/test/reference/map-all-to-image.mask.argb32.ref.png differ
diff --git a/test/reference/map-all-to-image.mask.rgb24.ref.png b/test/reference/map-all-to-image.mask.rgb24.ref.png
new file mode 100644
index 0000000..c56d969
Binary files /dev/null and b/test/reference/map-all-to-image.mask.rgb24.ref.png differ
diff --git a/test/reference/map-bit-to-image.mask.argb32.ref.png b/test/reference/map-bit-to-image.mask.argb32.ref.png
new file mode 100644
index 0000000..b42dcb6
Binary files /dev/null and b/test/reference/map-bit-to-image.mask.argb32.ref.png differ
diff --git a/test/reference/map-bit-to-image.mask.rgb24.ref.png b/test/reference/map-bit-to-image.mask.rgb24.ref.png
new file mode 100644
index 0000000..b42dcb6
Binary files /dev/null and b/test/reference/map-bit-to-image.mask.rgb24.ref.png differ
diff --git a/test/reference/map-to-image-fill.mask.argb32.ref.png b/test/reference/map-to-image-fill.mask.argb32.ref.png
new file mode 100644
index 0000000..c2893e0
Binary files /dev/null and b/test/reference/map-to-image-fill.mask.argb32.ref.png differ
diff --git a/test/reference/map-to-image-fill.mask.rgb24.ref.png b/test/reference/map-to-image-fill.mask.rgb24.ref.png
new file mode 100644
index 0000000..c2893e0
Binary files /dev/null and b/test/reference/map-to-image-fill.mask.rgb24.ref.png differ
diff --git a/test/reference/mask-alpha.mask.argb32.ref.png b/test/reference/mask-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..20f0663
Binary files /dev/null and b/test/reference/mask-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/mask-alpha.mask.rgb24.ref.png b/test/reference/mask-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..df7a0c1
Binary files /dev/null and b/test/reference/mask-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/mask-ctm.mask.argb32.ref.png b/test/reference/mask-ctm.mask.argb32.ref.png
new file mode 100644
index 0000000..07d903d
Binary files /dev/null and b/test/reference/mask-ctm.mask.argb32.ref.png differ
diff --git a/test/reference/mask-ctm.mask.rgb24.ref.png b/test/reference/mask-ctm.mask.rgb24.ref.png
new file mode 100644
index 0000000..de3fa09
Binary files /dev/null and b/test/reference/mask-ctm.mask.rgb24.ref.png differ
diff --git a/test/reference/mask-surface-ctm.mask.argb32.ref.png b/test/reference/mask-surface-ctm.mask.argb32.ref.png
new file mode 100644
index 0000000..07d903d
Binary files /dev/null and b/test/reference/mask-surface-ctm.mask.argb32.ref.png differ
diff --git a/test/reference/mask-surface-ctm.mask.rgb24.ref.png b/test/reference/mask-surface-ctm.mask.rgb24.ref.png
new file mode 100644
index 0000000..de3fa09
Binary files /dev/null and b/test/reference/mask-surface-ctm.mask.rgb24.ref.png differ
diff --git a/test/reference/mask-transformed-image.mask.argb32.ref.png b/test/reference/mask-transformed-image.mask.argb32.ref.png
new file mode 100644
index 0000000..af84b39
Binary files /dev/null and b/test/reference/mask-transformed-image.mask.argb32.ref.png differ
diff --git a/test/reference/mask-transformed-image.mask.rgb24.ref.png b/test/reference/mask-transformed-image.mask.rgb24.ref.png
new file mode 100644
index 0000000..af84b39
Binary files /dev/null and b/test/reference/mask-transformed-image.mask.rgb24.ref.png differ
diff --git a/test/reference/mask-transformed-similar.mask.argb32.ref.png b/test/reference/mask-transformed-similar.mask.argb32.ref.png
new file mode 100644
index 0000000..af84b39
Binary files /dev/null and b/test/reference/mask-transformed-similar.mask.argb32.ref.png differ
diff --git a/test/reference/mask-transformed-similar.mask.rgb24.ref.png b/test/reference/mask-transformed-similar.mask.rgb24.ref.png
new file mode 100644
index 0000000..af84b39
Binary files /dev/null and b/test/reference/mask-transformed-similar.mask.rgb24.ref.png differ
diff --git a/test/reference/mask.mask.argb32.ref.png b/test/reference/mask.mask.argb32.ref.png
new file mode 100644
index 0000000..2d740d4
Binary files /dev/null and b/test/reference/mask.mask.argb32.ref.png differ
diff --git a/test/reference/mask.mask.rgb24.ref.png b/test/reference/mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..12114a7
Binary files /dev/null and b/test/reference/mask.mask.rgb24.ref.png differ
diff --git a/test/reference/mesh-pattern-accuracy.mask.argb32.ref.png b/test/reference/mesh-pattern-accuracy.mask.argb32.ref.png
new file mode 100644
index 0000000..dfc19ff
Binary files /dev/null and b/test/reference/mesh-pattern-accuracy.mask.argb32.ref.png differ
diff --git a/test/reference/mesh-pattern-accuracy.mask.rgb24.ref.png b/test/reference/mesh-pattern-accuracy.mask.rgb24.ref.png
new file mode 100644
index 0000000..dfc19ff
Binary files /dev/null and b/test/reference/mesh-pattern-accuracy.mask.rgb24.ref.png differ
diff --git a/test/reference/mesh-pattern-conical.mask.argb32.ref.png b/test/reference/mesh-pattern-conical.mask.argb32.ref.png
new file mode 100644
index 0000000..f5dc21d
Binary files /dev/null and b/test/reference/mesh-pattern-conical.mask.argb32.ref.png differ
diff --git a/test/reference/mesh-pattern-conical.mask.rgb24.ref.png b/test/reference/mesh-pattern-conical.mask.rgb24.ref.png
new file mode 100644
index 0000000..f5dc21d
Binary files /dev/null and b/test/reference/mesh-pattern-conical.mask.rgb24.ref.png differ
diff --git a/test/reference/mesh-pattern-control-points.mask.argb32.ref.png b/test/reference/mesh-pattern-control-points.mask.argb32.ref.png
new file mode 100644
index 0000000..841fc3e
Binary files /dev/null and b/test/reference/mesh-pattern-control-points.mask.argb32.ref.png differ
diff --git a/test/reference/mesh-pattern-control-points.mask.rgb24.ref.png b/test/reference/mesh-pattern-control-points.mask.rgb24.ref.png
new file mode 100644
index 0000000..841fc3e
Binary files /dev/null and b/test/reference/mesh-pattern-control-points.mask.rgb24.ref.png differ
diff --git a/test/reference/mesh-pattern-fold.mask.argb32.ref.png b/test/reference/mesh-pattern-fold.mask.argb32.ref.png
new file mode 100644
index 0000000..6275b82
Binary files /dev/null and b/test/reference/mesh-pattern-fold.mask.argb32.ref.png differ
diff --git a/test/reference/mesh-pattern-fold.mask.rgb24.ref.png b/test/reference/mesh-pattern-fold.mask.rgb24.ref.png
new file mode 100644
index 0000000..6275b82
Binary files /dev/null and b/test/reference/mesh-pattern-fold.mask.rgb24.ref.png differ
diff --git a/test/reference/mesh-pattern-overlap.mask.argb32.ref.png b/test/reference/mesh-pattern-overlap.mask.argb32.ref.png
new file mode 100644
index 0000000..1394c9e
Binary files /dev/null and b/test/reference/mesh-pattern-overlap.mask.argb32.ref.png differ
diff --git a/test/reference/mesh-pattern-overlap.mask.rgb24.ref.png b/test/reference/mesh-pattern-overlap.mask.rgb24.ref.png
new file mode 100644
index 0000000..1394c9e
Binary files /dev/null and b/test/reference/mesh-pattern-overlap.mask.rgb24.ref.png differ
diff --git a/test/reference/mesh-pattern-transformed.mask.argb32.ref.png b/test/reference/mesh-pattern-transformed.mask.argb32.ref.png
new file mode 100644
index 0000000..9aa482f
Binary files /dev/null and b/test/reference/mesh-pattern-transformed.mask.argb32.ref.png differ
diff --git a/test/reference/mesh-pattern-transformed.mask.rgb24.ref.png b/test/reference/mesh-pattern-transformed.mask.rgb24.ref.png
new file mode 100644
index 0000000..9aa482f
Binary files /dev/null and b/test/reference/mesh-pattern-transformed.mask.rgb24.ref.png differ
diff --git a/test/reference/mesh-pattern.mask.argb32.ref.png b/test/reference/mesh-pattern.mask.argb32.ref.png
new file mode 100644
index 0000000..1f76639
Binary files /dev/null and b/test/reference/mesh-pattern.mask.argb32.ref.png differ
diff --git a/test/reference/mesh-pattern.mask.rgb24.ref.png b/test/reference/mesh-pattern.mask.rgb24.ref.png
new file mode 100644
index 0000000..1f76639
Binary files /dev/null and b/test/reference/mesh-pattern.mask.rgb24.ref.png differ
diff --git a/test/reference/mime-data.mask.argb32.ref.png b/test/reference/mime-data.mask.argb32.ref.png
new file mode 100644
index 0000000..3a912c5
Binary files /dev/null and b/test/reference/mime-data.mask.argb32.ref.png differ
diff --git a/test/reference/mime-data.mask.rgb24.ref.png b/test/reference/mime-data.mask.rgb24.ref.png
new file mode 100644
index 0000000..3a912c5
Binary files /dev/null and b/test/reference/mime-data.mask.rgb24.ref.png differ
diff --git a/test/reference/miter-precision.mask.argb32.ref.png b/test/reference/miter-precision.mask.argb32.ref.png
new file mode 100644
index 0000000..aa8e229
Binary files /dev/null and b/test/reference/miter-precision.mask.argb32.ref.png differ
diff --git a/test/reference/miter-precision.mask.rgb24.ref.png b/test/reference/miter-precision.mask.rgb24.ref.png
new file mode 100644
index 0000000..aa8e229
Binary files /dev/null and b/test/reference/miter-precision.mask.rgb24.ref.png differ
diff --git a/test/reference/move-to-show-surface.mask.argb32.ref.png b/test/reference/move-to-show-surface.mask.argb32.ref.png
new file mode 100644
index 0000000..0a145d9
Binary files /dev/null and b/test/reference/move-to-show-surface.mask.argb32.ref.png differ
diff --git a/test/reference/move-to-show-surface.mask.rgb24.ref.png b/test/reference/move-to-show-surface.mask.rgb24.ref.png
new file mode 100644
index 0000000..0a145d9
Binary files /dev/null and b/test/reference/move-to-show-surface.mask.rgb24.ref.png differ
diff --git a/test/reference/negative-stride-image.base.argb32.ref.png b/test/reference/negative-stride-image.base.argb32.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/negative-stride-image.base.argb32.ref.png differ
diff --git a/test/reference/negative-stride-image.base.rgb24.ref.png b/test/reference/negative-stride-image.base.rgb24.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/negative-stride-image.base.rgb24.ref.png differ
diff --git a/test/reference/negative-stride-image.mask.argb32.ref.png b/test/reference/negative-stride-image.mask.argb32.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/negative-stride-image.mask.argb32.ref.png differ
diff --git a/test/reference/negative-stride-image.mask.rgb24.ref.png b/test/reference/negative-stride-image.mask.rgb24.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/negative-stride-image.mask.rgb24.ref.png differ
diff --git a/test/reference/negative-stride-image.traps.argb32.ref.png b/test/reference/negative-stride-image.traps.argb32.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/negative-stride-image.traps.argb32.ref.png differ
diff --git a/test/reference/negative-stride-image.traps.rgb24.ref.png b/test/reference/negative-stride-image.traps.rgb24.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/negative-stride-image.traps.rgb24.ref.png differ
diff --git a/test/reference/new-sub-path.mask.argb32.ref.png b/test/reference/new-sub-path.mask.argb32.ref.png
new file mode 100644
index 0000000..87a6c91
Binary files /dev/null and b/test/reference/new-sub-path.mask.argb32.ref.png differ
diff --git a/test/reference/new-sub-path.mask.rgb24.ref.png b/test/reference/new-sub-path.mask.rgb24.ref.png
new file mode 100644
index 0000000..eb297be
Binary files /dev/null and b/test/reference/new-sub-path.mask.rgb24.ref.png differ
diff --git a/test/reference/nil-surface.mask.argb32.ref.png b/test/reference/nil-surface.mask.argb32.ref.png
new file mode 100644
index 0000000..50e35a2
Binary files /dev/null and b/test/reference/nil-surface.mask.argb32.ref.png differ
diff --git a/test/reference/nil-surface.mask.rgb24.ref.png b/test/reference/nil-surface.mask.rgb24.ref.png
new file mode 100644
index 0000000..7d5589c
Binary files /dev/null and b/test/reference/nil-surface.mask.rgb24.ref.png differ
diff --git a/test/reference/operator-alpha-alpha.mask.argb32.ref.png b/test/reference/operator-alpha-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..695d0d0
Binary files /dev/null and b/test/reference/operator-alpha-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/operator-alpha-alpha.mask.rgb24.ref.png b/test/reference/operator-alpha-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..695d0d0
Binary files /dev/null and b/test/reference/operator-alpha-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/operator-alpha.mask.argb32.ref.png b/test/reference/operator-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..b4f3b71
Binary files /dev/null and b/test/reference/operator-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/operator-alpha.mask.rgb24.ref.png b/test/reference/operator-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..bc7be3a
Binary files /dev/null and b/test/reference/operator-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/operator-clear.mask.argb32.ref.png b/test/reference/operator-clear.mask.argb32.ref.png
new file mode 100644
index 0000000..41f63bd
Binary files /dev/null and b/test/reference/operator-clear.mask.argb32.ref.png differ
diff --git a/test/reference/operator-clear.mask.rgb24.ref.png b/test/reference/operator-clear.mask.rgb24.ref.png
new file mode 100644
index 0000000..3d58ab3
Binary files /dev/null and b/test/reference/operator-clear.mask.rgb24.ref.png differ
diff --git a/test/reference/operator-source.mask.argb32.ref.png b/test/reference/operator-source.mask.argb32.ref.png
new file mode 100644
index 0000000..74ad1da
Binary files /dev/null and b/test/reference/operator-source.mask.argb32.ref.png differ
diff --git a/test/reference/operator-source.mask.rgb24.ref.png b/test/reference/operator-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..c003356
Binary files /dev/null and b/test/reference/operator-source.mask.rgb24.ref.png differ
diff --git a/test/reference/operator.mask.argb32.ref.png b/test/reference/operator.mask.argb32.ref.png
new file mode 100644
index 0000000..34fce98
Binary files /dev/null and b/test/reference/operator.mask.argb32.ref.png differ
diff --git a/test/reference/operator.mask.rgb24.ref.png b/test/reference/operator.mask.rgb24.ref.png
new file mode 100644
index 0000000..aa6103d
Binary files /dev/null and b/test/reference/operator.mask.rgb24.ref.png differ
diff --git a/test/reference/over-above-source.mask.argb32.ref.png b/test/reference/over-above-source.mask.argb32.ref.png
new file mode 100644
index 0000000..8c2ce1d
Binary files /dev/null and b/test/reference/over-above-source.mask.argb32.ref.png differ
diff --git a/test/reference/over-above-source.mask.rgb24.ref.png b/test/reference/over-above-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..240de27
Binary files /dev/null and b/test/reference/over-above-source.mask.rgb24.ref.png differ
diff --git a/test/reference/over-around-source.mask.argb32.ref.png b/test/reference/over-around-source.mask.argb32.ref.png
new file mode 100644
index 0000000..38df9b7
Binary files /dev/null and b/test/reference/over-around-source.mask.argb32.ref.png differ
diff --git a/test/reference/over-around-source.mask.rgb24.ref.png b/test/reference/over-around-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..65fd8e8
Binary files /dev/null and b/test/reference/over-around-source.mask.rgb24.ref.png differ
diff --git a/test/reference/over-below-source.mask.argb32.ref.png b/test/reference/over-below-source.mask.argb32.ref.png
new file mode 100644
index 0000000..0b55974
Binary files /dev/null and b/test/reference/over-below-source.mask.argb32.ref.png differ
diff --git a/test/reference/over-below-source.mask.rgb24.ref.png b/test/reference/over-below-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..9ddde0e
Binary files /dev/null and b/test/reference/over-below-source.mask.rgb24.ref.png differ
diff --git a/test/reference/over-between-source.mask.argb32.ref.png b/test/reference/over-between-source.mask.argb32.ref.png
new file mode 100644
index 0000000..dd03f98
Binary files /dev/null and b/test/reference/over-between-source.mask.argb32.ref.png differ
diff --git a/test/reference/over-between-source.mask.rgb24.ref.png b/test/reference/over-between-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..8569720
Binary files /dev/null and b/test/reference/over-between-source.mask.rgb24.ref.png differ
diff --git a/test/reference/overlapping-boxes.mask.argb32.ref.png b/test/reference/overlapping-boxes.mask.argb32.ref.png
new file mode 100644
index 0000000..1c68438
Binary files /dev/null and b/test/reference/overlapping-boxes.mask.argb32.ref.png differ
diff --git a/test/reference/overlapping-boxes.mask.rgb24.ref.png b/test/reference/overlapping-boxes.mask.rgb24.ref.png
new file mode 100644
index 0000000..0edeafa
Binary files /dev/null and b/test/reference/overlapping-boxes.mask.rgb24.ref.png differ
diff --git a/test/reference/overlapping-dash-caps.mask.argb32.ref.png b/test/reference/overlapping-dash-caps.mask.argb32.ref.png
new file mode 100644
index 0000000..367d683
Binary files /dev/null and b/test/reference/overlapping-dash-caps.mask.argb32.ref.png differ
diff --git a/test/reference/overlapping-dash-caps.mask.rgb24.ref.png b/test/reference/overlapping-dash-caps.mask.rgb24.ref.png
new file mode 100644
index 0000000..367d683
Binary files /dev/null and b/test/reference/overlapping-dash-caps.mask.rgb24.ref.png differ
diff --git a/test/reference/overlapping-glyphs.mask.argb32.ref.png b/test/reference/overlapping-glyphs.mask.argb32.ref.png
new file mode 100644
index 0000000..4ec4ee5
Binary files /dev/null and b/test/reference/overlapping-glyphs.mask.argb32.ref.png differ
diff --git a/test/reference/overlapping-glyphs.mask.rgb24.ref.png b/test/reference/overlapping-glyphs.mask.rgb24.ref.png
new file mode 100644
index 0000000..5217c15
Binary files /dev/null and b/test/reference/overlapping-glyphs.mask.rgb24.ref.png differ
diff --git a/test/reference/paint-clip-fill-aa.mask.argb32.ref.png b/test/reference/paint-clip-fill-aa.mask.argb32.ref.png
new file mode 100644
index 0000000..768322a
Binary files /dev/null and b/test/reference/paint-clip-fill-aa.mask.argb32.ref.png differ
diff --git a/test/reference/paint-clip-fill-aa.mask.rgb24.ref.png b/test/reference/paint-clip-fill-aa.mask.rgb24.ref.png
new file mode 100644
index 0000000..768322a
Binary files /dev/null and b/test/reference/paint-clip-fill-aa.mask.rgb24.ref.png differ
diff --git a/test/reference/paint-clip-fill-mono.mask.argb32.ref.png b/test/reference/paint-clip-fill-mono.mask.argb32.ref.png
new file mode 100644
index 0000000..768322a
Binary files /dev/null and b/test/reference/paint-clip-fill-mono.mask.argb32.ref.png differ
diff --git a/test/reference/paint-clip-fill-mono.mask.rgb24.ref.png b/test/reference/paint-clip-fill-mono.mask.rgb24.ref.png
new file mode 100644
index 0000000..768322a
Binary files /dev/null and b/test/reference/paint-clip-fill-mono.mask.rgb24.ref.png differ
diff --git a/test/reference/paint-repeat.mask.argb32.ref.png b/test/reference/paint-repeat.mask.argb32.ref.png
new file mode 100644
index 0000000..8cdd9b4
Binary files /dev/null and b/test/reference/paint-repeat.mask.argb32.ref.png differ
diff --git a/test/reference/paint-repeat.mask.rgb24.ref.png b/test/reference/paint-repeat.mask.rgb24.ref.png
new file mode 100644
index 0000000..8cdd9b4
Binary files /dev/null and b/test/reference/paint-repeat.mask.rgb24.ref.png differ
diff --git a/test/reference/paint-source-alpha.mask.argb32.ref.png b/test/reference/paint-source-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..65d9c17
Binary files /dev/null and b/test/reference/paint-source-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/paint-source-alpha.mask.rgb24.ref.png b/test/reference/paint-source-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..65d9c17
Binary files /dev/null and b/test/reference/paint-source-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png b/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png
new file mode 100644
index 0000000..95746ff
Binary files /dev/null and b/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png differ
diff --git a/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png b/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..95746ff
Binary files /dev/null and b/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png differ
diff --git a/test/reference/paint-with-alpha-clip.mask.argb32.ref.png b/test/reference/paint-with-alpha-clip.mask.argb32.ref.png
new file mode 100644
index 0000000..c1da67e
Binary files /dev/null and b/test/reference/paint-with-alpha-clip.mask.argb32.ref.png differ
diff --git a/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png b/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png
new file mode 100644
index 0000000..c1da67e
Binary files /dev/null and b/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png differ
diff --git a/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png b/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png
new file mode 100644
index 0000000..2cd2df2
Binary files /dev/null and b/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png differ
diff --git a/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png b/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png
new file mode 100644
index 0000000..2cd2df2
Binary files /dev/null and b/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png differ
diff --git a/test/reference/paint-with-alpha.mask.argb32.ref.png b/test/reference/paint-with-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..65d9c17
Binary files /dev/null and b/test/reference/paint-with-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/paint-with-alpha.mask.rgb24.ref.png b/test/reference/paint-with-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..65d9c17
Binary files /dev/null and b/test/reference/paint-with-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/paint.mask.argb32.ref.png b/test/reference/paint.mask.argb32.ref.png
new file mode 100644
index 0000000..22cc7a1
Binary files /dev/null and b/test/reference/paint.mask.argb32.ref.png differ
diff --git a/test/reference/paint.mask.rgb24.ref.png b/test/reference/paint.mask.rgb24.ref.png
new file mode 100644
index 0000000..22cc7a1
Binary files /dev/null and b/test/reference/paint.mask.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-bottom.mask.argb32.ref.png b/test/reference/partial-clip-text-bottom.mask.argb32.ref.png
new file mode 100644
index 0000000..6a299d4
Binary files /dev/null and b/test/reference/partial-clip-text-bottom.mask.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-bottom.mask.rgb24.ref.png b/test/reference/partial-clip-text-bottom.mask.rgb24.ref.png
new file mode 100644
index 0000000..6a299d4
Binary files /dev/null and b/test/reference/partial-clip-text-bottom.mask.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-left.mask.argb32.ref.png b/test/reference/partial-clip-text-left.mask.argb32.ref.png
new file mode 100644
index 0000000..54a1a85
Binary files /dev/null and b/test/reference/partial-clip-text-left.mask.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-left.mask.rgb24.ref.png b/test/reference/partial-clip-text-left.mask.rgb24.ref.png
new file mode 100644
index 0000000..54a1a85
Binary files /dev/null and b/test/reference/partial-clip-text-left.mask.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-right.mask.argb32.ref.png b/test/reference/partial-clip-text-right.mask.argb32.ref.png
new file mode 100644
index 0000000..2fbdca0
Binary files /dev/null and b/test/reference/partial-clip-text-right.mask.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-right.mask.rgb24.ref.png b/test/reference/partial-clip-text-right.mask.rgb24.ref.png
new file mode 100644
index 0000000..2fbdca0
Binary files /dev/null and b/test/reference/partial-clip-text-right.mask.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-right.traps.argb32.ref.png b/test/reference/partial-clip-text-right.traps.argb32.ref.png
new file mode 100644
index 0000000..2fbdca0
Binary files /dev/null and b/test/reference/partial-clip-text-right.traps.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-right.traps.rgb24.ref.png b/test/reference/partial-clip-text-right.traps.rgb24.ref.png
new file mode 100644
index 0000000..2fbdca0
Binary files /dev/null and b/test/reference/partial-clip-text-right.traps.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-top.mask.argb32.ref.png b/test/reference/partial-clip-text-top.mask.argb32.ref.png
new file mode 100644
index 0000000..d18475b
Binary files /dev/null and b/test/reference/partial-clip-text-top.mask.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-top.mask.rgb24.ref.png b/test/reference/partial-clip-text-top.mask.rgb24.ref.png
new file mode 100644
index 0000000..d18475b
Binary files /dev/null and b/test/reference/partial-clip-text-top.mask.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-top.traps.argb32.ref.png b/test/reference/partial-clip-text-top.traps.argb32.ref.png
new file mode 100644
index 0000000..d18475b
Binary files /dev/null and b/test/reference/partial-clip-text-top.traps.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-top.traps.rgb24.ref.png b/test/reference/partial-clip-text-top.traps.rgb24.ref.png
new file mode 100644
index 0000000..d18475b
Binary files /dev/null and b/test/reference/partial-clip-text-top.traps.rgb24.ref.png differ
diff --git a/test/reference/partial-coverage-half-reference.mask.argb32.ref.png b/test/reference/partial-coverage-half-reference.mask.argb32.ref.png
new file mode 100644
index 0000000..17f4ff0
Binary files /dev/null and b/test/reference/partial-coverage-half-reference.mask.argb32.ref.png differ
diff --git a/test/reference/partial-coverage-half-reference.mask.rgb24.ref.png b/test/reference/partial-coverage-half-reference.mask.rgb24.ref.png
new file mode 100644
index 0000000..17f4ff0
Binary files /dev/null and b/test/reference/partial-coverage-half-reference.mask.rgb24.ref.png differ
diff --git a/test/reference/partial-coverage-reference.mask.argb32.ref.png b/test/reference/partial-coverage-reference.mask.argb32.ref.png
new file mode 100644
index 0000000..9e4a6fe
Binary files /dev/null and b/test/reference/partial-coverage-reference.mask.argb32.ref.png differ
diff --git a/test/reference/partial-coverage-reference.mask.rgb24.ref.png b/test/reference/partial-coverage-reference.mask.rgb24.ref.png
new file mode 100644
index 0000000..9e4a6fe
Binary files /dev/null and b/test/reference/partial-coverage-reference.mask.rgb24.ref.png differ
diff --git a/test/reference/partial-coverage-three-quarter-reference.mask.argb32.ref.png b/test/reference/partial-coverage-three-quarter-reference.mask.argb32.ref.png
new file mode 100644
index 0000000..ea16dc4
Binary files /dev/null and b/test/reference/partial-coverage-three-quarter-reference.mask.argb32.ref.png differ
diff --git a/test/reference/partial-coverage-three-quarter-reference.mask.rgb24.ref.png b/test/reference/partial-coverage-three-quarter-reference.mask.rgb24.ref.png
new file mode 100644
index 0000000..ea16dc4
Binary files /dev/null and b/test/reference/partial-coverage-three-quarter-reference.mask.rgb24.ref.png differ
diff --git a/test/reference/pass-through.base.argb32.ref.png b/test/reference/pass-through.base.argb32.ref.png
new file mode 100644
index 0000000..058a192
Binary files /dev/null and b/test/reference/pass-through.base.argb32.ref.png differ
diff --git a/test/reference/pass-through.base.rgb24.ref.png b/test/reference/pass-through.base.rgb24.ref.png
new file mode 100644
index 0000000..1be631a
Binary files /dev/null and b/test/reference/pass-through.base.rgb24.ref.png differ
diff --git a/test/reference/pass-through.mask.argb32.ref.png b/test/reference/pass-through.mask.argb32.ref.png
new file mode 100644
index 0000000..058a192
Binary files /dev/null and b/test/reference/pass-through.mask.argb32.ref.png differ
diff --git a/test/reference/pass-through.mask.rgb24.ref.png b/test/reference/pass-through.mask.rgb24.ref.png
new file mode 100644
index 0000000..1be631a
Binary files /dev/null and b/test/reference/pass-through.mask.rgb24.ref.png differ
diff --git a/test/reference/pass-through.traps.argb32.ref.png b/test/reference/pass-through.traps.argb32.ref.png
new file mode 100644
index 0000000..058a192
Binary files /dev/null and b/test/reference/pass-through.traps.argb32.ref.png differ
diff --git a/test/reference/pass-through.traps.rgb24.ref.png b/test/reference/pass-through.traps.rgb24.ref.png
new file mode 100644
index 0000000..1be631a
Binary files /dev/null and b/test/reference/pass-through.traps.rgb24.ref.png differ
diff --git a/test/reference/path-append.mask.argb32.ref.png b/test/reference/path-append.mask.argb32.ref.png
new file mode 100644
index 0000000..f097af0
Binary files /dev/null and b/test/reference/path-append.mask.argb32.ref.png differ
diff --git a/test/reference/path-append.mask.rgb24.ref.png b/test/reference/path-append.mask.rgb24.ref.png
new file mode 100644
index 0000000..f097af0
Binary files /dev/null and b/test/reference/path-append.mask.rgb24.ref.png differ
diff --git a/test/reference/path-stroke-twice.mask.argb32.ref.png b/test/reference/path-stroke-twice.mask.argb32.ref.png
new file mode 100644
index 0000000..743c6ce
Binary files /dev/null and b/test/reference/path-stroke-twice.mask.argb32.ref.png differ
diff --git a/test/reference/path-stroke-twice.mask.rgb24.ref.png b/test/reference/path-stroke-twice.mask.rgb24.ref.png
new file mode 100644
index 0000000..743c6ce
Binary files /dev/null and b/test/reference/path-stroke-twice.mask.rgb24.ref.png differ
diff --git a/test/reference/pattern-getters.mask.argb32.ref.png b/test/reference/pattern-getters.mask.argb32.ref.png
new file mode 100644
index 0000000..3cc39a8
Binary files /dev/null and b/test/reference/pattern-getters.mask.argb32.ref.png differ
diff --git a/test/reference/pattern-getters.mask.rgb24.ref.png b/test/reference/pattern-getters.mask.rgb24.ref.png
new file mode 100644
index 0000000..3cc39a8
Binary files /dev/null and b/test/reference/pattern-getters.mask.rgb24.ref.png differ
diff --git a/test/reference/pdf-surface-source.mask.argb32.ref.png b/test/reference/pdf-surface-source.mask.argb32.ref.png
new file mode 100644
index 0000000..0182972
Binary files /dev/null and b/test/reference/pdf-surface-source.mask.argb32.ref.png differ
diff --git a/test/reference/pdf-surface-source.mask.rgb24.ref.png b/test/reference/pdf-surface-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..0d68a82
Binary files /dev/null and b/test/reference/pdf-surface-source.mask.rgb24.ref.png differ
diff --git a/test/reference/pixman-rotate.mask.argb32.ref.png b/test/reference/pixman-rotate.mask.argb32.ref.png
new file mode 100644
index 0000000..7e47a4d
Binary files /dev/null and b/test/reference/pixman-rotate.mask.argb32.ref.png differ
diff --git a/test/reference/pixman-rotate.mask.rgb24.ref.png b/test/reference/pixman-rotate.mask.rgb24.ref.png
new file mode 100644
index 0000000..397acbe
Binary files /dev/null and b/test/reference/pixman-rotate.mask.rgb24.ref.png differ
diff --git a/test/reference/ps-surface-source.mask.argb32.ref.png b/test/reference/ps-surface-source.mask.argb32.ref.png
new file mode 100644
index 0000000..0182972
Binary files /dev/null and b/test/reference/ps-surface-source.mask.argb32.ref.png differ
diff --git a/test/reference/ps-surface-source.mask.rgb24.ref.png b/test/reference/ps-surface-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..0d68a82
Binary files /dev/null and b/test/reference/ps-surface-source.mask.rgb24.ref.png differ
diff --git a/test/reference/pthread-same-source.mask.argb32.ref.png b/test/reference/pthread-same-source.mask.argb32.ref.png
new file mode 100644
index 0000000..cfb519d
Binary files /dev/null and b/test/reference/pthread-same-source.mask.argb32.ref.png differ
diff --git a/test/reference/pthread-same-source.mask.rgb24.ref.png b/test/reference/pthread-same-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..cfb519d
Binary files /dev/null and b/test/reference/pthread-same-source.mask.rgb24.ref.png differ
diff --git a/test/reference/pthread-show-text.mask.argb32.ref.png b/test/reference/pthread-show-text.mask.argb32.ref.png
new file mode 100644
index 0000000..90d0af3
Binary files /dev/null and b/test/reference/pthread-show-text.mask.argb32.ref.png differ
diff --git a/test/reference/pthread-show-text.mask.rgb24.ref.png b/test/reference/pthread-show-text.mask.rgb24.ref.png
new file mode 100644
index 0000000..90d0af3
Binary files /dev/null and b/test/reference/pthread-show-text.mask.rgb24.ref.png differ
diff --git a/test/reference/pthread-show-text.traps.argb32.ref.png b/test/reference/pthread-show-text.traps.argb32.ref.png
new file mode 100644
index 0000000..90d0af3
Binary files /dev/null and b/test/reference/pthread-show-text.traps.argb32.ref.png differ
diff --git a/test/reference/pthread-show-text.traps.rgb24.ref.png b/test/reference/pthread-show-text.traps.rgb24.ref.png
new file mode 100644
index 0000000..90d0af3
Binary files /dev/null and b/test/reference/pthread-show-text.traps.rgb24.ref.png differ
diff --git a/test/reference/pthread-similar.mask.argb32.ref.png b/test/reference/pthread-similar.mask.argb32.ref.png
new file mode 100644
index 0000000..a22210d
Binary files /dev/null and b/test/reference/pthread-similar.mask.argb32.ref.png differ
diff --git a/test/reference/pthread-similar.mask.rgb24.ref.png b/test/reference/pthread-similar.mask.rgb24.ref.png
new file mode 100644
index 0000000..a22210d
Binary files /dev/null and b/test/reference/pthread-similar.mask.rgb24.ref.png differ
diff --git a/test/reference/push-group-color.mask.argb32.ref.png b/test/reference/push-group-color.mask.argb32.ref.png
new file mode 100644
index 0000000..5615196
Binary files /dev/null and b/test/reference/push-group-color.mask.argb32.ref.png differ
diff --git a/test/reference/push-group-color.mask.rgb24.ref.png b/test/reference/push-group-color.mask.rgb24.ref.png
new file mode 100644
index 0000000..5615196
Binary files /dev/null and b/test/reference/push-group-color.mask.rgb24.ref.png differ
diff --git a/test/reference/push-group-path-offset.mask.argb32.ref.png b/test/reference/push-group-path-offset.mask.argb32.ref.png
new file mode 100644
index 0000000..b836a91
Binary files /dev/null and b/test/reference/push-group-path-offset.mask.argb32.ref.png differ
diff --git a/test/reference/push-group-path-offset.mask.rgb24.ref.png b/test/reference/push-group-path-offset.mask.rgb24.ref.png
new file mode 100644
index 0000000..b836a91
Binary files /dev/null and b/test/reference/push-group-path-offset.mask.rgb24.ref.png differ
diff --git a/test/reference/push-group.mask.argb32.ref.png b/test/reference/push-group.mask.argb32.ref.png
new file mode 100644
index 0000000..60f5eec
Binary files /dev/null and b/test/reference/push-group.mask.argb32.ref.png differ
diff --git a/test/reference/push-group.mask.rgb24.ref.png b/test/reference/push-group.mask.rgb24.ref.png
new file mode 100644
index 0000000..19f0a2b
Binary files /dev/null and b/test/reference/push-group.mask.rgb24.ref.png differ
diff --git a/test/reference/radial-gradient-extend.mask.argb32.ref.png b/test/reference/radial-gradient-extend.mask.argb32.ref.png
new file mode 100644
index 0000000..3d7de5e
Binary files /dev/null and b/test/reference/radial-gradient-extend.mask.argb32.ref.png differ
diff --git a/test/reference/radial-gradient-extend.mask.rgb24.ref.png b/test/reference/radial-gradient-extend.mask.rgb24.ref.png
new file mode 100644
index 0000000..3d7de5e
Binary files /dev/null and b/test/reference/radial-gradient-extend.mask.rgb24.ref.png differ
diff --git a/test/reference/radial-gradient-mask-source.mask.argb32.ref.png b/test/reference/radial-gradient-mask-source.mask.argb32.ref.png
new file mode 100644
index 0000000..2bf65b3
Binary files /dev/null and b/test/reference/radial-gradient-mask-source.mask.argb32.ref.png differ
diff --git a/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png b/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..5533519
Binary files /dev/null and b/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png differ
diff --git a/test/reference/radial-gradient-mask.mask.argb32.ref.png b/test/reference/radial-gradient-mask.mask.argb32.ref.png
new file mode 100644
index 0000000..4db39aa
Binary files /dev/null and b/test/reference/radial-gradient-mask.mask.argb32.ref.png differ
diff --git a/test/reference/radial-gradient-mask.mask.rgb24.ref.png b/test/reference/radial-gradient-mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..4db39aa
Binary files /dev/null and b/test/reference/radial-gradient-mask.mask.rgb24.ref.png differ
diff --git a/test/reference/radial-gradient-one-stop.mask.argb32.ref.png b/test/reference/radial-gradient-one-stop.mask.argb32.ref.png
new file mode 100644
index 0000000..fb35be6
Binary files /dev/null and b/test/reference/radial-gradient-one-stop.mask.argb32.ref.png differ
diff --git a/test/reference/radial-gradient-one-stop.mask.rgb24.ref.png b/test/reference/radial-gradient-one-stop.mask.rgb24.ref.png
new file mode 100644
index 0000000..fb35be6
Binary files /dev/null and b/test/reference/radial-gradient-one-stop.mask.rgb24.ref.png differ
diff --git a/test/reference/radial-gradient-source.mask.argb32.ref.png b/test/reference/radial-gradient-source.mask.argb32.ref.png
new file mode 100644
index 0000000..4ab4796
Binary files /dev/null and b/test/reference/radial-gradient-source.mask.argb32.ref.png differ
diff --git a/test/reference/radial-gradient-source.mask.rgb24.ref.png b/test/reference/radial-gradient-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..afaa241
Binary files /dev/null and b/test/reference/radial-gradient-source.mask.rgb24.ref.png differ
diff --git a/test/reference/radial-gradient.mask.argb32.ref.png b/test/reference/radial-gradient.mask.argb32.ref.png
new file mode 100644
index 0000000..a2cbbc8
Binary files /dev/null and b/test/reference/radial-gradient.mask.argb32.ref.png differ
diff --git a/test/reference/radial-gradient.mask.rgb24.ref.png b/test/reference/radial-gradient.mask.rgb24.ref.png
new file mode 100644
index 0000000..a2cbbc8
Binary files /dev/null and b/test/reference/radial-gradient.mask.rgb24.ref.png differ
diff --git a/test/reference/radial-outer-focus.base.argb32.ref.png b/test/reference/radial-outer-focus.base.argb32.ref.png
new file mode 100644
index 0000000..21f0bf6
Binary files /dev/null and b/test/reference/radial-outer-focus.base.argb32.ref.png differ
diff --git a/test/reference/radial-outer-focus.base.rgb24.ref.png b/test/reference/radial-outer-focus.base.rgb24.ref.png
new file mode 100644
index 0000000..21f0bf6
Binary files /dev/null and b/test/reference/radial-outer-focus.base.rgb24.ref.png differ
diff --git a/test/reference/radial-outer-focus.mask.argb32.ref.png b/test/reference/radial-outer-focus.mask.argb32.ref.png
new file mode 100644
index 0000000..21f0bf6
Binary files /dev/null and b/test/reference/radial-outer-focus.mask.argb32.ref.png differ
diff --git a/test/reference/radial-outer-focus.mask.rgb24.ref.png b/test/reference/radial-outer-focus.mask.rgb24.ref.png
new file mode 100644
index 0000000..21f0bf6
Binary files /dev/null and b/test/reference/radial-outer-focus.mask.rgb24.ref.png differ
diff --git a/test/reference/radial-outer-focus.traps.argb32.ref.png b/test/reference/radial-outer-focus.traps.argb32.ref.png
new file mode 100644
index 0000000..21f0bf6
Binary files /dev/null and b/test/reference/radial-outer-focus.traps.argb32.ref.png differ
diff --git a/test/reference/radial-outer-focus.traps.rgb24.ref.png b/test/reference/radial-outer-focus.traps.rgb24.ref.png
new file mode 100644
index 0000000..21f0bf6
Binary files /dev/null and b/test/reference/radial-outer-focus.traps.rgb24.ref.png differ
diff --git a/test/reference/random-clip.base.argb32.ref.png b/test/reference/random-clip.base.argb32.ref.png
new file mode 100644
index 0000000..85f7808
Binary files /dev/null and b/test/reference/random-clip.base.argb32.ref.png differ
diff --git a/test/reference/random-clip.base.rgb24.ref.png b/test/reference/random-clip.base.rgb24.ref.png
new file mode 100644
index 0000000..85f7808
Binary files /dev/null and b/test/reference/random-clip.base.rgb24.ref.png differ
diff --git a/test/reference/random-clip.mask.argb32.ref.png b/test/reference/random-clip.mask.argb32.ref.png
new file mode 100644
index 0000000..41643cb
Binary files /dev/null and b/test/reference/random-clip.mask.argb32.ref.png differ
diff --git a/test/reference/random-clip.mask.rgb24.ref.png b/test/reference/random-clip.mask.rgb24.ref.png
new file mode 100644
index 0000000..41643cb
Binary files /dev/null and b/test/reference/random-clip.mask.rgb24.ref.png differ
diff --git a/test/reference/random-intersections-curves-eo.mask.argb32.ref.png b/test/reference/random-intersections-curves-eo.mask.argb32.ref.png
new file mode 100644
index 0000000..c8b0c53
Binary files /dev/null and b/test/reference/random-intersections-curves-eo.mask.argb32.ref.png differ
diff --git a/test/reference/random-intersections-curves-eo.mask.rgb24.ref.png b/test/reference/random-intersections-curves-eo.mask.rgb24.ref.png
new file mode 100644
index 0000000..c8b0c53
Binary files /dev/null and b/test/reference/random-intersections-curves-eo.mask.rgb24.ref.png differ
diff --git a/test/reference/random-intersections-curves-nz.mask.argb32.ref.png b/test/reference/random-intersections-curves-nz.mask.argb32.ref.png
new file mode 100644
index 0000000..2678590
Binary files /dev/null and b/test/reference/random-intersections-curves-nz.mask.argb32.ref.png differ
diff --git a/test/reference/random-intersections-curves-nz.mask.rgb24.ref.png b/test/reference/random-intersections-curves-nz.mask.rgb24.ref.png
new file mode 100644
index 0000000..2678590
Binary files /dev/null and b/test/reference/random-intersections-curves-nz.mask.rgb24.ref.png differ
diff --git a/test/reference/random-intersections-eo.mask.argb32.ref.png b/test/reference/random-intersections-eo.mask.argb32.ref.png
new file mode 100644
index 0000000..0e8460e
Binary files /dev/null and b/test/reference/random-intersections-eo.mask.argb32.ref.png differ
diff --git a/test/reference/random-intersections-eo.mask.rgb24.ref.png b/test/reference/random-intersections-eo.mask.rgb24.ref.png
new file mode 100644
index 0000000..0e8460e
Binary files /dev/null and b/test/reference/random-intersections-eo.mask.rgb24.ref.png differ
diff --git a/test/reference/random-intersections-nonzero.mask.argb32.ref.png b/test/reference/random-intersections-nonzero.mask.argb32.ref.png
new file mode 100644
index 0000000..dfc2f33
Binary files /dev/null and b/test/reference/random-intersections-nonzero.mask.argb32.ref.png differ
diff --git a/test/reference/random-intersections-nonzero.mask.rgb24.ref.png b/test/reference/random-intersections-nonzero.mask.rgb24.ref.png
new file mode 100644
index 0000000..dfc2f33
Binary files /dev/null and b/test/reference/random-intersections-nonzero.mask.rgb24.ref.png differ
diff --git a/test/reference/raster-source.mask.argb32.ref.png b/test/reference/raster-source.mask.argb32.ref.png
new file mode 100644
index 0000000..ac5e560
Binary files /dev/null and b/test/reference/raster-source.mask.argb32.ref.png differ
diff --git a/test/reference/raster-source.mask.rgb24.ref.png b/test/reference/raster-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..ac5e560
Binary files /dev/null and b/test/reference/raster-source.mask.rgb24.ref.png differ
diff --git a/test/reference/rectangle-rounding-error.mask.argb32.ref.png b/test/reference/rectangle-rounding-error.mask.argb32.ref.png
new file mode 100644
index 0000000..6cc1b21
Binary files /dev/null and b/test/reference/rectangle-rounding-error.mask.argb32.ref.png differ
diff --git a/test/reference/rectangle-rounding-error.mask.rgb24.ref.png b/test/reference/rectangle-rounding-error.mask.rgb24.ref.png
new file mode 100644
index 0000000..6cc1b21
Binary files /dev/null and b/test/reference/rectangle-rounding-error.mask.rgb24.ref.png differ
diff --git a/test/reference/rectilinear-dash.mask.argb32.ref.png b/test/reference/rectilinear-dash.mask.argb32.ref.png
new file mode 100644
index 0000000..33e7851
Binary files /dev/null and b/test/reference/rectilinear-dash.mask.argb32.ref.png differ
diff --git a/test/reference/rectilinear-dash.mask.rgb24.ref.png b/test/reference/rectilinear-dash.mask.rgb24.ref.png
new file mode 100644
index 0000000..33e7851
Binary files /dev/null and b/test/reference/rectilinear-dash.mask.rgb24.ref.png differ
diff --git a/test/reference/rectilinear-fill.mask.argb32.ref.png b/test/reference/rectilinear-fill.mask.argb32.ref.png
new file mode 100644
index 0000000..dbaf383
Binary files /dev/null and b/test/reference/rectilinear-fill.mask.argb32.ref.png differ
diff --git a/test/reference/rectilinear-fill.mask.rgb24.ref.png b/test/reference/rectilinear-fill.mask.rgb24.ref.png
new file mode 100644
index 0000000..dbaf383
Binary files /dev/null and b/test/reference/rectilinear-fill.mask.rgb24.ref.png differ
diff --git a/test/reference/rectilinear-grid.mask.argb32.ref.png b/test/reference/rectilinear-grid.mask.argb32.ref.png
new file mode 100644
index 0000000..8d47ef5
Binary files /dev/null and b/test/reference/rectilinear-grid.mask.argb32.ref.png differ
diff --git a/test/reference/rectilinear-grid.mask.rgb24.ref.png b/test/reference/rectilinear-grid.mask.rgb24.ref.png
new file mode 100644
index 0000000..8d47ef5
Binary files /dev/null and b/test/reference/rectilinear-grid.mask.rgb24.ref.png differ
diff --git a/test/reference/rectilinear-miter-limit.mask.argb32.ref.png b/test/reference/rectilinear-miter-limit.mask.argb32.ref.png
new file mode 100644
index 0000000..d64d581
Binary files /dev/null and b/test/reference/rectilinear-miter-limit.mask.argb32.ref.png differ
diff --git a/test/reference/rectilinear-miter-limit.mask.rgb24.ref.png b/test/reference/rectilinear-miter-limit.mask.rgb24.ref.png
new file mode 100644
index 0000000..d64d581
Binary files /dev/null and b/test/reference/rectilinear-miter-limit.mask.rgb24.ref.png differ
diff --git a/test/reference/rectilinear-stroke.mask.argb32.ref.png b/test/reference/rectilinear-stroke.mask.argb32.ref.png
new file mode 100644
index 0000000..260909b
Binary files /dev/null and b/test/reference/rectilinear-stroke.mask.argb32.ref.png differ
diff --git a/test/reference/rectilinear-stroke.mask.rgb24.ref.png b/test/reference/rectilinear-stroke.mask.rgb24.ref.png
new file mode 100644
index 0000000..260909b
Binary files /dev/null and b/test/reference/rectilinear-stroke.mask.rgb24.ref.png differ
diff --git a/test/reference/reflected-stroke.mask.argb32.ref.png b/test/reference/reflected-stroke.mask.argb32.ref.png
new file mode 100644
index 0000000..9a7d6bc
Binary files /dev/null and b/test/reference/reflected-stroke.mask.argb32.ref.png differ
diff --git a/test/reference/reflected-stroke.mask.rgb24.ref.png b/test/reference/reflected-stroke.mask.rgb24.ref.png
new file mode 100644
index 0000000..9a7d6bc
Binary files /dev/null and b/test/reference/reflected-stroke.mask.rgb24.ref.png differ
diff --git a/test/reference/rel-path.mask.argb32.ref.png b/test/reference/rel-path.mask.argb32.ref.png
new file mode 100644
index 0000000..67fe178
Binary files /dev/null and b/test/reference/rel-path.mask.argb32.ref.png differ
diff --git a/test/reference/rel-path.mask.rgb24.ref.png b/test/reference/rel-path.mask.rgb24.ref.png
new file mode 100644
index 0000000..78d8a08
Binary files /dev/null and b/test/reference/rel-path.mask.rgb24.ref.png differ
diff --git a/test/reference/rgb24-ignore-alpha.mask.argb32.ref.png b/test/reference/rgb24-ignore-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..922eddd
Binary files /dev/null and b/test/reference/rgb24-ignore-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/rgb24-ignore-alpha.mask.rgb24.ref.png b/test/reference/rgb24-ignore-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..922eddd
Binary files /dev/null and b/test/reference/rgb24-ignore-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/rotate-clip-image-surface-paint.mask.argb32.ref.png b/test/reference/rotate-clip-image-surface-paint.mask.argb32.ref.png
new file mode 100644
index 0000000..7f74b2b
Binary files /dev/null and b/test/reference/rotate-clip-image-surface-paint.mask.argb32.ref.png differ
diff --git a/test/reference/rotate-clip-image-surface-paint.mask.rgb24.ref.png b/test/reference/rotate-clip-image-surface-paint.mask.rgb24.ref.png
new file mode 100644
index 0000000..7f74b2b
Binary files /dev/null and b/test/reference/rotate-clip-image-surface-paint.mask.rgb24.ref.png differ
diff --git a/test/reference/rotate-image-surface-paint.mask.argb32.ref.png b/test/reference/rotate-image-surface-paint.mask.argb32.ref.png
new file mode 100644
index 0000000..06a4820
Binary files /dev/null and b/test/reference/rotate-image-surface-paint.mask.argb32.ref.png differ
diff --git a/test/reference/rotate-image-surface-paint.mask.rgb24.ref.png b/test/reference/rotate-image-surface-paint.mask.rgb24.ref.png
new file mode 100644
index 0000000..06a4820
Binary files /dev/null and b/test/reference/rotate-image-surface-paint.mask.rgb24.ref.png differ
diff --git a/test/reference/rotated-clip.mask.argb32.ref.png b/test/reference/rotated-clip.mask.argb32.ref.png
new file mode 100644
index 0000000..8168f9d
Binary files /dev/null and b/test/reference/rotated-clip.mask.argb32.ref.png differ
diff --git a/test/reference/rotated-clip.mask.rgb24.ref.png b/test/reference/rotated-clip.mask.rgb24.ref.png
new file mode 100644
index 0000000..8168f9d
Binary files /dev/null and b/test/reference/rotated-clip.mask.rgb24.ref.png differ
diff --git a/test/reference/rounded-rectangle-fill.mask.argb32.ref.png b/test/reference/rounded-rectangle-fill.mask.argb32.ref.png
new file mode 100644
index 0000000..3232c07
Binary files /dev/null and b/test/reference/rounded-rectangle-fill.mask.argb32.ref.png differ
diff --git a/test/reference/rounded-rectangle-fill.mask.rgb24.ref.png b/test/reference/rounded-rectangle-fill.mask.rgb24.ref.png
new file mode 100644
index 0000000..3232c07
Binary files /dev/null and b/test/reference/rounded-rectangle-fill.mask.rgb24.ref.png differ
diff --git a/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png b/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png
new file mode 100644
index 0000000..3f2a1fb
Binary files /dev/null and b/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png differ
diff --git a/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png b/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png
new file mode 100644
index 0000000..3f2a1fb
Binary files /dev/null and b/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png differ
diff --git a/test/reference/scale-down-source-surface-paint.mask.argb32.ref.png b/test/reference/scale-down-source-surface-paint.mask.argb32.ref.png
new file mode 100644
index 0000000..7477094
Binary files /dev/null and b/test/reference/scale-down-source-surface-paint.mask.argb32.ref.png differ
diff --git a/test/reference/scale-down-source-surface-paint.mask.rgb24.ref.png b/test/reference/scale-down-source-surface-paint.mask.rgb24.ref.png
new file mode 100644
index 0000000..7477094
Binary files /dev/null and b/test/reference/scale-down-source-surface-paint.mask.rgb24.ref.png differ
diff --git a/test/reference/scale-offset-image.mask.argb32.ref.png b/test/reference/scale-offset-image.mask.argb32.ref.png
new file mode 100644
index 0000000..ab1ced8
Binary files /dev/null and b/test/reference/scale-offset-image.mask.argb32.ref.png differ
diff --git a/test/reference/scale-offset-image.mask.rgb24.ref.png b/test/reference/scale-offset-image.mask.rgb24.ref.png
new file mode 100644
index 0000000..ab1ced8
Binary files /dev/null and b/test/reference/scale-offset-image.mask.rgb24.ref.png differ
diff --git a/test/reference/scale-offset-similar.mask.argb32.ref.png b/test/reference/scale-offset-similar.mask.argb32.ref.png
new file mode 100644
index 0000000..ab1ced8
Binary files /dev/null and b/test/reference/scale-offset-similar.mask.argb32.ref.png differ
diff --git a/test/reference/scale-offset-similar.mask.rgb24.ref.png b/test/reference/scale-offset-similar.mask.rgb24.ref.png
new file mode 100644
index 0000000..ab1ced8
Binary files /dev/null and b/test/reference/scale-offset-similar.mask.rgb24.ref.png differ
diff --git a/test/reference/scale-source-surface-paint.mask.argb32.ref.png b/test/reference/scale-source-surface-paint.mask.argb32.ref.png
new file mode 100644
index 0000000..e159d15
Binary files /dev/null and b/test/reference/scale-source-surface-paint.mask.argb32.ref.png differ
diff --git a/test/reference/scale-source-surface-paint.mask.rgb24.ref.png b/test/reference/scale-source-surface-paint.mask.rgb24.ref.png
new file mode 100644
index 0000000..3491a7c
Binary files /dev/null and b/test/reference/scale-source-surface-paint.mask.rgb24.ref.png differ
diff --git a/test/reference/select-font-face.mask.argb32.ref.png b/test/reference/select-font-face.mask.argb32.ref.png
new file mode 100644
index 0000000..1334a9a
Binary files /dev/null and b/test/reference/select-font-face.mask.argb32.ref.png differ
diff --git a/test/reference/select-font-face.mask.rgb24.ref.png b/test/reference/select-font-face.mask.rgb24.ref.png
new file mode 100644
index 0000000..1334a9a
Binary files /dev/null and b/test/reference/select-font-face.mask.rgb24.ref.png differ
diff --git a/test/reference/select-font-face.traps.argb32.ref.png b/test/reference/select-font-face.traps.argb32.ref.png
new file mode 100644
index 0000000..1334a9a
Binary files /dev/null and b/test/reference/select-font-face.traps.argb32.ref.png differ
diff --git a/test/reference/select-font-face.traps.rgb24.ref.png b/test/reference/select-font-face.traps.rgb24.ref.png
new file mode 100644
index 0000000..1334a9a
Binary files /dev/null and b/test/reference/select-font-face.traps.rgb24.ref.png differ
diff --git a/test/reference/self-copy-overlap.mask.argb32.ref.png b/test/reference/self-copy-overlap.mask.argb32.ref.png
new file mode 100644
index 0000000..a70e819
Binary files /dev/null and b/test/reference/self-copy-overlap.mask.argb32.ref.png differ
diff --git a/test/reference/self-copy-overlap.mask.rgb24.ref.png b/test/reference/self-copy-overlap.mask.rgb24.ref.png
new file mode 100644
index 0000000..e9cd7b5
Binary files /dev/null and b/test/reference/self-copy-overlap.mask.rgb24.ref.png differ
diff --git a/test/reference/self-copy.mask.argb32.ref.png b/test/reference/self-copy.mask.argb32.ref.png
new file mode 100644
index 0000000..d8221d8
Binary files /dev/null and b/test/reference/self-copy.mask.argb32.ref.png differ
diff --git a/test/reference/self-copy.mask.rgb24.ref.png b/test/reference/self-copy.mask.rgb24.ref.png
new file mode 100644
index 0000000..d8221d8
Binary files /dev/null and b/test/reference/self-copy.mask.rgb24.ref.png differ
diff --git a/test/reference/self-intersecting.mask.argb32.ref.png b/test/reference/self-intersecting.mask.argb32.ref.png
new file mode 100644
index 0000000..d554d83
Binary files /dev/null and b/test/reference/self-intersecting.mask.argb32.ref.png differ
diff --git a/test/reference/self-intersecting.mask.rgb24.ref.png b/test/reference/self-intersecting.mask.rgb24.ref.png
new file mode 100644
index 0000000..d554d83
Binary files /dev/null and b/test/reference/self-intersecting.mask.rgb24.ref.png differ
diff --git a/test/reference/set-source.mask.argb32.ref.png b/test/reference/set-source.mask.argb32.ref.png
new file mode 100644
index 0000000..222b372
Binary files /dev/null and b/test/reference/set-source.mask.argb32.ref.png differ
diff --git a/test/reference/set-source.mask.rgb24.ref.png b/test/reference/set-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..5e13c82
Binary files /dev/null and b/test/reference/set-source.mask.rgb24.ref.png differ
diff --git a/test/reference/shape-general-convex.mask.argb32.ref.png b/test/reference/shape-general-convex.mask.argb32.ref.png
new file mode 100644
index 0000000..b4d4df7
Binary files /dev/null and b/test/reference/shape-general-convex.mask.argb32.ref.png differ
diff --git a/test/reference/shape-general-convex.mask.rgb24.ref.png b/test/reference/shape-general-convex.mask.rgb24.ref.png
new file mode 100644
index 0000000..b4d4df7
Binary files /dev/null and b/test/reference/shape-general-convex.mask.rgb24.ref.png differ
diff --git a/test/reference/shape-sierpinski.mask.argb32.ref.png b/test/reference/shape-sierpinski.mask.argb32.ref.png
new file mode 100644
index 0000000..ac98557
Binary files /dev/null and b/test/reference/shape-sierpinski.mask.argb32.ref.png differ
diff --git a/test/reference/shape-sierpinski.mask.rgb24.ref.png b/test/reference/shape-sierpinski.mask.rgb24.ref.png
new file mode 100644
index 0000000..ac98557
Binary files /dev/null and b/test/reference/shape-sierpinski.mask.rgb24.ref.png differ
diff --git a/test/reference/show-glyphs-advance.mask.argb32.ref.png b/test/reference/show-glyphs-advance.mask.argb32.ref.png
new file mode 100644
index 0000000..e65ad05
Binary files /dev/null and b/test/reference/show-glyphs-advance.mask.argb32.ref.png differ
diff --git a/test/reference/show-glyphs-advance.mask.rgb24.ref.png b/test/reference/show-glyphs-advance.mask.rgb24.ref.png
new file mode 100644
index 0000000..e65ad05
Binary files /dev/null and b/test/reference/show-glyphs-advance.mask.rgb24.ref.png differ
diff --git a/test/reference/show-glyphs-advance.traps.argb32.ref.png b/test/reference/show-glyphs-advance.traps.argb32.ref.png
new file mode 100644
index 0000000..e65ad05
Binary files /dev/null and b/test/reference/show-glyphs-advance.traps.argb32.ref.png differ
diff --git a/test/reference/show-glyphs-advance.traps.rgb24.ref.png b/test/reference/show-glyphs-advance.traps.rgb24.ref.png
new file mode 100644
index 0000000..e65ad05
Binary files /dev/null and b/test/reference/show-glyphs-advance.traps.rgb24.ref.png differ
diff --git a/test/reference/show-glyphs-many.mask.argb32.ref.png b/test/reference/show-glyphs-many.mask.argb32.ref.png
new file mode 100644
index 0000000..b638015
Binary files /dev/null and b/test/reference/show-glyphs-many.mask.argb32.ref.png differ
diff --git a/test/reference/show-glyphs-many.mask.rgb24.ref.png b/test/reference/show-glyphs-many.mask.rgb24.ref.png
new file mode 100644
index 0000000..b638015
Binary files /dev/null and b/test/reference/show-glyphs-many.mask.rgb24.ref.png differ
diff --git a/test/reference/show-text-current-point.mask.argb32.ref.png b/test/reference/show-text-current-point.mask.argb32.ref.png
new file mode 100644
index 0000000..d60d4ac
Binary files /dev/null and b/test/reference/show-text-current-point.mask.argb32.ref.png differ
diff --git a/test/reference/show-text-current-point.mask.rgb24.ref.png b/test/reference/show-text-current-point.mask.rgb24.ref.png
new file mode 100644
index 0000000..d60d4ac
Binary files /dev/null and b/test/reference/show-text-current-point.mask.rgb24.ref.png differ
diff --git a/test/reference/show-text-current-point.traps.argb32.ref.png b/test/reference/show-text-current-point.traps.argb32.ref.png
new file mode 100644
index 0000000..d60d4ac
Binary files /dev/null and b/test/reference/show-text-current-point.traps.argb32.ref.png differ
diff --git a/test/reference/show-text-current-point.traps.rgb24.ref.png b/test/reference/show-text-current-point.traps.rgb24.ref.png
new file mode 100644
index 0000000..d60d4ac
Binary files /dev/null and b/test/reference/show-text-current-point.traps.rgb24.ref.png differ
diff --git a/test/reference/skew-extreme.mask.argb32.ref.png b/test/reference/skew-extreme.mask.argb32.ref.png
new file mode 100644
index 0000000..5ccd8c0
Binary files /dev/null and b/test/reference/skew-extreme.mask.argb32.ref.png differ
diff --git a/test/reference/skew-extreme.mask.rgb24.ref.png b/test/reference/skew-extreme.mask.rgb24.ref.png
new file mode 100644
index 0000000..5ccd8c0
Binary files /dev/null and b/test/reference/skew-extreme.mask.rgb24.ref.png differ
diff --git a/test/reference/smask-fill.mask.argb32.ref.png b/test/reference/smask-fill.mask.argb32.ref.png
new file mode 100644
index 0000000..84e1755
Binary files /dev/null and b/test/reference/smask-fill.mask.argb32.ref.png differ
diff --git a/test/reference/smask-fill.mask.rgb24.ref.png b/test/reference/smask-fill.mask.rgb24.ref.png
new file mode 100644
index 0000000..84e1755
Binary files /dev/null and b/test/reference/smask-fill.mask.rgb24.ref.png differ
diff --git a/test/reference/smask-image-mask.mask.argb32.ref.png b/test/reference/smask-image-mask.mask.argb32.ref.png
new file mode 100644
index 0000000..12063bd
Binary files /dev/null and b/test/reference/smask-image-mask.mask.argb32.ref.png differ
diff --git a/test/reference/smask-image-mask.mask.rgb24.ref.png b/test/reference/smask-image-mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..12063bd
Binary files /dev/null and b/test/reference/smask-image-mask.mask.rgb24.ref.png differ
diff --git a/test/reference/smask-mask.mask.argb32.ref.png b/test/reference/smask-mask.mask.argb32.ref.png
new file mode 100644
index 0000000..80329c2
Binary files /dev/null and b/test/reference/smask-mask.mask.argb32.ref.png differ
diff --git a/test/reference/smask-mask.mask.rgb24.ref.png b/test/reference/smask-mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..80329c2
Binary files /dev/null and b/test/reference/smask-mask.mask.rgb24.ref.png differ
diff --git a/test/reference/smask-paint.mask.argb32.ref.png b/test/reference/smask-paint.mask.argb32.ref.png
new file mode 100644
index 0000000..95af29a
Binary files /dev/null and b/test/reference/smask-paint.mask.argb32.ref.png differ
diff --git a/test/reference/smask-paint.mask.rgb24.ref.png b/test/reference/smask-paint.mask.rgb24.ref.png
new file mode 100644
index 0000000..95af29a
Binary files /dev/null and b/test/reference/smask-paint.mask.rgb24.ref.png differ
diff --git a/test/reference/smask-stroke.mask.argb32.ref.png b/test/reference/smask-stroke.mask.argb32.ref.png
new file mode 100644
index 0000000..d7b56e5
Binary files /dev/null and b/test/reference/smask-stroke.mask.argb32.ref.png differ
diff --git a/test/reference/smask-stroke.mask.rgb24.ref.png b/test/reference/smask-stroke.mask.rgb24.ref.png
new file mode 100644
index 0000000..d7b56e5
Binary files /dev/null and b/test/reference/smask-stroke.mask.rgb24.ref.png differ
diff --git a/test/reference/smask-text.mask.argb32.ref.png b/test/reference/smask-text.mask.argb32.ref.png
new file mode 100644
index 0000000..344ac20
Binary files /dev/null and b/test/reference/smask-text.mask.argb32.ref.png differ
diff --git a/test/reference/smask-text.mask.rgb24.ref.png b/test/reference/smask-text.mask.rgb24.ref.png
new file mode 100644
index 0000000..344ac20
Binary files /dev/null and b/test/reference/smask-text.mask.rgb24.ref.png differ
diff --git a/test/reference/smask-text.traps.argb32.ref.png b/test/reference/smask-text.traps.argb32.ref.png
new file mode 100644
index 0000000..66ef289
Binary files /dev/null and b/test/reference/smask-text.traps.argb32.ref.png differ
diff --git a/test/reference/smask-text.traps.rgb24.ref.png b/test/reference/smask-text.traps.rgb24.ref.png
new file mode 100644
index 0000000..66ef289
Binary files /dev/null and b/test/reference/smask-text.traps.rgb24.ref.png differ
diff --git a/test/reference/smask.mask.argb32.ref.png b/test/reference/smask.mask.argb32.ref.png
new file mode 100644
index 0000000..dab308d
Binary files /dev/null and b/test/reference/smask.mask.argb32.ref.png differ
diff --git a/test/reference/smask.mask.rgb24.ref.png b/test/reference/smask.mask.rgb24.ref.png
new file mode 100644
index 0000000..dab308d
Binary files /dev/null and b/test/reference/smask.mask.rgb24.ref.png differ
diff --git a/test/reference/smask.traps.argb32.ref.png b/test/reference/smask.traps.argb32.ref.png
new file mode 100644
index 0000000..357e8e7
Binary files /dev/null and b/test/reference/smask.traps.argb32.ref.png differ
diff --git a/test/reference/smask.traps.rgb24.ref.png b/test/reference/smask.traps.rgb24.ref.png
new file mode 100644
index 0000000..357e8e7
Binary files /dev/null and b/test/reference/smask.traps.rgb24.ref.png differ
diff --git a/test/reference/solid-pattern-cache-stress.mask.argb32.ref.png b/test/reference/solid-pattern-cache-stress.mask.argb32.ref.png
new file mode 100644
index 0000000..08a2ce1
Binary files /dev/null and b/test/reference/solid-pattern-cache-stress.mask.argb32.ref.png differ
diff --git a/test/reference/solid-pattern-cache-stress.mask.rgb24.ref.png b/test/reference/solid-pattern-cache-stress.mask.rgb24.ref.png
new file mode 100644
index 0000000..08a2ce1
Binary files /dev/null and b/test/reference/solid-pattern-cache-stress.mask.rgb24.ref.png differ
diff --git a/test/reference/source-clip-scale.mask.argb32.ref.png b/test/reference/source-clip-scale.mask.argb32.ref.png
new file mode 100644
index 0000000..4b63ad9
Binary files /dev/null and b/test/reference/source-clip-scale.mask.argb32.ref.png differ
diff --git a/test/reference/source-clip-scale.mask.rgb24.ref.png b/test/reference/source-clip-scale.mask.rgb24.ref.png
new file mode 100644
index 0000000..4b63ad9
Binary files /dev/null and b/test/reference/source-clip-scale.mask.rgb24.ref.png differ
diff --git a/test/reference/source-clip.mask.argb32.ref.png b/test/reference/source-clip.mask.argb32.ref.png
new file mode 100644
index 0000000..821bc6c
Binary files /dev/null and b/test/reference/source-clip.mask.argb32.ref.png differ
diff --git a/test/reference/source-clip.mask.rgb24.ref.png b/test/reference/source-clip.mask.rgb24.ref.png
new file mode 100644
index 0000000..821bc6c
Binary files /dev/null and b/test/reference/source-clip.mask.rgb24.ref.png differ
diff --git a/test/reference/source-surface-scale-paint.mask.argb32.ref.png b/test/reference/source-surface-scale-paint.mask.argb32.ref.png
new file mode 100644
index 0000000..087ef75
Binary files /dev/null and b/test/reference/source-surface-scale-paint.mask.argb32.ref.png differ
diff --git a/test/reference/source-surface-scale-paint.mask.rgb24.ref.png b/test/reference/source-surface-scale-paint.mask.rgb24.ref.png
new file mode 100644
index 0000000..322af21
Binary files /dev/null and b/test/reference/source-surface-scale-paint.mask.rgb24.ref.png differ
diff --git a/test/reference/spline-decomposition.mask.argb32.ref.png b/test/reference/spline-decomposition.mask.argb32.ref.png
new file mode 100644
index 0000000..e93e621
Binary files /dev/null and b/test/reference/spline-decomposition.mask.argb32.ref.png differ
diff --git a/test/reference/spline-decomposition.mask.rgb24.ref.png b/test/reference/spline-decomposition.mask.rgb24.ref.png
new file mode 100644
index 0000000..e93e621
Binary files /dev/null and b/test/reference/spline-decomposition.mask.rgb24.ref.png differ
diff --git a/test/reference/stride-12-image.base.argb32.ref.png b/test/reference/stride-12-image.base.argb32.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/stride-12-image.base.argb32.ref.png differ
diff --git a/test/reference/stride-12-image.base.rgb24.ref.png b/test/reference/stride-12-image.base.rgb24.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/stride-12-image.base.rgb24.ref.png differ
diff --git a/test/reference/stride-12-image.mask.argb32.ref.png b/test/reference/stride-12-image.mask.argb32.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/stride-12-image.mask.argb32.ref.png differ
diff --git a/test/reference/stride-12-image.mask.rgb24.ref.png b/test/reference/stride-12-image.mask.rgb24.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/stride-12-image.mask.rgb24.ref.png differ
diff --git a/test/reference/stride-12-image.traps.argb32.ref.png b/test/reference/stride-12-image.traps.argb32.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/stride-12-image.traps.argb32.ref.png differ
diff --git a/test/reference/stride-12-image.traps.rgb24.ref.png b/test/reference/stride-12-image.traps.rgb24.ref.png
new file mode 100644
index 0000000..4428456
Binary files /dev/null and b/test/reference/stride-12-image.traps.rgb24.ref.png differ
diff --git a/test/reference/stroke-ctm-caps.mask.argb32.ref.png b/test/reference/stroke-ctm-caps.mask.argb32.ref.png
new file mode 100644
index 0000000..3a77d3e
Binary files /dev/null and b/test/reference/stroke-ctm-caps.mask.argb32.ref.png differ
diff --git a/test/reference/stroke-ctm-caps.mask.rgb24.ref.png b/test/reference/stroke-ctm-caps.mask.rgb24.ref.png
new file mode 100644
index 0000000..3a77d3e
Binary files /dev/null and b/test/reference/stroke-ctm-caps.mask.rgb24.ref.png differ
diff --git a/test/reference/stroke-image.mask.argb32.ref.png b/test/reference/stroke-image.mask.argb32.ref.png
new file mode 100644
index 0000000..03a07eb
Binary files /dev/null and b/test/reference/stroke-image.mask.argb32.ref.png differ
diff --git a/test/reference/stroke-image.mask.rgb24.ref.png b/test/reference/stroke-image.mask.rgb24.ref.png
new file mode 100644
index 0000000..03a07eb
Binary files /dev/null and b/test/reference/stroke-image.mask.rgb24.ref.png differ
diff --git a/test/reference/stroke-open-box.mask.argb32.ref.png b/test/reference/stroke-open-box.mask.argb32.ref.png
new file mode 100644
index 0000000..b5f5bd5
Binary files /dev/null and b/test/reference/stroke-open-box.mask.argb32.ref.png differ
diff --git a/test/reference/stroke-open-box.mask.rgb24.ref.png b/test/reference/stroke-open-box.mask.rgb24.ref.png
new file mode 100644
index 0000000..b5f5bd5
Binary files /dev/null and b/test/reference/stroke-open-box.mask.rgb24.ref.png differ
diff --git a/test/reference/stroke-pattern.base.argb32.ref.png b/test/reference/stroke-pattern.base.argb32.ref.png
new file mode 100644
index 0000000..67bb031
Binary files /dev/null and b/test/reference/stroke-pattern.base.argb32.ref.png differ
diff --git a/test/reference/stroke-pattern.base.rgb24.ref.png b/test/reference/stroke-pattern.base.rgb24.ref.png
new file mode 100644
index 0000000..67bb031
Binary files /dev/null and b/test/reference/stroke-pattern.base.rgb24.ref.png differ
diff --git a/test/reference/stroke-pattern.mask.argb32.ref.png b/test/reference/stroke-pattern.mask.argb32.ref.png
new file mode 100644
index 0000000..38ff6ad
Binary files /dev/null and b/test/reference/stroke-pattern.mask.argb32.ref.png differ
diff --git a/test/reference/stroke-pattern.mask.rgb24.ref.png b/test/reference/stroke-pattern.mask.rgb24.ref.png
new file mode 100644
index 0000000..38ff6ad
Binary files /dev/null and b/test/reference/stroke-pattern.mask.rgb24.ref.png differ
diff --git a/test/reference/stroke-pattern.traps.argb32.ref.png b/test/reference/stroke-pattern.traps.argb32.ref.png
new file mode 100644
index 0000000..67bb031
Binary files /dev/null and b/test/reference/stroke-pattern.traps.argb32.ref.png differ
diff --git a/test/reference/stroke-pattern.traps.rgb24.ref.png b/test/reference/stroke-pattern.traps.rgb24.ref.png
new file mode 100644
index 0000000..67bb031
Binary files /dev/null and b/test/reference/stroke-pattern.traps.rgb24.ref.png differ
diff --git a/test/reference/subsurface-image-repeat.mask.argb32.ref.png b/test/reference/subsurface-image-repeat.mask.argb32.ref.png
new file mode 100644
index 0000000..3dd6306
Binary files /dev/null and b/test/reference/subsurface-image-repeat.mask.argb32.ref.png differ
diff --git a/test/reference/subsurface-image-repeat.mask.rgb24.ref.png b/test/reference/subsurface-image-repeat.mask.rgb24.ref.png
new file mode 100644
index 0000000..3dd6306
Binary files /dev/null and b/test/reference/subsurface-image-repeat.mask.rgb24.ref.png differ
diff --git a/test/reference/subsurface-modify-child.mask.argb32.ref.png b/test/reference/subsurface-modify-child.mask.argb32.ref.png
new file mode 100644
index 0000000..c37e22e
Binary files /dev/null and b/test/reference/subsurface-modify-child.mask.argb32.ref.png differ
diff --git a/test/reference/subsurface-modify-child.mask.rgb24.ref.png b/test/reference/subsurface-modify-child.mask.rgb24.ref.png
new file mode 100644
index 0000000..c37e22e
Binary files /dev/null and b/test/reference/subsurface-modify-child.mask.rgb24.ref.png differ
diff --git a/test/reference/subsurface-modify-parent.mask.argb32.ref.png b/test/reference/subsurface-modify-parent.mask.argb32.ref.png
new file mode 100644
index 0000000..c37e22e
Binary files /dev/null and b/test/reference/subsurface-modify-parent.mask.argb32.ref.png differ
diff --git a/test/reference/subsurface-modify-parent.mask.rgb24.ref.png b/test/reference/subsurface-modify-parent.mask.rgb24.ref.png
new file mode 100644
index 0000000..c37e22e
Binary files /dev/null and b/test/reference/subsurface-modify-parent.mask.rgb24.ref.png differ
diff --git a/test/reference/subsurface-outside-target.mask.argb32.ref.png b/test/reference/subsurface-outside-target.mask.argb32.ref.png
new file mode 100644
index 0000000..337cdd8
Binary files /dev/null and b/test/reference/subsurface-outside-target.mask.argb32.ref.png differ
diff --git a/test/reference/subsurface-outside-target.mask.rgb24.ref.png b/test/reference/subsurface-outside-target.mask.rgb24.ref.png
new file mode 100644
index 0000000..368936e
Binary files /dev/null and b/test/reference/subsurface-outside-target.mask.rgb24.ref.png differ
diff --git a/test/reference/subsurface-outside-target.traps.argb32.ref.png b/test/reference/subsurface-outside-target.traps.argb32.ref.png
new file mode 100644
index 0000000..337cdd8
Binary files /dev/null and b/test/reference/subsurface-outside-target.traps.argb32.ref.png differ
diff --git a/test/reference/subsurface-outside-target.traps.rgb24.ref.png b/test/reference/subsurface-outside-target.traps.rgb24.ref.png
new file mode 100644
index 0000000..368936e
Binary files /dev/null and b/test/reference/subsurface-outside-target.traps.rgb24.ref.png differ
diff --git a/test/reference/subsurface-pad.mask.argb32.ref.png b/test/reference/subsurface-pad.mask.argb32.ref.png
new file mode 100644
index 0000000..eeb9f8f
Binary files /dev/null and b/test/reference/subsurface-pad.mask.argb32.ref.png differ
diff --git a/test/reference/subsurface-pad.mask.rgb24.ref.png b/test/reference/subsurface-pad.mask.rgb24.ref.png
new file mode 100644
index 0000000..eeb9f8f
Binary files /dev/null and b/test/reference/subsurface-pad.mask.rgb24.ref.png differ
diff --git a/test/reference/subsurface-reflect.mask.argb32.ref.png b/test/reference/subsurface-reflect.mask.argb32.ref.png
new file mode 100644
index 0000000..55643f4
Binary files /dev/null and b/test/reference/subsurface-reflect.mask.argb32.ref.png differ
diff --git a/test/reference/subsurface-reflect.mask.rgb24.ref.png b/test/reference/subsurface-reflect.mask.rgb24.ref.png
new file mode 100644
index 0000000..55643f4
Binary files /dev/null and b/test/reference/subsurface-reflect.mask.rgb24.ref.png differ
diff --git a/test/reference/subsurface-repeat.mask.argb32.ref.png b/test/reference/subsurface-repeat.mask.argb32.ref.png
new file mode 100644
index 0000000..c37e22e
Binary files /dev/null and b/test/reference/subsurface-repeat.mask.argb32.ref.png differ
diff --git a/test/reference/subsurface-repeat.mask.rgb24.ref.png b/test/reference/subsurface-repeat.mask.rgb24.ref.png
new file mode 100644
index 0000000..c37e22e
Binary files /dev/null and b/test/reference/subsurface-repeat.mask.rgb24.ref.png differ
diff --git a/test/reference/subsurface-scale.base.argb32.ref.png b/test/reference/subsurface-scale.base.argb32.ref.png
new file mode 100644
index 0000000..69bb0fb
Binary files /dev/null and b/test/reference/subsurface-scale.base.argb32.ref.png differ
diff --git a/test/reference/subsurface-scale.base.rgb24.ref.png b/test/reference/subsurface-scale.base.rgb24.ref.png
new file mode 100644
index 0000000..69bb0fb
Binary files /dev/null and b/test/reference/subsurface-scale.base.rgb24.ref.png differ
diff --git a/test/reference/subsurface-scale.mask.argb32.ref.png b/test/reference/subsurface-scale.mask.argb32.ref.png
new file mode 100644
index 0000000..69bb0fb
Binary files /dev/null and b/test/reference/subsurface-scale.mask.argb32.ref.png differ
diff --git a/test/reference/subsurface-scale.mask.rgb24.ref.png b/test/reference/subsurface-scale.mask.rgb24.ref.png
new file mode 100644
index 0000000..69bb0fb
Binary files /dev/null and b/test/reference/subsurface-scale.mask.rgb24.ref.png differ
diff --git a/test/reference/subsurface-scale.traps.argb32.ref.png b/test/reference/subsurface-scale.traps.argb32.ref.png
new file mode 100644
index 0000000..69bb0fb
Binary files /dev/null and b/test/reference/subsurface-scale.traps.argb32.ref.png differ
diff --git a/test/reference/subsurface-scale.traps.rgb24.ref.png b/test/reference/subsurface-scale.traps.rgb24.ref.png
new file mode 100644
index 0000000..69bb0fb
Binary files /dev/null and b/test/reference/subsurface-scale.traps.rgb24.ref.png differ
diff --git a/test/reference/subsurface-similar-repeat.mask.argb32.ref.png b/test/reference/subsurface-similar-repeat.mask.argb32.ref.png
new file mode 100644
index 0000000..c37e22e
Binary files /dev/null and b/test/reference/subsurface-similar-repeat.mask.argb32.ref.png differ
diff --git a/test/reference/subsurface-similar-repeat.mask.rgb24.ref.png b/test/reference/subsurface-similar-repeat.mask.rgb24.ref.png
new file mode 100644
index 0000000..c37e22e
Binary files /dev/null and b/test/reference/subsurface-similar-repeat.mask.rgb24.ref.png differ
diff --git a/test/reference/subsurface.mask.argb32.ref.png b/test/reference/subsurface.mask.argb32.ref.png
new file mode 100644
index 0000000..feeb5dc
Binary files /dev/null and b/test/reference/subsurface.mask.argb32.ref.png differ
diff --git a/test/reference/subsurface.mask.rgb24.ref.png b/test/reference/subsurface.mask.rgb24.ref.png
new file mode 100644
index 0000000..feeb5dc
Binary files /dev/null and b/test/reference/subsurface.mask.rgb24.ref.png differ
diff --git a/test/reference/surface-pattern-big-scale-down.mask.argb32.ref.png b/test/reference/surface-pattern-big-scale-down.mask.argb32.ref.png
new file mode 100644
index 0000000..c050990
Binary files /dev/null and b/test/reference/surface-pattern-big-scale-down.mask.argb32.ref.png differ
diff --git a/test/reference/surface-pattern-big-scale-down.mask.rgb24.ref.png b/test/reference/surface-pattern-big-scale-down.mask.rgb24.ref.png
new file mode 100644
index 0000000..c050990
Binary files /dev/null and b/test/reference/surface-pattern-big-scale-down.mask.rgb24.ref.png differ
diff --git a/test/reference/surface-pattern-operator.mask.argb32.ref.png b/test/reference/surface-pattern-operator.mask.argb32.ref.png
new file mode 100644
index 0000000..8178030
Binary files /dev/null and b/test/reference/surface-pattern-operator.mask.argb32.ref.png differ
diff --git a/test/reference/surface-pattern-operator.mask.rgb24.ref.png b/test/reference/surface-pattern-operator.mask.rgb24.ref.png
new file mode 100644
index 0000000..2378bdd
Binary files /dev/null and b/test/reference/surface-pattern-operator.mask.rgb24.ref.png differ
diff --git a/test/reference/surface-pattern-scale-down-extend-none.mask.argb32.ref.png b/test/reference/surface-pattern-scale-down-extend-none.mask.argb32.ref.png
new file mode 100644
index 0000000..9df14cc
Binary files /dev/null and b/test/reference/surface-pattern-scale-down-extend-none.mask.argb32.ref.png differ
diff --git a/test/reference/surface-pattern-scale-down-extend-none.mask.rgb24.ref.png b/test/reference/surface-pattern-scale-down-extend-none.mask.rgb24.ref.png
new file mode 100644
index 0000000..9df14cc
Binary files /dev/null and b/test/reference/surface-pattern-scale-down-extend-none.mask.rgb24.ref.png differ
diff --git a/test/reference/surface-pattern-scale-down-extend-pad.mask.argb32.ref.png b/test/reference/surface-pattern-scale-down-extend-pad.mask.argb32.ref.png
new file mode 100644
index 0000000..2ee9419
Binary files /dev/null and b/test/reference/surface-pattern-scale-down-extend-pad.mask.argb32.ref.png differ
diff --git a/test/reference/surface-pattern-scale-down-extend-pad.mask.rgb24.ref.png b/test/reference/surface-pattern-scale-down-extend-pad.mask.rgb24.ref.png
new file mode 100644
index 0000000..2ee9419
Binary files /dev/null and b/test/reference/surface-pattern-scale-down-extend-pad.mask.rgb24.ref.png differ
diff --git a/test/reference/surface-pattern-scale-down-extend-reflect.mask.argb32.ref.png b/test/reference/surface-pattern-scale-down-extend-reflect.mask.argb32.ref.png
new file mode 100644
index 0000000..f2e93a7
Binary files /dev/null and b/test/reference/surface-pattern-scale-down-extend-reflect.mask.argb32.ref.png differ
diff --git a/test/reference/surface-pattern-scale-down-extend-reflect.mask.rgb24.ref.png b/test/reference/surface-pattern-scale-down-extend-reflect.mask.rgb24.ref.png
new file mode 100644
index 0000000..f2e93a7
Binary files /dev/null and b/test/reference/surface-pattern-scale-down-extend-reflect.mask.rgb24.ref.png differ
diff --git a/test/reference/surface-pattern-scale-down-extend-repeat.mask.argb32.ref.png b/test/reference/surface-pattern-scale-down-extend-repeat.mask.argb32.ref.png
new file mode 100644
index 0000000..c5cff0f
Binary files /dev/null and b/test/reference/surface-pattern-scale-down-extend-repeat.mask.argb32.ref.png differ
diff --git a/test/reference/surface-pattern-scale-down-extend-repeat.mask.rgb24.ref.png b/test/reference/surface-pattern-scale-down-extend-repeat.mask.rgb24.ref.png
new file mode 100644
index 0000000..c5cff0f
Binary files /dev/null and b/test/reference/surface-pattern-scale-down-extend-repeat.mask.rgb24.ref.png differ
diff --git a/test/reference/surface-pattern-scale-down.mask.argb32.ref.png b/test/reference/surface-pattern-scale-down.mask.argb32.ref.png
new file mode 100644
index 0000000..8bb58a2
Binary files /dev/null and b/test/reference/surface-pattern-scale-down.mask.argb32.ref.png differ
diff --git a/test/reference/surface-pattern-scale-down.mask.rgb24.ref.png b/test/reference/surface-pattern-scale-down.mask.rgb24.ref.png
new file mode 100644
index 0000000..8bb58a2
Binary files /dev/null and b/test/reference/surface-pattern-scale-down.mask.rgb24.ref.png differ
diff --git a/test/reference/surface-pattern-scale-up.mask.argb32.ref.png b/test/reference/surface-pattern-scale-up.mask.argb32.ref.png
new file mode 100644
index 0000000..e8d84e2
Binary files /dev/null and b/test/reference/surface-pattern-scale-up.mask.argb32.ref.png differ
diff --git a/test/reference/surface-pattern-scale-up.mask.rgb24.ref.png b/test/reference/surface-pattern-scale-up.mask.rgb24.ref.png
new file mode 100644
index 0000000..e8d84e2
Binary files /dev/null and b/test/reference/surface-pattern-scale-up.mask.rgb24.ref.png differ
diff --git a/test/reference/surface-pattern.mask.argb32.ref.png b/test/reference/surface-pattern.mask.argb32.ref.png
new file mode 100644
index 0000000..079ebfb
Binary files /dev/null and b/test/reference/surface-pattern.mask.argb32.ref.png differ
diff --git a/test/reference/surface-pattern.mask.rgb24.ref.png b/test/reference/surface-pattern.mask.rgb24.ref.png
new file mode 100644
index 0000000..079ebfb
Binary files /dev/null and b/test/reference/surface-pattern.mask.rgb24.ref.png differ
diff --git a/test/reference/svg-surface-source.mask.argb32.ref.png b/test/reference/svg-surface-source.mask.argb32.ref.png
new file mode 100644
index 0000000..0182972
Binary files /dev/null and b/test/reference/svg-surface-source.mask.argb32.ref.png differ
diff --git a/test/reference/svg-surface-source.mask.rgb24.ref.png b/test/reference/svg-surface-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..0d68a82
Binary files /dev/null and b/test/reference/svg-surface-source.mask.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-gray.mask.argb32.ref.png b/test/reference/text-antialias-gray.mask.argb32.ref.png
new file mode 100644
index 0000000..06b805e
Binary files /dev/null and b/test/reference/text-antialias-gray.mask.argb32.ref.png differ
diff --git a/test/reference/text-antialias-gray.mask.rgb24.ref.png b/test/reference/text-antialias-gray.mask.rgb24.ref.png
new file mode 100644
index 0000000..06b805e
Binary files /dev/null and b/test/reference/text-antialias-gray.mask.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-gray.traps.argb32.ref.png b/test/reference/text-antialias-gray.traps.argb32.ref.png
new file mode 100644
index 0000000..06b805e
Binary files /dev/null and b/test/reference/text-antialias-gray.traps.argb32.ref.png differ
diff --git a/test/reference/text-antialias-gray.traps.rgb24.ref.png b/test/reference/text-antialias-gray.traps.rgb24.ref.png
new file mode 100644
index 0000000..06b805e
Binary files /dev/null and b/test/reference/text-antialias-gray.traps.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-none.mask.argb32.ref.png b/test/reference/text-antialias-none.mask.argb32.ref.png
new file mode 100644
index 0000000..86c09cd
Binary files /dev/null and b/test/reference/text-antialias-none.mask.argb32.ref.png differ
diff --git a/test/reference/text-antialias-none.mask.rgb24.ref.png b/test/reference/text-antialias-none.mask.rgb24.ref.png
new file mode 100644
index 0000000..86c09cd
Binary files /dev/null and b/test/reference/text-antialias-none.mask.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-none.traps.argb32.ref.png b/test/reference/text-antialias-none.traps.argb32.ref.png
new file mode 100644
index 0000000..86c09cd
Binary files /dev/null and b/test/reference/text-antialias-none.traps.argb32.ref.png differ
diff --git a/test/reference/text-antialias-none.traps.rgb24.ref.png b/test/reference/text-antialias-none.traps.rgb24.ref.png
new file mode 100644
index 0000000..86c09cd
Binary files /dev/null and b/test/reference/text-antialias-none.traps.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png b/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png b/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png b/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png b/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-bgr.traps.argb32.ref.png b/test/reference/text-antialias-subpixel-bgr.traps.argb32.ref.png
new file mode 100644
index 0000000..a221472
Binary files /dev/null and b/test/reference/text-antialias-subpixel-bgr.traps.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-bgr.traps.rgb24.ref.png b/test/reference/text-antialias-subpixel-bgr.traps.rgb24.ref.png
new file mode 100644
index 0000000..a221472
Binary files /dev/null and b/test/reference/text-antialias-subpixel-bgr.traps.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png b/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png b/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png b/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png b/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-rgb.traps.argb32.ref.png b/test/reference/text-antialias-subpixel-rgb.traps.argb32.ref.png
new file mode 100644
index 0000000..af5e0ae
Binary files /dev/null and b/test/reference/text-antialias-subpixel-rgb.traps.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-rgb.traps.rgb24.ref.png b/test/reference/text-antialias-subpixel-rgb.traps.rgb24.ref.png
new file mode 100644
index 0000000..af5e0ae
Binary files /dev/null and b/test/reference/text-antialias-subpixel-rgb.traps.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png b/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png
new file mode 100644
index 0000000..9fd35ea
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png b/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png
new file mode 100644
index 0000000..9fd35ea
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png b/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png
new file mode 100644
index 0000000..9fd35ea
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png b/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png
new file mode 100644
index 0000000..9fd35ea
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vbgr.traps.argb32.ref.png b/test/reference/text-antialias-subpixel-vbgr.traps.argb32.ref.png
new file mode 100644
index 0000000..905579b
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vbgr.traps.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vbgr.traps.rgb24.ref.png b/test/reference/text-antialias-subpixel-vbgr.traps.rgb24.ref.png
new file mode 100644
index 0000000..905579b
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vbgr.traps.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png b/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png
new file mode 100644
index 0000000..9fd35ea
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png b/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png
new file mode 100644
index 0000000..9fd35ea
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png b/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png
new file mode 100644
index 0000000..9fd35ea
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png b/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png
new file mode 100644
index 0000000..9fd35ea
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vrgb.traps.argb32.ref.png b/test/reference/text-antialias-subpixel-vrgb.traps.argb32.ref.png
new file mode 100644
index 0000000..f7c5bef
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vrgb.traps.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel-vrgb.traps.rgb24.ref.png b/test/reference/text-antialias-subpixel-vrgb.traps.rgb24.ref.png
new file mode 100644
index 0000000..f7c5bef
Binary files /dev/null and b/test/reference/text-antialias-subpixel-vrgb.traps.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel.base.argb32.ref.png b/test/reference/text-antialias-subpixel.base.argb32.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel.base.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel.base.rgb24.ref.png b/test/reference/text-antialias-subpixel.base.rgb24.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel.base.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel.mask.argb32.ref.png b/test/reference/text-antialias-subpixel.mask.argb32.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel.mask.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel.mask.rgb24.ref.png b/test/reference/text-antialias-subpixel.mask.rgb24.ref.png
new file mode 100644
index 0000000..f8d5130
Binary files /dev/null and b/test/reference/text-antialias-subpixel.mask.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-subpixel.traps.argb32.ref.png b/test/reference/text-antialias-subpixel.traps.argb32.ref.png
new file mode 100644
index 0000000..af5e0ae
Binary files /dev/null and b/test/reference/text-antialias-subpixel.traps.argb32.ref.png differ
diff --git a/test/reference/text-antialias-subpixel.traps.rgb24.ref.png b/test/reference/text-antialias-subpixel.traps.rgb24.ref.png
new file mode 100644
index 0000000..af5e0ae
Binary files /dev/null and b/test/reference/text-antialias-subpixel.traps.rgb24.ref.png differ
diff --git a/test/reference/text-glyph-range.mask.argb32.ref.png b/test/reference/text-glyph-range.mask.argb32.ref.png
new file mode 100644
index 0000000..648fef5
Binary files /dev/null and b/test/reference/text-glyph-range.mask.argb32.ref.png differ
diff --git a/test/reference/text-glyph-range.mask.rgb24.ref.png b/test/reference/text-glyph-range.mask.rgb24.ref.png
new file mode 100644
index 0000000..648fef5
Binary files /dev/null and b/test/reference/text-glyph-range.mask.rgb24.ref.png differ
diff --git a/test/reference/text-glyph-range.traps.argb32.ref.png b/test/reference/text-glyph-range.traps.argb32.ref.png
new file mode 100644
index 0000000..3268699
Binary files /dev/null and b/test/reference/text-glyph-range.traps.argb32.ref.png differ
diff --git a/test/reference/text-glyph-range.traps.rgb24.ref.png b/test/reference/text-glyph-range.traps.rgb24.ref.png
new file mode 100644
index 0000000..3268699
Binary files /dev/null and b/test/reference/text-glyph-range.traps.rgb24.ref.png differ
diff --git a/test/reference/text-pattern.mask.argb32.ref.png b/test/reference/text-pattern.mask.argb32.ref.png
new file mode 100644
index 0000000..95410fa
Binary files /dev/null and b/test/reference/text-pattern.mask.argb32.ref.png differ
diff --git a/test/reference/text-pattern.mask.rgb24.ref.png b/test/reference/text-pattern.mask.rgb24.ref.png
new file mode 100644
index 0000000..a6b9e4c
Binary files /dev/null and b/test/reference/text-pattern.mask.rgb24.ref.png differ
diff --git a/test/reference/text-rotate.mask.argb32.ref.png b/test/reference/text-rotate.mask.argb32.ref.png
new file mode 100644
index 0000000..b455aab
Binary files /dev/null and b/test/reference/text-rotate.mask.argb32.ref.png differ
diff --git a/test/reference/text-rotate.mask.rgb24.ref.png b/test/reference/text-rotate.mask.rgb24.ref.png
new file mode 100644
index 0000000..b455aab
Binary files /dev/null and b/test/reference/text-rotate.mask.rgb24.ref.png differ
diff --git a/test/reference/text-rotate.traps.argb32.ref.png b/test/reference/text-rotate.traps.argb32.ref.png
new file mode 100644
index 0000000..ff3fe84
Binary files /dev/null and b/test/reference/text-rotate.traps.argb32.ref.png differ
diff --git a/test/reference/text-rotate.traps.rgb24.ref.png b/test/reference/text-rotate.traps.rgb24.ref.png
new file mode 100644
index 0000000..ff3fe84
Binary files /dev/null and b/test/reference/text-rotate.traps.rgb24.ref.png differ
diff --git a/test/reference/text-transform.mask.argb32.ref.png b/test/reference/text-transform.mask.argb32.ref.png
new file mode 100644
index 0000000..4603bc5
Binary files /dev/null and b/test/reference/text-transform.mask.argb32.ref.png differ
diff --git a/test/reference/text-transform.mask.rgb24.ref.png b/test/reference/text-transform.mask.rgb24.ref.png
new file mode 100644
index 0000000..4603bc5
Binary files /dev/null and b/test/reference/text-transform.mask.rgb24.ref.png differ
diff --git a/test/reference/tiger.mask.argb32.ref.png b/test/reference/tiger.mask.argb32.ref.png
new file mode 100644
index 0000000..85ae151
Binary files /dev/null and b/test/reference/tiger.mask.argb32.ref.png differ
diff --git a/test/reference/tiger.mask.rgb24.ref.png b/test/reference/tiger.mask.rgb24.ref.png
new file mode 100644
index 0000000..85ae151
Binary files /dev/null and b/test/reference/tiger.mask.rgb24.ref.png differ
diff --git a/test/reference/transforms.mask.argb32.ref.png b/test/reference/transforms.mask.argb32.ref.png
new file mode 100644
index 0000000..390bad4
Binary files /dev/null and b/test/reference/transforms.mask.argb32.ref.png differ
diff --git a/test/reference/transforms.mask.rgb24.ref.png b/test/reference/transforms.mask.rgb24.ref.png
new file mode 100644
index 0000000..390bad4
Binary files /dev/null and b/test/reference/transforms.mask.rgb24.ref.png differ
diff --git a/test/reference/translate-show-surface.mask.argb32.ref.png b/test/reference/translate-show-surface.mask.argb32.ref.png
new file mode 100644
index 0000000..0a145d9
Binary files /dev/null and b/test/reference/translate-show-surface.mask.argb32.ref.png differ
diff --git a/test/reference/translate-show-surface.mask.rgb24.ref.png b/test/reference/translate-show-surface.mask.rgb24.ref.png
new file mode 100644
index 0000000..0a145d9
Binary files /dev/null and b/test/reference/translate-show-surface.mask.rgb24.ref.png differ
diff --git a/test/reference/trap-clip.mask.argb32.ref.png b/test/reference/trap-clip.mask.argb32.ref.png
new file mode 100644
index 0000000..98cd0a2
Binary files /dev/null and b/test/reference/trap-clip.mask.argb32.ref.png differ
diff --git a/test/reference/trap-clip.mask.rgb24.ref.png b/test/reference/trap-clip.mask.rgb24.ref.png
new file mode 100644
index 0000000..c013153
Binary files /dev/null and b/test/reference/trap-clip.mask.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-gray.mask.argb32.ref.png b/test/reference/twin-antialias-gray.mask.argb32.ref.png
new file mode 100644
index 0000000..6b091af
Binary files /dev/null and b/test/reference/twin-antialias-gray.mask.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-gray.mask.rgb24.ref.png b/test/reference/twin-antialias-gray.mask.rgb24.ref.png
new file mode 100644
index 0000000..6b091af
Binary files /dev/null and b/test/reference/twin-antialias-gray.mask.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-mixed.mask.argb32.ref.png b/test/reference/twin-antialias-mixed.mask.argb32.ref.png
new file mode 100644
index 0000000..d6c406f
Binary files /dev/null and b/test/reference/twin-antialias-mixed.mask.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-mixed.mask.rgb24.ref.png b/test/reference/twin-antialias-mixed.mask.rgb24.ref.png
new file mode 100644
index 0000000..d6c406f
Binary files /dev/null and b/test/reference/twin-antialias-mixed.mask.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-none.mask.argb32.ref.png b/test/reference/twin-antialias-none.mask.argb32.ref.png
new file mode 100644
index 0000000..cb9628e
Binary files /dev/null and b/test/reference/twin-antialias-none.mask.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-none.mask.rgb24.ref.png b/test/reference/twin-antialias-none.mask.rgb24.ref.png
new file mode 100644
index 0000000..cb9628e
Binary files /dev/null and b/test/reference/twin-antialias-none.mask.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-subpixel.mask.argb32.ref.png b/test/reference/twin-antialias-subpixel.mask.argb32.ref.png
new file mode 100644
index 0000000..6b091af
Binary files /dev/null and b/test/reference/twin-antialias-subpixel.mask.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png b/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png
new file mode 100644
index 0000000..6b091af
Binary files /dev/null and b/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png differ
diff --git a/test/reference/twin.mask.argb32.ref.png b/test/reference/twin.mask.argb32.ref.png
new file mode 100644
index 0000000..6b091af
Binary files /dev/null and b/test/reference/twin.mask.argb32.ref.png differ
diff --git a/test/reference/twin.mask.rgb24.ref.png b/test/reference/twin.mask.rgb24.ref.png
new file mode 100644
index 0000000..6b091af
Binary files /dev/null and b/test/reference/twin.mask.rgb24.ref.png differ
diff --git a/test/reference/unaligned-box.mask.argb32.ref.png b/test/reference/unaligned-box.mask.argb32.ref.png
new file mode 100644
index 0000000..ec7c489
Binary files /dev/null and b/test/reference/unaligned-box.mask.argb32.ref.png differ
diff --git a/test/reference/unaligned-box.mask.rgb24.ref.png b/test/reference/unaligned-box.mask.rgb24.ref.png
new file mode 100644
index 0000000..ec7c489
Binary files /dev/null and b/test/reference/unaligned-box.mask.rgb24.ref.png differ
diff --git a/test/reference/unantialiased-shapes.mask.argb32.ref.png b/test/reference/unantialiased-shapes.mask.argb32.ref.png
new file mode 100644
index 0000000..d9f466e
Binary files /dev/null and b/test/reference/unantialiased-shapes.mask.argb32.ref.png differ
diff --git a/test/reference/unantialiased-shapes.mask.rgb24.ref.png b/test/reference/unantialiased-shapes.mask.rgb24.ref.png
new file mode 100644
index 0000000..d9f466e
Binary files /dev/null and b/test/reference/unantialiased-shapes.mask.rgb24.ref.png differ
diff --git a/test/reference/unbounded-operator.mask.argb32.ref.png b/test/reference/unbounded-operator.mask.argb32.ref.png
new file mode 100644
index 0000000..08f4356
Binary files /dev/null and b/test/reference/unbounded-operator.mask.argb32.ref.png differ
diff --git a/test/reference/unbounded-operator.mask.rgb24.ref.png b/test/reference/unbounded-operator.mask.rgb24.ref.png
new file mode 100644
index 0000000..80d20dc
Binary files /dev/null and b/test/reference/unbounded-operator.mask.rgb24.ref.png differ
diff --git a/test/reference/unclosed-strokes.mask.argb32.ref.png b/test/reference/unclosed-strokes.mask.argb32.ref.png
new file mode 100644
index 0000000..8af8472
Binary files /dev/null and b/test/reference/unclosed-strokes.mask.argb32.ref.png differ
diff --git a/test/reference/unclosed-strokes.mask.rgb24.ref.png b/test/reference/unclosed-strokes.mask.rgb24.ref.png
new file mode 100644
index 0000000..8af8472
Binary files /dev/null and b/test/reference/unclosed-strokes.mask.rgb24.ref.png differ
diff --git a/test/reference/user-font-mask.mask.argb32.ref.png b/test/reference/user-font-mask.mask.argb32.ref.png
new file mode 100644
index 0000000..02a9a5e
Binary files /dev/null and b/test/reference/user-font-mask.mask.argb32.ref.png differ
diff --git a/test/reference/user-font-mask.mask.rgb24.ref.png b/test/reference/user-font-mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..02a9a5e
Binary files /dev/null and b/test/reference/user-font-mask.mask.rgb24.ref.png differ
diff --git a/test/reference/user-font-proxy.mask.argb32.ref.png b/test/reference/user-font-proxy.mask.argb32.ref.png
new file mode 100644
index 0000000..5acbca5
Binary files /dev/null and b/test/reference/user-font-proxy.mask.argb32.ref.png differ
diff --git a/test/reference/user-font-proxy.mask.rgb24.ref.png b/test/reference/user-font-proxy.mask.rgb24.ref.png
new file mode 100644
index 0000000..5acbca5
Binary files /dev/null and b/test/reference/user-font-proxy.mask.rgb24.ref.png differ
diff --git a/test/reference/user-font-proxy.traps.argb32.ref.png b/test/reference/user-font-proxy.traps.argb32.ref.png
new file mode 100644
index 0000000..094938c
Binary files /dev/null and b/test/reference/user-font-proxy.traps.argb32.ref.png differ
diff --git a/test/reference/user-font-proxy.traps.rgb24.ref.png b/test/reference/user-font-proxy.traps.rgb24.ref.png
new file mode 100644
index 0000000..094938c
Binary files /dev/null and b/test/reference/user-font-proxy.traps.rgb24.ref.png differ
diff --git a/test/reference/user-font-rescale.mask.argb32.ref.png b/test/reference/user-font-rescale.mask.argb32.ref.png
new file mode 100644
index 0000000..0939060
Binary files /dev/null and b/test/reference/user-font-rescale.mask.argb32.ref.png differ
diff --git a/test/reference/user-font-rescale.mask.rgb24.ref.png b/test/reference/user-font-rescale.mask.rgb24.ref.png
new file mode 100644
index 0000000..0939060
Binary files /dev/null and b/test/reference/user-font-rescale.mask.rgb24.ref.png differ
diff --git a/test/reference/user-font-rescale.traps.argb32.ref.png b/test/reference/user-font-rescale.traps.argb32.ref.png
new file mode 100644
index 0000000..0939060
Binary files /dev/null and b/test/reference/user-font-rescale.traps.argb32.ref.png differ
diff --git a/test/reference/user-font-rescale.traps.rgb24.ref.png b/test/reference/user-font-rescale.traps.rgb24.ref.png
new file mode 100644
index 0000000..0939060
Binary files /dev/null and b/test/reference/user-font-rescale.traps.rgb24.ref.png differ
diff --git a/test/reference/user-font.mask.argb32.ref.png b/test/reference/user-font.mask.argb32.ref.png
new file mode 100644
index 0000000..b234a88
Binary files /dev/null and b/test/reference/user-font.mask.argb32.ref.png differ
diff --git a/test/reference/user-font.mask.rgb24.ref.png b/test/reference/user-font.mask.rgb24.ref.png
new file mode 100644
index 0000000..b234a88
Binary files /dev/null and b/test/reference/user-font.mask.rgb24.ref.png differ
diff --git a/test/reference/white-in-noop.mask.argb32.ref.png b/test/reference/white-in-noop.mask.argb32.ref.png
new file mode 100644
index 0000000..f42bb8d
Binary files /dev/null and b/test/reference/white-in-noop.mask.argb32.ref.png differ
diff --git a/test/reference/white-in-noop.mask.rgb24.ref.png b/test/reference/white-in-noop.mask.rgb24.ref.png
new file mode 100644
index 0000000..f42bb8d
Binary files /dev/null and b/test/reference/white-in-noop.mask.rgb24.ref.png differ
diff --git a/test/reference/world-map-fill.mask.argb32.ref.png b/test/reference/world-map-fill.mask.argb32.ref.png
new file mode 100644
index 0000000..fad82ee
Binary files /dev/null and b/test/reference/world-map-fill.mask.argb32.ref.png differ
diff --git a/test/reference/world-map-fill.mask.rgb24.ref.png b/test/reference/world-map-fill.mask.rgb24.ref.png
new file mode 100644
index 0000000..fad82ee
Binary files /dev/null and b/test/reference/world-map-fill.mask.rgb24.ref.png differ
diff --git a/test/reference/world-map-stroke.mask.argb32.ref.png b/test/reference/world-map-stroke.mask.argb32.ref.png
new file mode 100644
index 0000000..ec0d502
Binary files /dev/null and b/test/reference/world-map-stroke.mask.argb32.ref.png differ
diff --git a/test/reference/world-map-stroke.mask.rgb24.ref.png b/test/reference/world-map-stroke.mask.rgb24.ref.png
new file mode 100644
index 0000000..ec0d502
Binary files /dev/null and b/test/reference/world-map-stroke.mask.rgb24.ref.png differ
diff --git a/test/reference/world-map.mask.argb32.ref.png b/test/reference/world-map.mask.argb32.ref.png
new file mode 100644
index 0000000..218a303
Binary files /dev/null and b/test/reference/world-map.mask.argb32.ref.png differ
diff --git a/test/reference/world-map.mask.rgb24.ref.png b/test/reference/world-map.mask.rgb24.ref.png
new file mode 100644
index 0000000..218a303
Binary files /dev/null and b/test/reference/world-map.mask.rgb24.ref.png differ
diff --git a/test/reference/xcb-huge-image-shm.mask.argb32.ref.png b/test/reference/xcb-huge-image-shm.mask.argb32.ref.png
new file mode 100644
index 0000000..a0b24c8
Binary files /dev/null and b/test/reference/xcb-huge-image-shm.mask.argb32.ref.png differ
diff --git a/test/reference/xcb-huge-image-shm.mask.rgb24.ref.png b/test/reference/xcb-huge-image-shm.mask.rgb24.ref.png
new file mode 100644
index 0000000..a0b24c8
Binary files /dev/null and b/test/reference/xcb-huge-image-shm.mask.rgb24.ref.png differ
diff --git a/test/reference/xcb-snapshot-assert.mask.argb32.ref.png b/test/reference/xcb-snapshot-assert.mask.argb32.ref.png
new file mode 100644
index 0000000..850ce59
Binary files /dev/null and b/test/reference/xcb-snapshot-assert.mask.argb32.ref.png differ
diff --git a/test/reference/xcb-snapshot-assert.mask.rgb24.ref.png b/test/reference/xcb-snapshot-assert.mask.rgb24.ref.png
new file mode 100644
index 0000000..850ce59
Binary files /dev/null and b/test/reference/xcb-snapshot-assert.mask.rgb24.ref.png differ
diff --git a/test/reference/xcb-stress-cache.mask.argb32.ref.png b/test/reference/xcb-stress-cache.mask.argb32.ref.png
new file mode 100644
index 0000000..850ce59
Binary files /dev/null and b/test/reference/xcb-stress-cache.mask.argb32.ref.png differ
diff --git a/test/reference/xcb-stress-cache.mask.rgb24.ref.png b/test/reference/xcb-stress-cache.mask.rgb24.ref.png
new file mode 100644
index 0000000..850ce59
Binary files /dev/null and b/test/reference/xcb-stress-cache.mask.rgb24.ref.png differ
diff --git a/test/reference/xcb-surface-source.mask.argb32.ref.png b/test/reference/xcb-surface-source.mask.argb32.ref.png
new file mode 100644
index 0000000..0182972
Binary files /dev/null and b/test/reference/xcb-surface-source.mask.argb32.ref.png differ
diff --git a/test/reference/xcb-surface-source.mask.rgb24.ref.png b/test/reference/xcb-surface-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..0d68a82
Binary files /dev/null and b/test/reference/xcb-surface-source.mask.rgb24.ref.png differ
diff --git a/test/reference/xcomposite-projection.mask.argb32.ref.png b/test/reference/xcomposite-projection.mask.argb32.ref.png
new file mode 100644
index 0000000..9ccabda
Binary files /dev/null and b/test/reference/xcomposite-projection.mask.argb32.ref.png differ
diff --git a/test/reference/xcomposite-projection.mask.rgb24.ref.png b/test/reference/xcomposite-projection.mask.rgb24.ref.png
new file mode 100644
index 0000000..9ccabda
Binary files /dev/null and b/test/reference/xcomposite-projection.mask.rgb24.ref.png differ
diff --git a/test/reference/xlib-expose-event.mask.argb32.ref.png b/test/reference/xlib-expose-event.mask.argb32.ref.png
new file mode 100644
index 0000000..fd71f5a
Binary files /dev/null and b/test/reference/xlib-expose-event.mask.argb32.ref.png differ
diff --git a/test/reference/xlib-expose-event.mask.rgb24.ref.png b/test/reference/xlib-expose-event.mask.rgb24.ref.png
new file mode 100644
index 0000000..fd71f5a
Binary files /dev/null and b/test/reference/xlib-expose-event.mask.rgb24.ref.png differ
diff --git a/test/reference/xlib-surface-source.mask.argb32.ref.png b/test/reference/xlib-surface-source.mask.argb32.ref.png
new file mode 100644
index 0000000..0182972
Binary files /dev/null and b/test/reference/xlib-surface-source.mask.argb32.ref.png differ
diff --git a/test/reference/xlib-surface-source.mask.rgb24.ref.png b/test/reference/xlib-surface-source.mask.rgb24.ref.png
new file mode 100644
index 0000000..0d68a82
Binary files /dev/null and b/test/reference/xlib-surface-source.mask.rgb24.ref.png differ
diff --git a/test/reference/zero-alpha.mask.argb32.ref.png b/test/reference/zero-alpha.mask.argb32.ref.png
new file mode 100644
index 0000000..595c0ae
Binary files /dev/null and b/test/reference/zero-alpha.mask.argb32.ref.png differ
diff --git a/test/reference/zero-alpha.mask.rgb24.ref.png b/test/reference/zero-alpha.mask.rgb24.ref.png
new file mode 100644
index 0000000..595c0ae
Binary files /dev/null and b/test/reference/zero-alpha.mask.rgb24.ref.png differ
diff --git a/test/reference/zero-mask.mask.argb32.ref.png b/test/reference/zero-mask.mask.argb32.ref.png
new file mode 100644
index 0000000..ffae8d9
Binary files /dev/null and b/test/reference/zero-mask.mask.argb32.ref.png differ
diff --git a/test/reference/zero-mask.mask.rgb24.ref.png b/test/reference/zero-mask.mask.rgb24.ref.png
new file mode 100644
index 0000000..263c3d1
Binary files /dev/null and b/test/reference/zero-mask.mask.rgb24.ref.png differ
commit 3d499ea901b3a76cd765ddce9f4e7d3acebd1bd3
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Feb 22 10:41:37 2012 +0000

    xlib: Replace obsolete disable-xrender with shiny new device debug interface
    
    As prototyped with xcb.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/boilerplate/cairo-boilerplate-xlib.c b/boilerplate/cairo-boilerplate-xlib.c
index de79dcb..3a6beef 100644
--- a/boilerplate/cairo-boilerplate-xlib.c
+++ b/boilerplate/cairo-boilerplate-xlib.c
@@ -392,49 +392,6 @@ _cairo_boilerplate_xlib_window_create_surface (const char		 *name,
 
     return surface;
 }
-
-cairo_status_t
-cairo_boilerplate_xlib_surface_disable_render (cairo_surface_t *abstract_surface)
-{
-#if 0
-    /* The following stunt doesn't work with xlib-xcb because it doesn't use
-     * cairo_xlib_surface_t for its surfaces. Sadly, there is no sane
-     * alternative, so we can't disable render with xlib-xcb.
-     * FIXME: Find an alternative. */
-#if !CAIRO_HAS_XLIB_XCB_FUNCTIONS
-    cairo_xlib_surface_t *surface = (cairo_xlib_surface_t*) abstract_surface;
-
-    if (cairo_surface_get_type (abstract_surface) != CAIRO_SURFACE_TYPE_XLIB)
-	return CAIRO_STATUS_SURFACE_TYPE_MISMATCH;
-
-    surface->render_major = surface->render_minor = -1;
-    surface->xrender_format = NULL;
-
-    /* The content type is forced by _xrender_format_to_content() during
-     * non-Render surface creation, so repeat the procedure here. */
-    surface->base.content = CAIRO_CONTENT_COLOR;
-
-    /* These flags are set based on known bugs and lack of RENDER support */
-#if CAIRO_XLIB_SURFACE_HAS_BUGGY_GRADIENTS
-    surface->buggy_gradients = TRUE;
-#endif
-#if CAIRO_XLIB_SURFACE_HAS_BUGGY_PAD_REFLECT
-    surface->buggy_pad_reflect = TRUE;
-#endif
-#if CAIRO_XLIB_SURFACE_HAS_BUGGY_REPEAT
-    surface->buggy_repeat = TRUE;
-#endif
-#endif
-#endif
-
-    return CAIRO_STATUS_SUCCESS;
-}
-#else
-cairo_status_t
-cairo_boilerplate_xlib_surface_disable_render (cairo_surface_t *abstract_surface)
-{
-    return CAIRO_STATUS_SUCCESS;
-}
 #endif
 
 
@@ -462,7 +419,7 @@ _cairo_boilerplate_xlib_fallback_create_surface (const char		   *name,
     Display *dpy;
     int screen;
     XSetWindowAttributes attr;
-    cairo_surface_t *surface;
+    cairo_surface_t *surface, *dummy;
 
     /* We're not yet bothering to support perf mode for the
      * xlib-fallback surface. */
@@ -516,13 +473,18 @@ _cairo_boilerplate_xlib_fallback_create_surface (const char		   *name,
     XMapWindow (dpy, xtc->drawable);
     xtc->drawable_is_pixmap = FALSE;
 
+    dummy = cairo_xlib_surface_create (dpy, xtc->drawable,
+				       DefaultVisual (dpy, screen),
+				       width, height);
+    cairo_xlib_device_debug_cap_xrender_version (cairo_surface_get_device (dummy),
+						 -1, -1);
+
     surface = cairo_xlib_surface_create (dpy, xtc->drawable,
 					 DefaultVisual (dpy, screen),
 					 width, height);
+    cairo_surface_destroy (dummy);
     if (cairo_surface_status (surface))
 	_cairo_boilerplate_xlib_cleanup (xtc);
-    else
-	cairo_boilerplate_xlib_surface_disable_render (surface);
 
     _cairo_boilerplate_xlib_setup_test_surface(surface);
 
diff --git a/src/cairo-xlib-display.c b/src/cairo-xlib-display.c
index fd7253c..65cd3fb 100644
--- a/src/cairo-xlib-display.c
+++ b/src/cairo-xlib-display.c
@@ -146,6 +146,17 @@ static const cairo_device_backend_t _cairo_xlib_device_backend = {
     _cairo_xlib_display_destroy,
 };
 
+
+static void _cairo_xlib_display_select_compositor (cairo_xlib_display_t *display)
+{
+    if (display->render_major > 0 || display->render_minor >= 4)
+	display->compositor = _cairo_xlib_traps_compositor_get ();
+    else if (display->render_major > 0 || display->render_minor >= 0)
+	display->compositor = _cairo_xlib_mask_compositor_get ();
+    else
+	display->compositor = _cairo_xlib_core_compositor_get ();
+}
+
 /**
  * cairo_xlib_device_create:
  * @dpy: the display to create the device for
@@ -221,6 +232,8 @@ _cairo_xlib_device_create (Display *dpy)
 	}
     }
 
+    _cairo_xlib_display_select_compositor (display);
+
     codes = XAddExtension (dpy);
     if (unlikely (codes == NULL)) {
 	device = _cairo_device_create_in_error (CAIRO_STATUS_NO_MEMORY);
@@ -331,13 +344,6 @@ _cairo_xlib_device_create (Display *dpy)
 	display->buggy_pad_reflect = TRUE;
     }
 
-    if (display->render_major > 0 || display->render_minor >= 4)
-	display->compositor = _cairo_xlib_traps_compositor_get ();
-    else if (display->render_major > 0 || display->render_minor >= 0)
-	display->compositor = _cairo_xlib_mask_compositor_get ();
-    else
-	display->compositor = _cairo_xlib_core_compositor_get ();
-
     display->next = _cairo_xlib_display_list;
     _cairo_xlib_display_list = display;
 
@@ -552,6 +558,43 @@ _cairo_xlib_display_has_gradients (cairo_device_t *device)
     return ! ((cairo_xlib_display_t *) device)->buggy_gradients;
 }
 
+/**
+ * cairo_xlib_device_debug_cap_xrender_version:
+ * @device: a #cairo_device_t for the XCB backend
+ * @major_version: major version to restrict to
+ * @minor_version: minor version to restrict to
+ *
+ * Restricts all future XCB surfaces for this devices to the specified version
+ * of the RENDER extension. This function exists solely for debugging purpose.
+ * It let's you find out how cairo would behave with an older version of
+ * the RENDER extension.
+ *
+ * Use the special values -1 and -1 for disabling the RENDER extension.
+ **/
+void
+cairo_xlib_device_debug_cap_xrender_version (cairo_device_t *device,
+					     int major_version,
+					     int minor_version)
+{
+    cairo_xlib_display_t *display = (cairo_xlib_display_t *) device;
+
+    if (device == NULL || device->status)
+	return;
+
+    if (device->backend->type != CAIRO_DEVICE_TYPE_XLIB)
+	return;
+
+    if (major_version < display->render_major ||
+	(major_version == display->render_major &&
+	 minor_version < display->render_minor))
+    {
+	display->render_major = major_version;
+	display->render_minor = minor_version;
+    }
+
+    _cairo_xlib_display_select_compositor (display);
+}
+
 void
 cairo_xlib_device_debug_set_precision (cairo_device_t *device,
 				       int precision)
diff --git a/src/cairo-xlib.h b/src/cairo-xlib.h
index 7f770b9..ecf8d6c 100644
--- a/src/cairo-xlib.h
+++ b/src/cairo-xlib.h
@@ -93,6 +93,11 @@ cairo_xlib_surface_get_height (cairo_surface_t *surface);
 
 /* debug interface */
 
+cairo_public void
+cairo_xlib_device_debug_cap_xrender_version (cairo_device_t *device,
+					     int major_version,
+					     int minor_version);
+
 /*
  * @precision: -1 implies automatically choose based on antialiasing mode,
  *            any other value overrides and sets the corresponding PolyMode.
diff --git a/test/get-xrender-format.c b/test/get-xrender-format.c
index 8e99eb7..3228d57 100644
--- a/test/get-xrender-format.c
+++ b/test/get-xrender-format.c
@@ -101,16 +101,6 @@ preamble (cairo_test_context_t *ctx)
 	goto CLEANUP_PIXMAP;
     }
 
-    cairo_test_log (ctx, "Testing without the X Render extension.\n");
-
-    cairo_boilerplate_xlib_surface_disable_render (surface);
-
-    format = cairo_xlib_surface_get_xrender_format (surface);
-    if (format != NULL) {
-	cairo_test_log (ctx, "Error: did not receive a NULL format as expected\n");
-	goto CLEANUP_PIXMAP;
-    }
-
     result = CAIRO_TEST_SUCCESS;
 
   CLEANUP_PIXMAP:
diff --git a/test/xlib-surface.c b/test/xlib-surface.c
index be44b14..4edc44b 100644
--- a/test/xlib-surface.c
+++ b/test/xlib-surface.c
@@ -136,7 +136,6 @@ do_test (const cairo_test_context_t *ctx,
 	 unsigned char  *reference_data,
 	 unsigned char  *test_data,
 	 unsigned char  *diff_data,
-	 cairo_bool_t    use_render,
 	 cairo_bool_t    use_pixmap,
 	 cairo_bool_t    set_size,
 	 cairo_bool_t    offscreen)
@@ -184,9 +183,6 @@ do_test (const cairo_test_context_t *ctx,
     if (! surface_compare_visual_and_format (surface))
 	return CAIRO_TEST_FAILURE;
 
-    if (!use_render)
-	cairo_boilerplate_xlib_surface_disable_render (surface);
-
     if (set_size) {
 	cairo_xlib_surface_set_size (surface, SIZE, SIZE);
 
@@ -243,13 +239,10 @@ do_test (const cairo_test_context_t *ctx,
 			     &result);
     }
 
-    cairo_test_log (ctx, "xlib-surface: %s, %s, %s%s: %s\n",
-		    use_render ? "   render" : "no-render",
+    cairo_test_log (ctx, "xlib-surface: %s, %s, %s: %s\n",
 		    set_size ? "   size" : "no-size",
 		    use_pixmap ? "pixmap" : "window",
-		    use_pixmap ?
-		    "           " :
-		    (offscreen ? ", offscreen" : ",  onscreen"),
+		    use_pixmap ?  "           " : (offscreen ? ", offscreen" : ",  onscreen"),
 		    image_diff_is_failure (&result, 0) ? "FAIL" : "PASS");
 
     if (image_diff_is_failure (&result, 0))
@@ -335,17 +328,7 @@ preamble (cairo_test_context_t *ctx)
 	    for (offscreen = 0; offscreen <= 1; offscreen++) {
 		status = do_test (ctx, dpy,
 				  reference_data, test_data, diff_data,
-				  1, use_pixmap, set_size, offscreen);
-		if (status)
-		    result = status;
-	    }
-
-    for (set_size = 0; set_size <= 1; set_size++)
-	for (use_pixmap = 0; use_pixmap <= 1; use_pixmap++)
-	    for (offscreen = 0; offscreen <= 1; offscreen++) {
-		status = do_test (ctx, dpy,
-				  reference_data, test_data, diff_data,
-				  0, use_pixmap, set_size, offscreen);
+				  use_pixmap, set_size, offscreen);
 		if (status)
 		    result = status;
 	    }
commit 73df8eb8db521585f1ac6abb053843b5717cd27e
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Feb 22 10:19:18 2012 +0000

    test/xlib: Remove stale reference images
    
    We know have a swrast reference compositor for xlib (test-traps) and so
    should not need these old xlib specific reference images.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/test/reference/a1-image-sample.xlib.argb32.ref.png b/test/reference/a1-image-sample.xlib.argb32.ref.png
deleted file mode 100644
index b8fd457..0000000
Binary files a/test/reference/a1-image-sample.xlib.argb32.ref.png and /dev/null differ
diff --git a/test/reference/a1-image-sample.xlib.rgb24.ref.png b/test/reference/a1-image-sample.xlib.rgb24.ref.png
deleted file mode 100644
index b8fd457..0000000
Binary files a/test/reference/a1-image-sample.xlib.rgb24.ref.png and /dev/null differ
diff --git a/test/reference/arc-direction.xlib.ref.png b/test/reference/arc-direction.xlib.ref.png
deleted file mode 100644
index 2790a2b..0000000
Binary files a/test/reference/arc-direction.xlib.ref.png and /dev/null differ
diff --git a/test/reference/clip-rotate-image-surface-paint.xlib.argb32.ref.png b/test/reference/clip-rotate-image-surface-paint.xlib.argb32.ref.png
deleted file mode 100644
index 1093804..0000000
Binary files a/test/reference/clip-rotate-image-surface-paint.xlib.argb32.ref.png and /dev/null differ
diff --git a/test/reference/clip-rotate-image-surface-paint.xlib.rgb24.ref.png b/test/reference/clip-rotate-image-surface-paint.xlib.rgb24.ref.png
deleted file mode 100644
index 1093804..0000000
Binary files a/test/reference/clip-rotate-image-surface-paint.xlib.rgb24.ref.png and /dev/null differ
diff --git a/test/reference/image-bug-710072-aligned.xlib.argb32.ref.png b/test/reference/image-bug-710072-aligned.xlib.argb32.ref.png
deleted file mode 100644
index 42abd20..0000000
Binary files a/test/reference/image-bug-710072-aligned.xlib.argb32.ref.png and /dev/null differ
diff --git a/test/reference/image-bug-710072-aligned.xlib.rgb24.ref.png b/test/reference/image-bug-710072-aligned.xlib.rgb24.ref.png
deleted file mode 100644
index 42abd20..0000000
Binary files a/test/reference/image-bug-710072-aligned.xlib.rgb24.ref.png and /dev/null differ
diff --git a/test/reference/image-bug-710072-unaligned.xlib.argb32.ref.png b/test/reference/image-bug-710072-unaligned.xlib.argb32.ref.png
deleted file mode 100644
index 0a5a6e6..0000000
Binary files a/test/reference/image-bug-710072-unaligned.xlib.argb32.ref.png and /dev/null differ
diff --git a/test/reference/image-bug-710072-unaligned.xlib.rgb24.ref.png b/test/reference/image-bug-710072-unaligned.xlib.rgb24.ref.png
deleted file mode 100644
index 0a5a6e6..0000000
Binary files a/test/reference/image-bug-710072-unaligned.xlib.rgb24.ref.png and /dev/null differ
diff --git a/test/reference/image-surface-source.xlib.argb32.ref.png b/test/reference/image-surface-source.xlib.argb32.ref.png
deleted file mode 100644
index 0182972..0000000
Binary files a/test/reference/image-surface-source.xlib.argb32.ref.png and /dev/null differ
diff --git a/test/reference/image-surface-source.xlib.rgb24.ref.png b/test/reference/image-surface-source.xlib.rgb24.ref.png
deleted file mode 100644
index 0d68a82..0000000
Binary files a/test/reference/image-surface-source.xlib.rgb24.ref.png and /dev/null differ
diff --git a/test/reference/map-to-image-fill.xlib.argb32.ref.png b/test/reference/map-to-image-fill.xlib.argb32.ref.png
deleted file mode 100644
index c2893e0..0000000
Binary files a/test/reference/map-to-image-fill.xlib.argb32.ref.png and /dev/null differ
diff --git a/test/reference/map-to-image-fill.xlib.rgb24.ref.png b/test/reference/map-to-image-fill.xlib.rgb24.ref.png
deleted file mode 100644
index c2893e0..0000000
Binary files a/test/reference/map-to-image-fill.xlib.rgb24.ref.png and /dev/null differ
diff --git a/test/reference/rotate-clip-image-surface-paint.xlib.argb32.ref.png b/test/reference/rotate-clip-image-surface-paint.xlib.argb32.ref.png
deleted file mode 100644
index 9d991d9..0000000
Binary files a/test/reference/rotate-clip-image-surface-paint.xlib.argb32.ref.png and /dev/null differ
diff --git a/test/reference/rotate-clip-image-surface-paint.xlib.rgb24.ref.png b/test/reference/rotate-clip-image-surface-paint.xlib.rgb24.ref.png
deleted file mode 100644
index 9d991d9..0000000
Binary files a/test/reference/rotate-clip-image-surface-paint.xlib.rgb24.ref.png and /dev/null differ
diff --git a/test/reference/rotate-image-surface-paint.xlib.argb32.ref.png b/test/reference/rotate-image-surface-paint.xlib.argb32.ref.png
deleted file mode 100644
index 06a4820..0000000
Binary files a/test/reference/rotate-image-surface-paint.xlib.argb32.ref.png and /dev/null differ
diff --git a/test/reference/rotate-image-surface-paint.xlib.rgb24.ref.png b/test/reference/rotate-image-surface-paint.xlib.rgb24.ref.png
deleted file mode 100644
index 06a4820..0000000
Binary files a/test/reference/rotate-image-surface-paint.xlib.rgb24.ref.png and /dev/null differ
diff --git a/test/reference/smask-image-mask.xlib.argb32.ref.png b/test/reference/smask-image-mask.xlib.argb32.ref.png
deleted file mode 100644
index 12063bd..0000000
Binary files a/test/reference/smask-image-mask.xlib.argb32.ref.png and /dev/null differ
diff --git a/test/reference/smask-image-mask.xlib.rgb24.ref.png b/test/reference/smask-image-mask.xlib.rgb24.ref.png
deleted file mode 100644
index 12063bd..0000000
Binary files a/test/reference/smask-image-mask.xlib.rgb24.ref.png and /dev/null differ
diff --git a/test/reference/subsurface-image-repeat.xlib.argb32.ref.png b/test/reference/subsurface-image-repeat.xlib.argb32.ref.png
deleted file mode 100644
index 3dd6306..0000000
Binary files a/test/reference/subsurface-image-repeat.xlib.argb32.ref.png and /dev/null differ
diff --git a/test/reference/subsurface-image-repeat.xlib.rgb24.ref.png b/test/reference/subsurface-image-repeat.xlib.rgb24.ref.png
deleted file mode 100644
index 3dd6306..0000000
Binary files a/test/reference/subsurface-image-repeat.xlib.rgb24.ref.png and /dev/null differ
diff --git a/test/reference/xcb-huge-image-shm.xlib.argb32.ref.png b/test/reference/xcb-huge-image-shm.xlib.argb32.ref.png
deleted file mode 100644
index a0b24c8..0000000
Binary files a/test/reference/xcb-huge-image-shm.xlib.argb32.ref.png and /dev/null differ
diff --git a/test/reference/xcb-huge-image-shm.xlib.rgb24.ref.png b/test/reference/xcb-huge-image-shm.xlib.rgb24.ref.png
deleted file mode 100644
index a0b24c8..0000000
Binary files a/test/reference/xcb-huge-image-shm.xlib.rgb24.ref.png and /dev/null differ
commit b2132eed79c60b3a70b88e5b5bbac7c541355735
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Feb 22 10:18:56 2012 +0000

    boilerplate/xlib: The xlib-fallback should be visually identical to image

diff --git a/boilerplate/cairo-boilerplate-xlib.c b/boilerplate/cairo-boilerplate-xlib.c
index abd1ba9..de79dcb 100644
--- a/boilerplate/cairo-boilerplate-xlib.c
+++ b/boilerplate/cairo-boilerplate-xlib.c
@@ -581,7 +581,7 @@ static const cairo_boilerplate_target_t targets[] = {
     /* This is a fallback surface which uses xlib fallbacks instead of
      * the Render extension. */
     {
-	"xlib-fallback", "xlib", NULL, NULL,
+	"xlib-fallback", "image", NULL, NULL,
 	CAIRO_SURFACE_TYPE_XLIB, CAIRO_CONTENT_COLOR, 1,
 	"cairo_xlib_surface_create",
 	_cairo_boilerplate_xlib_fallback_create_surface,
commit cd4fd8a8028f3233dbfbfde283bca894700c833d
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Feb 22 10:11:16 2012 +0000

    test: Update traps for changes in reference font

diff --git a/test/reference/clear-source.traps.argb32.ref.png b/test/reference/clear-source.traps.argb32.ref.png
index b7e8025..352bf45 100644
Binary files a/test/reference/clear-source.traps.argb32.ref.png and b/test/reference/clear-source.traps.argb32.ref.png differ
diff --git a/test/reference/clear-source.traps.rgb24.ref.png b/test/reference/clear-source.traps.rgb24.ref.png
index b7e8025..352bf45 100644
Binary files a/test/reference/clear-source.traps.rgb24.ref.png and b/test/reference/clear-source.traps.rgb24.ref.png differ
diff --git a/test/reference/culled-glyphs.traps.argb32.ref.png b/test/reference/culled-glyphs.traps.argb32.ref.png
index 08aad33..6701295 100644
Binary files a/test/reference/culled-glyphs.traps.argb32.ref.png and b/test/reference/culled-glyphs.traps.argb32.ref.png differ
diff --git a/test/reference/culled-glyphs.traps.rgb24.ref.png b/test/reference/culled-glyphs.traps.rgb24.ref.png
index 08aad33..6701295 100644
Binary files a/test/reference/culled-glyphs.traps.rgb24.ref.png and b/test/reference/culled-glyphs.traps.rgb24.ref.png differ
diff --git a/test/reference/fill-image.traps.argb32.ref.png b/test/reference/fill-image.traps.argb32.ref.png
index b94ed91..1e67073 100644
Binary files a/test/reference/fill-image.traps.argb32.ref.png and b/test/reference/fill-image.traps.argb32.ref.png differ
diff --git a/test/reference/fill-image.traps.rgb24.ref.png b/test/reference/fill-image.traps.rgb24.ref.png
index b94ed91..1e67073 100644
Binary files a/test/reference/fill-image.traps.rgb24.ref.png and b/test/reference/fill-image.traps.rgb24.ref.png differ
diff --git a/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png b/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png
index 456e81d..ace463b 100644
Binary files a/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png and b/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png differ
diff --git a/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png b/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png
index 456e81d..ace463b 100644
Binary files a/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png and b/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png differ
diff --git a/test/reference/overlapping-glyphs.traps.argb32.ref.png b/test/reference/overlapping-glyphs.traps.argb32.ref.png
index 0dc6fdb..11bf4e1 100644
Binary files a/test/reference/overlapping-glyphs.traps.argb32.ref.png and b/test/reference/overlapping-glyphs.traps.argb32.ref.png differ
diff --git a/test/reference/overlapping-glyphs.traps.rgb24.ref.png b/test/reference/overlapping-glyphs.traps.rgb24.ref.png
index 9702cc2..6b65510 100644
Binary files a/test/reference/overlapping-glyphs.traps.rgb24.ref.png and b/test/reference/overlapping-glyphs.traps.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-bottom.traps.argb32.ref.png b/test/reference/partial-clip-text-bottom.traps.argb32.ref.png
index 7a03fad..6a299d4 100644
Binary files a/test/reference/partial-clip-text-bottom.traps.argb32.ref.png and b/test/reference/partial-clip-text-bottom.traps.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-bottom.traps.rgb24.ref.png b/test/reference/partial-clip-text-bottom.traps.rgb24.ref.png
index 7a03fad..6a299d4 100644
Binary files a/test/reference/partial-clip-text-bottom.traps.rgb24.ref.png and b/test/reference/partial-clip-text-bottom.traps.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-left.traps.argb32.ref.png b/test/reference/partial-clip-text-left.traps.argb32.ref.png
index 95c07f4..54a1a85 100644
Binary files a/test/reference/partial-clip-text-left.traps.argb32.ref.png and b/test/reference/partial-clip-text-left.traps.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-left.traps.rgb24.ref.png b/test/reference/partial-clip-text-left.traps.rgb24.ref.png
index 95c07f4..54a1a85 100644
Binary files a/test/reference/partial-clip-text-left.traps.rgb24.ref.png and b/test/reference/partial-clip-text-left.traps.rgb24.ref.png differ
diff --git a/test/reference/random-clip.traps.argb32.ref.png b/test/reference/random-clip.traps.argb32.ref.png
index 374d6fe..01cc60a 100644
Binary files a/test/reference/random-clip.traps.argb32.ref.png and b/test/reference/random-clip.traps.argb32.ref.png differ
diff --git a/test/reference/random-clip.traps.rgb24.ref.png b/test/reference/random-clip.traps.rgb24.ref.png
index 374d6fe..01cc60a 100644
Binary files a/test/reference/random-clip.traps.rgb24.ref.png and b/test/reference/random-clip.traps.rgb24.ref.png differ
diff --git a/test/reference/stroke-image.traps.argb32.ref.png b/test/reference/stroke-image.traps.argb32.ref.png
index 15d4dce..75737d5 100644
Binary files a/test/reference/stroke-image.traps.argb32.ref.png and b/test/reference/stroke-image.traps.argb32.ref.png differ
diff --git a/test/reference/stroke-image.traps.rgb24.ref.png b/test/reference/stroke-image.traps.rgb24.ref.png
index 15d4dce..75737d5 100644
Binary files a/test/reference/stroke-image.traps.rgb24.ref.png and b/test/reference/stroke-image.traps.rgb24.ref.png differ
diff --git a/test/reference/subsurface.traps.argb32.ref.png b/test/reference/subsurface.traps.argb32.ref.png
index 77e3c23..feeb5dc 100644
Binary files a/test/reference/subsurface.traps.argb32.ref.png and b/test/reference/subsurface.traps.argb32.ref.png differ
diff --git a/test/reference/subsurface.traps.rgb24.ref.png b/test/reference/subsurface.traps.rgb24.ref.png
index 77e3c23..feeb5dc 100644
Binary files a/test/reference/subsurface.traps.rgb24.ref.png and b/test/reference/subsurface.traps.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-gray.traps.argb32.ref.png b/test/reference/twin-antialias-gray.traps.argb32.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin-antialias-gray.traps.argb32.ref.png and b/test/reference/twin-antialias-gray.traps.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-gray.traps.rgb24.ref.png b/test/reference/twin-antialias-gray.traps.rgb24.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin-antialias-gray.traps.rgb24.ref.png and b/test/reference/twin-antialias-gray.traps.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-mixed.traps.argb32.ref.png b/test/reference/twin-antialias-mixed.traps.argb32.ref.png
index 0c91dd1..d6c406f 100644
Binary files a/test/reference/twin-antialias-mixed.traps.argb32.ref.png and b/test/reference/twin-antialias-mixed.traps.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-mixed.traps.rgb24.ref.png b/test/reference/twin-antialias-mixed.traps.rgb24.ref.png
index 0c91dd1..d6c406f 100644
Binary files a/test/reference/twin-antialias-mixed.traps.rgb24.ref.png and b/test/reference/twin-antialias-mixed.traps.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-none.traps.argb32.ref.png b/test/reference/twin-antialias-none.traps.argb32.ref.png
index 42f386d..02cf333 100644
Binary files a/test/reference/twin-antialias-none.traps.argb32.ref.png and b/test/reference/twin-antialias-none.traps.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-none.traps.rgb24.ref.png b/test/reference/twin-antialias-none.traps.rgb24.ref.png
index 42f386d..02cf333 100644
Binary files a/test/reference/twin-antialias-none.traps.rgb24.ref.png and b/test/reference/twin-antialias-none.traps.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-subpixel.traps.argb32.ref.png b/test/reference/twin-antialias-subpixel.traps.argb32.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin-antialias-subpixel.traps.argb32.ref.png and b/test/reference/twin-antialias-subpixel.traps.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png b/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png and b/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png differ
diff --git a/test/reference/twin.traps.argb32.ref.png b/test/reference/twin.traps.argb32.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin.traps.argb32.ref.png and b/test/reference/twin.traps.argb32.ref.png differ
diff --git a/test/reference/twin.traps.rgb24.ref.png b/test/reference/twin.traps.rgb24.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin.traps.rgb24.ref.png and b/test/reference/twin.traps.rgb24.ref.png differ
diff --git a/test/reference/user-font.traps.argb32.ref.png b/test/reference/user-font.traps.argb32.ref.png
index 0ea3d17..c94cd49 100644
Binary files a/test/reference/user-font.traps.argb32.ref.png and b/test/reference/user-font.traps.argb32.ref.png differ
diff --git a/test/reference/user-font.traps.rgb24.ref.png b/test/reference/user-font.traps.rgb24.ref.png
index 0ea3d17..c94cd49 100644
Binary files a/test/reference/user-font.traps.rgb24.ref.png and b/test/reference/user-font.traps.rgb24.ref.png differ
commit c9f18bb034c31b37692b80db47b663f14f441f6a
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Feb 22 10:09:05 2012 +0000

    test: Update base reference images for new reference font
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/test/reference/clear-source.base.argb32.ref.png b/test/reference/clear-source.base.argb32.ref.png
index b7e8025..352bf45 100644
Binary files a/test/reference/clear-source.base.argb32.ref.png and b/test/reference/clear-source.base.argb32.ref.png differ
diff --git a/test/reference/clear-source.base.rgb24.ref.png b/test/reference/clear-source.base.rgb24.ref.png
index b7e8025..352bf45 100644
Binary files a/test/reference/clear-source.base.rgb24.ref.png and b/test/reference/clear-source.base.rgb24.ref.png differ
diff --git a/test/reference/clip-operator.base.argb32.ref.png b/test/reference/clip-operator.base.argb32.ref.png
index 63a7baa..289b5d9 100644
Binary files a/test/reference/clip-operator.base.argb32.ref.png and b/test/reference/clip-operator.base.argb32.ref.png differ
diff --git a/test/reference/clip-operator.base.rgb24.ref.png b/test/reference/clip-operator.base.rgb24.ref.png
index d3d84f2..299960e 100644
Binary files a/test/reference/clip-operator.base.rgb24.ref.png and b/test/reference/clip-operator.base.rgb24.ref.png differ
diff --git a/test/reference/clip-text.base.argb32.ref.png b/test/reference/clip-text.base.argb32.ref.png
index eed421f..2a68298 100644
Binary files a/test/reference/clip-text.base.argb32.ref.png and b/test/reference/clip-text.base.argb32.ref.png differ
diff --git a/test/reference/clip-text.base.rgb24.ref.png b/test/reference/clip-text.base.rgb24.ref.png
index eed421f..2a68298 100644
Binary files a/test/reference/clip-text.base.rgb24.ref.png and b/test/reference/clip-text.base.rgb24.ref.png differ
diff --git a/test/reference/culled-glyphs.base.argb32.ref.png b/test/reference/culled-glyphs.base.argb32.ref.png
index 08aad33..6701295 100644
Binary files a/test/reference/culled-glyphs.base.argb32.ref.png and b/test/reference/culled-glyphs.base.argb32.ref.png differ
diff --git a/test/reference/culled-glyphs.base.rgb24.ref.png b/test/reference/culled-glyphs.base.rgb24.ref.png
index 08aad33..6701295 100644
Binary files a/test/reference/culled-glyphs.base.rgb24.ref.png and b/test/reference/culled-glyphs.base.rgb24.ref.png differ
diff --git a/test/reference/fill-image.base.argb32.ref.png b/test/reference/fill-image.base.argb32.ref.png
index b94ed91..1e67073 100644
Binary files a/test/reference/fill-image.base.argb32.ref.png and b/test/reference/fill-image.base.argb32.ref.png differ
diff --git a/test/reference/fill-image.base.rgb24.ref.png b/test/reference/fill-image.base.rgb24.ref.png
index b94ed91..1e67073 100644
Binary files a/test/reference/fill-image.base.rgb24.ref.png and b/test/reference/fill-image.base.rgb24.ref.png differ
diff --git a/test/reference/font-matrix-translation.base.argb32.ref.png b/test/reference/font-matrix-translation.base.argb32.ref.png
index dd5faba..a4a1082 100644
Binary files a/test/reference/font-matrix-translation.base.argb32.ref.png and b/test/reference/font-matrix-translation.base.argb32.ref.png differ
diff --git a/test/reference/font-matrix-translation.base.rgb24.ref.png b/test/reference/font-matrix-translation.base.rgb24.ref.png
index dd5faba..a4a1082 100644
Binary files a/test/reference/font-matrix-translation.base.rgb24.ref.png and b/test/reference/font-matrix-translation.base.rgb24.ref.png differ
diff --git a/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png b/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png
index b49ed47..af6dcaf 100644
Binary files a/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png and b/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png differ
diff --git a/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png b/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png
index b49ed47..af6dcaf 100644
Binary files a/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png and b/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png differ
diff --git a/test/reference/ft-show-glyphs-table.base.argb32.ref.png b/test/reference/ft-show-glyphs-table.base.argb32.ref.png
index c762dc7..ed69124 100644
Binary files a/test/reference/ft-show-glyphs-table.base.argb32.ref.png and b/test/reference/ft-show-glyphs-table.base.argb32.ref.png differ
diff --git a/test/reference/ft-show-glyphs-table.base.rgb24.ref.png b/test/reference/ft-show-glyphs-table.base.rgb24.ref.png
index c762dc7..ed69124 100644
Binary files a/test/reference/ft-show-glyphs-table.base.rgb24.ref.png and b/test/reference/ft-show-glyphs-table.base.rgb24.ref.png differ
diff --git a/test/reference/glyph-cache-pressure.base.argb32.ref.png b/test/reference/glyph-cache-pressure.base.argb32.ref.png
index 14182f1..a6e1b06 100644
Binary files a/test/reference/glyph-cache-pressure.base.argb32.ref.png and b/test/reference/glyph-cache-pressure.base.argb32.ref.png differ
diff --git a/test/reference/glyph-cache-pressure.base.rgb24.ref.png b/test/reference/glyph-cache-pressure.base.rgb24.ref.png
index 14182f1..a6e1b06 100644
Binary files a/test/reference/glyph-cache-pressure.base.rgb24.ref.png and b/test/reference/glyph-cache-pressure.base.rgb24.ref.png differ
diff --git a/test/reference/halo-transform.base.argb32.ref.png b/test/reference/halo-transform.base.argb32.ref.png
index ac314b0..45cb90f 100644
Binary files a/test/reference/halo-transform.base.argb32.ref.png and b/test/reference/halo-transform.base.argb32.ref.png differ
diff --git a/test/reference/halo-transform.base.rgb24.ref.png b/test/reference/halo-transform.base.rgb24.ref.png
index ac314b0..45cb90f 100644
Binary files a/test/reference/halo-transform.base.rgb24.ref.png and b/test/reference/halo-transform.base.rgb24.ref.png differ
diff --git a/test/reference/halo.base.argb32.ref.png b/test/reference/halo.base.argb32.ref.png
index bc971d8..c915a24 100644
Binary files a/test/reference/halo.base.argb32.ref.png and b/test/reference/halo.base.argb32.ref.png differ
diff --git a/test/reference/halo.base.rgb24.ref.png b/test/reference/halo.base.rgb24.ref.png
index bc971d8..c915a24 100644
Binary files a/test/reference/halo.base.rgb24.ref.png and b/test/reference/halo.base.rgb24.ref.png differ
diff --git a/test/reference/large-twin-antialias-mixed.base.argb32.ref.png b/test/reference/large-twin-antialias-mixed.base.argb32.ref.png
index 456e81d..ace463b 100644
Binary files a/test/reference/large-twin-antialias-mixed.base.argb32.ref.png and b/test/reference/large-twin-antialias-mixed.base.argb32.ref.png differ
diff --git a/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png b/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png
index 456e81d..ace463b 100644
Binary files a/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png and b/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png differ
diff --git a/test/reference/operator-clear.base.argb32.ref.png b/test/reference/operator-clear.base.argb32.ref.png
index 235db6b..c49b4a8 100644
Binary files a/test/reference/operator-clear.base.argb32.ref.png and b/test/reference/operator-clear.base.argb32.ref.png differ
diff --git a/test/reference/operator-clear.base.rgb24.ref.png b/test/reference/operator-clear.base.rgb24.ref.png
index fa07d4a..51d38d1 100644
Binary files a/test/reference/operator-clear.base.rgb24.ref.png and b/test/reference/operator-clear.base.rgb24.ref.png differ
diff --git a/test/reference/operator-source.base.argb32.ref.png b/test/reference/operator-source.base.argb32.ref.png
index 6884f33..42e24f2 100644
Binary files a/test/reference/operator-source.base.argb32.ref.png and b/test/reference/operator-source.base.argb32.ref.png differ
diff --git a/test/reference/operator-source.base.rgb24.ref.png b/test/reference/operator-source.base.rgb24.ref.png
index 32a6a40..4736d58 100644
Binary files a/test/reference/operator-source.base.rgb24.ref.png and b/test/reference/operator-source.base.rgb24.ref.png differ
diff --git a/test/reference/overlapping-glyphs.base.argb32.ref.png b/test/reference/overlapping-glyphs.base.argb32.ref.png
index 0dc6fdb..11bf4e1 100644
Binary files a/test/reference/overlapping-glyphs.base.argb32.ref.png and b/test/reference/overlapping-glyphs.base.argb32.ref.png differ
diff --git a/test/reference/overlapping-glyphs.base.rgb24.ref.png b/test/reference/overlapping-glyphs.base.rgb24.ref.png
index 9702cc2..6b65510 100644
Binary files a/test/reference/overlapping-glyphs.base.rgb24.ref.png and b/test/reference/overlapping-glyphs.base.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-bottom.base.argb32.ref.png b/test/reference/partial-clip-text-bottom.base.argb32.ref.png
index 7a03fad..6a299d4 100644
Binary files a/test/reference/partial-clip-text-bottom.base.argb32.ref.png and b/test/reference/partial-clip-text-bottom.base.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-bottom.base.rgb24.ref.png b/test/reference/partial-clip-text-bottom.base.rgb24.ref.png
index 7a03fad..6a299d4 100644
Binary files a/test/reference/partial-clip-text-bottom.base.rgb24.ref.png and b/test/reference/partial-clip-text-bottom.base.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-left.base.argb32.ref.png b/test/reference/partial-clip-text-left.base.argb32.ref.png
index 95c07f4..54a1a85 100644
Binary files a/test/reference/partial-clip-text-left.base.argb32.ref.png and b/test/reference/partial-clip-text-left.base.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-left.base.rgb24.ref.png b/test/reference/partial-clip-text-left.base.rgb24.ref.png
index 95c07f4..54a1a85 100644
Binary files a/test/reference/partial-clip-text-left.base.rgb24.ref.png and b/test/reference/partial-clip-text-left.base.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-right.base.argb32.ref.png b/test/reference/partial-clip-text-right.base.argb32.ref.png
index 3e69ca9..2fbdca0 100644
Binary files a/test/reference/partial-clip-text-right.base.argb32.ref.png and b/test/reference/partial-clip-text-right.base.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-right.base.rgb24.ref.png b/test/reference/partial-clip-text-right.base.rgb24.ref.png
index 3e69ca9..2fbdca0 100644
Binary files a/test/reference/partial-clip-text-right.base.rgb24.ref.png and b/test/reference/partial-clip-text-right.base.rgb24.ref.png differ
diff --git a/test/reference/partial-clip-text-top.base.argb32.ref.png b/test/reference/partial-clip-text-top.base.argb32.ref.png
index afe2d3e..d18475b 100644
Binary files a/test/reference/partial-clip-text-top.base.argb32.ref.png and b/test/reference/partial-clip-text-top.base.argb32.ref.png differ
diff --git a/test/reference/partial-clip-text-top.base.rgb24.ref.png b/test/reference/partial-clip-text-top.base.rgb24.ref.png
index afe2d3e..d18475b 100644
Binary files a/test/reference/partial-clip-text-top.base.rgb24.ref.png and b/test/reference/partial-clip-text-top.base.rgb24.ref.png differ
diff --git a/test/reference/pthread-show-text.base.argb32.ref.png b/test/reference/pthread-show-text.base.argb32.ref.png
index efa5fe9..90d0af3 100644
Binary files a/test/reference/pthread-show-text.base.argb32.ref.png and b/test/reference/pthread-show-text.base.argb32.ref.png differ
diff --git a/test/reference/pthread-show-text.base.rgb24.ref.png b/test/reference/pthread-show-text.base.rgb24.ref.png
index efa5fe9..90d0af3 100644
Binary files a/test/reference/pthread-show-text.base.rgb24.ref.png and b/test/reference/pthread-show-text.base.rgb24.ref.png differ
diff --git a/test/reference/select-font-face.base.argb32.ref.png b/test/reference/select-font-face.base.argb32.ref.png
index be89d71..1334a9a 100644
Binary files a/test/reference/select-font-face.base.argb32.ref.png and b/test/reference/select-font-face.base.argb32.ref.png differ
diff --git a/test/reference/select-font-face.base.rgb24.ref.png b/test/reference/select-font-face.base.rgb24.ref.png
index be89d71..1334a9a 100644
Binary files a/test/reference/select-font-face.base.rgb24.ref.png and b/test/reference/select-font-face.base.rgb24.ref.png differ
diff --git a/test/reference/show-glyphs-advance.base.argb32.ref.png b/test/reference/show-glyphs-advance.base.argb32.ref.png
index e784099..e65ad05 100644
Binary files a/test/reference/show-glyphs-advance.base.argb32.ref.png and b/test/reference/show-glyphs-advance.base.argb32.ref.png differ
diff --git a/test/reference/show-glyphs-advance.base.rgb24.ref.png b/test/reference/show-glyphs-advance.base.rgb24.ref.png
index e784099..e65ad05 100644
Binary files a/test/reference/show-glyphs-advance.base.rgb24.ref.png and b/test/reference/show-glyphs-advance.base.rgb24.ref.png differ
diff --git a/test/reference/show-text-current-point.base.argb32.ref.png b/test/reference/show-text-current-point.base.argb32.ref.png
index b2ee5b2..d60d4ac 100644
Binary files a/test/reference/show-text-current-point.base.argb32.ref.png and b/test/reference/show-text-current-point.base.argb32.ref.png differ
diff --git a/test/reference/show-text-current-point.base.rgb24.ref.png b/test/reference/show-text-current-point.base.rgb24.ref.png
index b2ee5b2..d60d4ac 100644
Binary files a/test/reference/show-text-current-point.base.rgb24.ref.png and b/test/reference/show-text-current-point.base.rgb24.ref.png differ
diff --git a/test/reference/smask-text.base.argb32.ref.png b/test/reference/smask-text.base.argb32.ref.png
index 871eaee..344ac20 100644
Binary files a/test/reference/smask-text.base.argb32.ref.png and b/test/reference/smask-text.base.argb32.ref.png differ
diff --git a/test/reference/smask-text.base.rgb24.ref.png b/test/reference/smask-text.base.rgb24.ref.png
index 871eaee..344ac20 100644
Binary files a/test/reference/smask-text.base.rgb24.ref.png and b/test/reference/smask-text.base.rgb24.ref.png differ
diff --git a/test/reference/smask.base.argb32.ref.png b/test/reference/smask.base.argb32.ref.png
index 445d920..357e8e7 100644
Binary files a/test/reference/smask.base.argb32.ref.png and b/test/reference/smask.base.argb32.ref.png differ
diff --git a/test/reference/smask.base.rgb24.ref.png b/test/reference/smask.base.rgb24.ref.png
index 445d920..357e8e7 100644
Binary files a/test/reference/smask.base.rgb24.ref.png and b/test/reference/smask.base.rgb24.ref.png differ
diff --git a/test/reference/stroke-image.base.argb32.ref.png b/test/reference/stroke-image.base.argb32.ref.png
index 15d4dce..75737d5 100644
Binary files a/test/reference/stroke-image.base.argb32.ref.png and b/test/reference/stroke-image.base.argb32.ref.png differ
diff --git a/test/reference/stroke-image.base.rgb24.ref.png b/test/reference/stroke-image.base.rgb24.ref.png
index 15d4dce..75737d5 100644
Binary files a/test/reference/stroke-image.base.rgb24.ref.png and b/test/reference/stroke-image.base.rgb24.ref.png differ
diff --git a/test/reference/subsurface-outside-target.base.argb32.ref.png b/test/reference/subsurface-outside-target.base.argb32.ref.png
index 16294f3..337cdd8 100644
Binary files a/test/reference/subsurface-outside-target.base.argb32.ref.png and b/test/reference/subsurface-outside-target.base.argb32.ref.png differ
diff --git a/test/reference/subsurface-outside-target.base.rgb24.ref.png b/test/reference/subsurface-outside-target.base.rgb24.ref.png
index 1009249..368936e 100644
Binary files a/test/reference/subsurface-outside-target.base.rgb24.ref.png and b/test/reference/subsurface-outside-target.base.rgb24.ref.png differ
diff --git a/test/reference/subsurface.base.argb32.ref.png b/test/reference/subsurface.base.argb32.ref.png
index 77e3c23..feeb5dc 100644
Binary files a/test/reference/subsurface.base.argb32.ref.png and b/test/reference/subsurface.base.argb32.ref.png differ
diff --git a/test/reference/subsurface.base.rgb24.ref.png b/test/reference/subsurface.base.rgb24.ref.png
index 77e3c23..feeb5dc 100644
Binary files a/test/reference/subsurface.base.rgb24.ref.png and b/test/reference/subsurface.base.rgb24.ref.png differ
diff --git a/test/reference/text-antialias-gray.base.argb32.ref.png b/test/reference/text-antialias-gray.base.argb32.ref.png
index b1dbc20..06b805e 100644
Binary files a/test/reference/text-antialias-gray.base.argb32.ref.png and b/test/reference/text-antialias-gray.base.argb32.ref.png differ
diff --git a/test/reference/text-antialias-gray.base.rgb24.ref.png b/test/reference/text-antialias-gray.base.rgb24.ref.png
index b1dbc20..06b805e 100644
Binary files a/test/reference/text-antialias-gray.base.rgb24.ref.png and b/test/reference/text-antialias-gray.base.rgb24.ref.png differ
diff --git a/test/reference/text-glyph-range.base.argb32.ref.png b/test/reference/text-glyph-range.base.argb32.ref.png
index 91de73d..3268699 100644
Binary files a/test/reference/text-glyph-range.base.argb32.ref.png and b/test/reference/text-glyph-range.base.argb32.ref.png differ
diff --git a/test/reference/text-glyph-range.base.rgb24.ref.png b/test/reference/text-glyph-range.base.rgb24.ref.png
index 91de73d..3268699 100644
Binary files a/test/reference/text-glyph-range.base.rgb24.ref.png and b/test/reference/text-glyph-range.base.rgb24.ref.png differ
diff --git a/test/reference/text-pattern.base.argb32.ref.png b/test/reference/text-pattern.base.argb32.ref.png
index d9f3eaa..79f18e4 100644
Binary files a/test/reference/text-pattern.base.argb32.ref.png and b/test/reference/text-pattern.base.argb32.ref.png differ
diff --git a/test/reference/text-pattern.base.rgb24.ref.png b/test/reference/text-pattern.base.rgb24.ref.png
index 70d4a59..b073b98 100644
Binary files a/test/reference/text-pattern.base.rgb24.ref.png and b/test/reference/text-pattern.base.rgb24.ref.png differ
diff --git a/test/reference/text-rotate.base.argb32.ref.png b/test/reference/text-rotate.base.argb32.ref.png
index 1db9a00..ff3fe84 100644
Binary files a/test/reference/text-rotate.base.argb32.ref.png and b/test/reference/text-rotate.base.argb32.ref.png differ
diff --git a/test/reference/text-rotate.base.rgb24.ref.png b/test/reference/text-rotate.base.rgb24.ref.png
index 1db9a00..ff3fe84 100644
Binary files a/test/reference/text-rotate.base.rgb24.ref.png and b/test/reference/text-rotate.base.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-gray.base.argb32.ref.png b/test/reference/twin-antialias-gray.base.argb32.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin-antialias-gray.base.argb32.ref.png and b/test/reference/twin-antialias-gray.base.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-gray.base.rgb24.ref.png b/test/reference/twin-antialias-gray.base.rgb24.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin-antialias-gray.base.rgb24.ref.png and b/test/reference/twin-antialias-gray.base.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-mixed.base.argb32.ref.png b/test/reference/twin-antialias-mixed.base.argb32.ref.png
index 0c91dd1..d6c406f 100644
Binary files a/test/reference/twin-antialias-mixed.base.argb32.ref.png and b/test/reference/twin-antialias-mixed.base.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-mixed.base.rgb24.ref.png b/test/reference/twin-antialias-mixed.base.rgb24.ref.png
index 0c91dd1..d6c406f 100644
Binary files a/test/reference/twin-antialias-mixed.base.rgb24.ref.png and b/test/reference/twin-antialias-mixed.base.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-none.base.argb32.ref.png b/test/reference/twin-antialias-none.base.argb32.ref.png
index 42f386d..02cf333 100644
Binary files a/test/reference/twin-antialias-none.base.argb32.ref.png and b/test/reference/twin-antialias-none.base.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-none.base.rgb24.ref.png b/test/reference/twin-antialias-none.base.rgb24.ref.png
index 42f386d..02cf333 100644
Binary files a/test/reference/twin-antialias-none.base.rgb24.ref.png and b/test/reference/twin-antialias-none.base.rgb24.ref.png differ
diff --git a/test/reference/twin-antialias-subpixel.base.argb32.ref.png b/test/reference/twin-antialias-subpixel.base.argb32.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin-antialias-subpixel.base.argb32.ref.png and b/test/reference/twin-antialias-subpixel.base.argb32.ref.png differ
diff --git a/test/reference/twin-antialias-subpixel.base.rgb24.ref.png b/test/reference/twin-antialias-subpixel.base.rgb24.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin-antialias-subpixel.base.rgb24.ref.png and b/test/reference/twin-antialias-subpixel.base.rgb24.ref.png differ
diff --git a/test/reference/twin.base.argb32.ref.png b/test/reference/twin.base.argb32.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin.base.argb32.ref.png and b/test/reference/twin.base.argb32.ref.png differ
diff --git a/test/reference/twin.base.rgb24.ref.png b/test/reference/twin.base.rgb24.ref.png
index bfd4211..d1102b2 100644
Binary files a/test/reference/twin.base.rgb24.ref.png and b/test/reference/twin.base.rgb24.ref.png differ
diff --git a/test/reference/unbounded-operator.base.argb32.ref.png b/test/reference/unbounded-operator.base.argb32.ref.png
index dfb9031..fe86a94 100644
Binary files a/test/reference/unbounded-operator.base.argb32.ref.png and b/test/reference/unbounded-operator.base.argb32.ref.png differ
diff --git a/test/reference/unbounded-operator.base.rgb24.ref.png b/test/reference/unbounded-operator.base.rgb24.ref.png
index 6a0c5b3..c8555af 100644
Binary files a/test/reference/unbounded-operator.base.rgb24.ref.png and b/test/reference/unbounded-operator.base.rgb24.ref.png differ
diff --git a/test/reference/user-font-proxy.base.argb32.ref.png b/test/reference/user-font-proxy.base.argb32.ref.png
index 92ce636..094938c 100644
Binary files a/test/reference/user-font-proxy.base.argb32.ref.png and b/test/reference/user-font-proxy.base.argb32.ref.png differ
diff --git a/test/reference/user-font-proxy.base.rgb24.ref.png b/test/reference/user-font-proxy.base.rgb24.ref.png
index 92ce636..094938c 100644
Binary files a/test/reference/user-font-proxy.base.rgb24.ref.png and b/test/reference/user-font-proxy.base.rgb24.ref.png differ
diff --git a/test/reference/user-font-rescale.base.argb32.ref.png b/test/reference/user-font-rescale.base.argb32.ref.png
index c644f75..0939060 100644
Binary files a/test/reference/user-font-rescale.base.argb32.ref.png and b/test/reference/user-font-rescale.base.argb32.ref.png differ
diff --git a/test/reference/user-font-rescale.base.rgb24.ref.png b/test/reference/user-font-rescale.base.rgb24.ref.png
index c644f75..0939060 100644
Binary files a/test/reference/user-font-rescale.base.rgb24.ref.png and b/test/reference/user-font-rescale.base.rgb24.ref.png differ
diff --git a/test/reference/user-font.base.argb32.ref.png b/test/reference/user-font.base.argb32.ref.png
index 0ea3d17..c94cd49 100644
Binary files a/test/reference/user-font.base.argb32.ref.png and b/test/reference/user-font.base.argb32.ref.png differ
diff --git a/test/reference/user-font.base.rgb24.ref.png b/test/reference/user-font.base.rgb24.ref.png
index 0ea3d17..c94cd49 100644
Binary files a/test/reference/user-font.base.rgb24.ref.png and b/test/reference/user-font.base.rgb24.ref.png differ


More information about the cairo-commit mailing list