[cairo] [cairo-announce] cairo snapshot 1.3.4 now available

Xan Lopez xan.lopez at gmail.com
Thu Nov 23 07:18:33 PST 2006


Hey guys,
Some updated numbers: http://blogs.gnome.org/view/xan/2006/11/23/0

Another excellent release according to my tests, thanks everyone!

Cheers, Xan

P.S: still no oprofile love, but it's coming.

On 11/23/06, Carl Worth <cworth at cworth.org> wrote:
>
> [If you're not familiar with cairo at all, skip down to the final
> paragraphs explaining "What is cairo"]
>
> A new cairo snapshot 1.3.4 is now available from:
>
>         http://cairographics.org/snapshots/cairo-1.3.4.tar.gz
>
>     which can be verified with:
>
>         http://cairographics.org/snapshots/cairo-1.3.4.tar.gz.sha1
>         0c412d56c01ea5fcbcfeafdfc6f23b3772a9711e  cairo-1.3.4.tar.gz
>
>         http://cairographics.org/snapshots/cairo-1.3.4.tar.gz.sha1.asc
>         (signed by Carl Worth)
>
>   Additionally, a git clone of the source tree:
>
>         git clone git://git.cairographics.org/git/cairo
>
>     will include a signed 1.3.4 tag which points to a commit named:
>         143c56cb12ee5d0b0fbc5e4039dd4fc88764254d
>
>     which can be verified with:
>         git verify-tag 1.3.4
>
>     and can be checked out with a command such as:
>         git checkout -b build 1.3.4
>
> What's new since 1.3.2?
> =======================
> This is the second development snapshot in the 1.3 series. It comes
> one week after the 1.3.2 snapshot.
>
> This snapshot has a couple of significant performance improvements,
> and also adds new support for producing multi-page SVG output, (when
> targeting SVG 1.2)---thanks to Emmanuel Pacaud. The details of the
> performance improvements are as follows:
>
> 1. The long-awaited "new tessellator".
>
>    The credit for this being an improvement goes to Joonas Pihlaja. He
>    took my really slow code and really put it through its paces to get
>    the dramatic performance improvement seen below (up to 38x faster
>    on realistic cases, and more than 10x faster for the zrusin_another
>    test).
>
>    His own writeup of the work he did is quite thorough, but more than
>    can be quoted here. Please see his post for the interesting details:
>
>    http://lists.freedesktop.org/archives/cairo/2006-November/008483.html
>
>    (Though note that this snapshot also includes some additional,
>    significant improvements that were only sketched out in that
>    email---see "Generating fewer trapezoids").
>
> 2. More floating-point improvements
>
>    Daniel Amelang continues to work the magic he began in the 1.3.2
>    snapshot. This time he short-circuits floating-point
>    transformations by identity matrices and applies the earlier
>    floating-to-fixed-point technique to the problem of rounding.
>
>    The improvements here will primarily benefit text performance, and
>    will benefit platforms without hardware floating-point more than
>    those that have it, (some text tests show 20% improvement on an x86
>    machine and closer to 80% improvement on arm).
>
> The performance chart comparing 1.3.2 to 1.3.4 really speaks for
> itself, (this is on an x86 laptop). This is quite a lot of progress
> for one week:
>
> xlib-rgb    stroke_similar_rgba_over-256   74.99 1.45% ->   2.03 68.38%:
> 36.86x speedup
> ¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨
> xlib-rgb  stroke_similar_rgba_source-256   78.23 1.43% ->   3.30 67.05%:
> 23.71x speedup
> ¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨‚
> xlib-rgba             tessellate-256-100  820.42 0.15% ->  35.06 2.84%:
> 23.40x speedup
> ¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨…
> image-rgba             tessellate-256-100  819.55 0.32% ->  35.04 3.56%:
> 23.39x speedup
> ¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨…
> xlib-rgb      stroke_image_rgba_over-256   78.10 1.43% ->   4.33 65.56%:
> 18.04x speedup
> ¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€
> xlib-rgb    stroke_image_rgba_source-256   80.11 1.63% ->   5.75 63.99%:
> 13.94x speedup
> ¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€¨€
> xlib-rgba  zrusin_another_tessellate-415   89.22 0.35% ->   8.38 5.23%:
> 10.65x speedup
> ¨€¨€¨€¨€¨€¨€¨€¨€¨€¨ƒ
> image-rgba  zrusin_another_tessellate-415   87.38 0.89% ->   8.37 5.22%:
> 10.44x speedup
> ¨€¨€¨€¨€¨€¨€¨€¨€¨€¨…
> image-rgba        zrusin_another_fill-415  117.67 1.34% ->  12.88 2.77%:
> 9.14x speedup
> ¨€¨€¨€¨€¨€¨€¨€¨€¨‡
> xlib-rgba        zrusin_another_fill-415  140.52 1.57% ->  15.79 2.88%:
> 8.90x speedup
> ¨€¨€¨€¨€¨€¨€¨€¨
> image-rgba              tessellate-64-100    9.68 3.42% ->   1.42 0.60%:
> 6.82x speedup
> ¨€¨€¨€¨€¨€¨
> xlib-rgba              tessellate-64-100    9.78 4.35% ->   1.45 0.83%:
> 6.72x speedup
> ¨€¨€¨€¨€¨€¨‚
> xlib-rgb     stroke_linear_rgba_over-256   46.01 2.44% ->   7.74 54.51%:
> 5.94x speedup
> ¨€¨€¨€¨€¨€
> xlib-rgb   stroke_linear_rgba_source-256   48.09 2.15% ->   9.14 53.00%:
> 5.26x speedup
> ¨€¨€¨€¨€¨†
> xlib-rgb     stroke_radial_rgba_over-256   50.96 2.34% ->  12.46 47.99%:
> 4.09x speedup
> ¨€¨€¨€¨‡
> xlib-rgb   stroke_radial_rgba_source-256   53.06 1.57% ->  13.96 46.57%:
> 3.80x speedup
> ¨€¨€¨‚
> image-rgba  paint_similar_rgba_source-256    0.12 1.57% ->   0.08 9.92%:
> 1.42x speedup
> ¨…
> image-rgba    paint_image_rgba_source-256    0.12 2.49% ->   0.08 10.70%:
>   1.41x speedup
> ¨…
> image-rgba                  world_map-800  356.28 0.46% -> 275.72 1.15%:
> 1.29x speedup
> ¨†
> xlib-rgba                  world_map-800  456.81 0.39% -> 357.95 1.39%:
> 1.28x speedup
> ¨†
> image-rgb               tessellate-16-100    0.09 0.57% ->   0.07 3.43%:
> 1.23x speedup
> ¨†
> image-rgba              tessellate-16-100    0.09 0.06% ->   0.07 2.46%:
> 1.23x speedup
> ¨†
> image-rgba        text_solid_rgb_over-256    5.39 4.01% ->   4.47 0.70%:
> 1.21x speedup
> ¨†
> image-rgba       text_solid_rgba_over-256    5.37 0.82% ->   4.45 0.75%:
> 1.21x speedup
> ¨†
> image-rgba        text_image_rgb_over-64     0.78 0.10% ->   0.65 0.74%:
> 1.20x speedup
> ¨†
> image-rgba       text_image_rgba_over-64     0.78 0.29% ->   0.65 0.68%:
> 1.19x speedup
> ¨†
> image-rgb         text_solid_rgb_over-64     0.76 2.45% ->   0.63 0.81%:
> 1.19x speedup
> ¨†
> image-rgba       text_solid_rgba_over-64     0.76 0.33% ->   0.64 0.66%:
> 1.19x speedup
> ¨†
> image-rgba     text_similar_rgba_over-256    5.99 4.72% ->   5.04 1.09%:
> 1.19x speedup
> ¨†
>
> We should point out that there is some potential for slowdown in this
> snapshot. The following are the worst slowdowns reported by the cairo
> performance suite when comparing 1.3.2 to 1.3.4:
>
> image-rgba              subimage_copy-256    0.01 0.87% ->   0.01 3.61%:
> 1.45x slowdown
> ¨„
> xlib-rgb        paint_solid_rgb_over-256    0.31 10.23% ->   0.38 0.33%:
> 1.26x slowdown
> ¨†
> image-rgba           box-outline-fill-100    0.01 0.30% ->   0.01 2.52%:
> 1.21x slowdown
> ¨†
> image-rgba        fill_solid_rgb_over-64     0.20 1.22% ->   0.22 1.59%:
> 1.12x slowdown
> ¨‡
> image-rgb       fill_similar_rgb_over-64     0.21 1.04% ->   0.24 1.06%:
> 1.11x slowdown
> ¨‡
> image-rgba        fill_image_rgb_over-64     0.21 1.19% ->   0.24 0.72%:
> 1.11x slowdown
> ¨‡
> image-rgba      fill_similar_rgb_over-64     0.21 0.18% ->   0.24 0.30%:
> 1.11x slowdown
> ¨‡
> image-rgb        fill_solid_rgba_over-64     0.22 1.66% ->   0.24 1.15%:
> 1.11x slowdown
> ¨‡
> image-rgb         fill_image_rgb_over-64     0.21 0.14% ->   0.24 0.80%:
> 1.11x slowdown
> ¨‡
> image-rgba       fill_image_rgba_over-64     0.22 1.34% ->   0.25 0.20%:
> 1.11x slowdown
> ¨‡
> image-rgba       fill_solid_rgba_over-64     0.22 1.48% ->   0.24 0.95%:
> 1.11x slowdown
> ¨‡
> image-rgb      fill_similar_rgba_over-64     0.22 1.13% ->   0.25 1.25%:
> 1.10x slowdown
> ¨‡
>
> The 45% slowdown for subimage_copy is an extreme case. It's unlikely
> to hit many applications unless they often use cairo_rectangle;
> cairo_fill to copy a single pixel at a time. In any case, it shows a
> worst-case impact of the overhead of the new tessellator. The other
> slowdowns (~ 10%) are probably more realistic, and still very
> concerning.
>
> We will work to ensure that performance regressions like these are not
> present from one major release of cairo to the next, (for example,
> from 1.2 to 1.4).
>
> But we're putting this 1.3.4 snapshot out there now, even with this
> potential slowdown so that people can experiment with it. If you've
> got complex geometry, we hope you will see some benefit from the new
> tessellator. If you've got primarily simple geometry, we hope things
> won't slowdown too much, but please let us know what slowdown you see,
> if any, so we can calibrate our performance suite against real-world
> impacts.
>
> Log of changes from 1.3.2 to 1.3.4
> ==================================
> Behdad Esfahbod (4):
>       [SVG] Define enum _cairo_svg_version.
>       [PS] Eliminate compiler warnings about unoptimizable loops
>       [PS] Rename n_glyphs to num_glyphs_unsigned
>       [SVG] Fix compiler warning
>
> Carl Worth (18):
>       Increment cairo version to 1.3.3 after 1.3.2 snapshot
>       ROADMAP: Set cairo 1.4 to early January for sake of Gnome 2.18
>       cairo-perf: When iteration count is given on command-line, never
> execute fewer
>       perf: Add box_outline test case.
>       Add const qualifier to cairo_path_t* parameter of cairo_append_path
>       Require librsvg 2.15.0 (was 2.14.0) for testing of SVG backend.
>       test/clip-operator: Use round to pass only integers to
> cairo_show_glyphs
>       test: Use round to pass only integers to cairo_show_glyphs (in 3
> more tests)
>       give the big-trap test the XFAIL treatment.
>       Add skip list implementation (many thanks to Keith Packard)
>       Add new tessellator (unused) in cairo-bentley-ottmann.c
>       Adapt new tessellator to match the interface provided by the old
> tessellator.
>       Switch from old tessellator to new tessellator
>       Make event_queue_insert ignore duplicate intersection events (not
> duplicate start/stop events)
>       Add some missing cairo_private decorators
>       Add Daniel Amelang and Joonas Pihlaja to the AUTHORS file
>       NEWS: Add notes for 1.3.4 snapshot
>       Increment cairo version to 1.3.4
>
> Dan Amelang (5):
>       Add _cairo_matrix_is_translation
>       Refactor _cairo_matrix_is_integer_translation
>       Add and incorporate _cairo_gstate_transform_glyphs_to_backend
>       Optimize _cairo_matrix_to_pixman_matrix for the common case of an
> identity matrix
>       Change _cairo_matrix_to_pixman_matrix to use a pixman_transform_t as
> the template, thus avoiding a forced memcpy
>
> Daniel Amelang (2):
>       Add _cairo_lround for much faster rounding
>       Replace existing rounding code with _cairo_lround
>
> Emmanuel Pacaud (5):
>       Add SVGPrint support.
>       Use SVG multipage capability.
>       test/pixman-rotate.c: Don't issue a show_page, it's already done in
> cairo-test.c
>       Merge branch 'svgprint'
>       SVG: plug a memory leak
>
> Joonas Pihlaja (11):
>       A 96 by 64 bit divrem that produces a 32 bit quotient and 64 bit
> remainder.
>       Replace the 128 bit divrem by a 96/64 bit one.
>       Use an LFSR instead of random().
>       Special cases for skip list comparators.
>       Avoid a skip-list lookup when deactivating edges.
>       Separate start and stop events from intersections (first try.)
>       Tweak comparators.
>       Malloc less using a free list of nodes.
>       Make the skip list check for uniqueness.
>       Sort pointers instead of cairo_bo_events in the tessellator.
>       perf: new-tessellator: Deferred trapezoid generation (first try)
>
> Vladimir Vukicevic (1):
>       [test] add big-trap test
>
> What is cairo
> =============
> Cairo is a 2D graphics library with support for multiple output
> devices. Currently supported output targets include the X Window
> System, win32, and image buffers, as well as PDF, PostScript, and SVG
> file output. Experimental backends include OpenGL (through glitz),
> Quartz, XCB, BeOS, and DirectFB.
>
> Cairo is designed to produce consistent output on all output media
> while taking advantage of display hardware acceleration when available
> (for example, through the X Render Extension).
>
> The cairo API provides operations similar to the drawing operators of
> PostScript and PDF. Operations in cairo including stroking and filling
> cubic B¨¦zier splines, transforming and compositing translucent images,
> and antialiased text rendering. All drawing operations can be
> transformed by any affine transformation (scale, rotation, shear,
> etc.).
>
> Cairo has been designed to let you draw anything you want in a modern
> 2D graphical user interface.  At the same time, the cairo API has been
> designed to be as fun and easy to learn as possible. If you're not
> having fun while programming with cairo, then we have failed
> somewhere---let us know and we'll try to fix it next time around.
>
> Cairo is free software and is available to be redistributed and/or
> modified under the terms of either the GNU Lesser General Public
> License (LGPL) version 2.1 or the Mozilla Public License (MPL) version
> 1.1.
>
> Where to get more information about cairo
> =========================================
> The primary source of information about cairo is:
>
>         http://cairographics.org/
>
> The latest releases of cairo can be found at:
>
>         http://cairographics.org/releases
>
> Snapshots of in-development versions of cairo:
>
>         http://cairographics.org/snapshots
>
> The programming manual for using cairo:
>
>         http://cairographics.org/manual
>
> Mailing lists for contacting cairo users and developers:
>
>         http://cairographics.org/lists
>
> Answers to some frequently asked questions about cairo:
>
>         http://cairographics.org/FAQ
>
>
> _______________________________________________
> cairo-announce mailing list
> cairo-announce at cairographics.org
> http://cairographics.org/cgi-bin/mailman/listinfo/cairo-announce
>
> _______________________________________________
> cairo mailing list
> cairo at cairographics.org
> http://cairographics.org/cgi-bin/mailman/listinfo/cairo
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freedesktop.org/archives/cairo/attachments/20061123/74ca1c95/attachment-0001.html


More information about the cairo mailing list