[cairo-commit] 5 commits - AUTHORS configure.in NEWS
src/cairo-freelist-private.h src/cairoint.h
src/cairo-skiplist-private.h
Carl Worth
cworth at kemper.freedesktop.org
Wed Nov 22 19:32:48 PST 2006
- Previous message: [cairo-commit] Changes to 'refs/tags/1.3.4'
- Next message: [cairo-commit]
cairo-perl CairoSurface.xs, 1.17, 1.18 MANIFEST, 1.9,
1.10 Makefile.PL, 1.21, 1.22 NEWS, 1.9, 1.10 doctypes, NONE,
1.1 ChangeLog, 1.45, 1.46
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
AUTHORS | 2
NEWS | 152 +++++++++++++++++++++++++++++++++++++++++++
configure.in | 2
src/cairo-freelist-private.h | 12 +--
src/cairo-skiplist-private.h | 14 ++-
src/cairoint.h | 4 -
6 files changed, 172 insertions(+), 14 deletions(-)
New commits:
diff-tree 9c3b161c7067d8eda7f8d1cfb36ca285e4e7fa35 (from 143c56cb12ee5d0b0fbc5e4039dd4fc88764254d)
Author: Carl Worth <cworth at cworth.org>
Date: Wed Nov 22 19:31:56 2006 -0800
Bump version to 1.3.5 after making 1.3.4 snapshot
diff --git a/configure.in b/configure.in
index bdd5542..a825b98 100644
--- a/configure.in
+++ b/configure.in
@@ -5,7 +5,7 @@ dnl An odd micro number indicates in-pro
dnl An even micro number indicates a released version.
m4_define(cairo_version_major, 1)
m4_define(cairo_version_minor, 3)
-m4_define(cairo_version_micro, 4)
+m4_define(cairo_version_micro, 5)
AC_INIT([cairo],
cairo_version_major.cairo_version_minor.cairo_version_micro,
diff-tree 143c56cb12ee5d0b0fbc5e4039dd4fc88764254d (from e9dd52a337082cebbab2224e3a09702ada8f8e87)
Author: Carl Worth <cworth at cworth.org>
Date: Wed Nov 22 19:15:31 2006 -0800
Increment cairo version to 1.3.4
diff --git a/configure.in b/configure.in
index 70bfa56..bdd5542 100644
--- a/configure.in
+++ b/configure.in
@@ -5,7 +5,7 @@ dnl An odd micro number indicates in-pro
dnl An even micro number indicates a released version.
m4_define(cairo_version_major, 1)
m4_define(cairo_version_minor, 3)
-m4_define(cairo_version_micro, 3)
+m4_define(cairo_version_micro, 4)
AC_INIT([cairo],
cairo_version_major.cairo_version_minor.cairo_version_micro,
diff-tree e9dd52a337082cebbab2224e3a09702ada8f8e87 (from 3329abba391ebd502ba74b00ff02b7902a39945a)
Author: Carl Worth <cworth at cworth.org>
Date: Wed Nov 22 19:15:00 2006 -0800
NEWS: Add notes for 1.3.4 snapshot
diff --git a/NEWS b/NEWS
index 01333f1..29ee46c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,155 @@
+Snapshot 1.3.4 (2006-11-22 Carl Worth <cworth at cworth.org>)
+==========================================================
+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.
+
+Thanks, and have fun with cairo!
+
Snapshot 1.3.2 (2006-11-14 Carl Worth <cworth at cworth.org>)
==========================================================
This is the first development snapshot since the 1.2 stable series
diff-tree 3329abba391ebd502ba74b00ff02b7902a39945a (from a8f6d27fba582cc8e935676d26c703fa7b253822)
Author: Carl Worth <cworth at cworth.org>
Date: Wed Nov 22 19:11:51 2006 -0800
Add Daniel Amelang and Joonas Pihlaja to the AUTHORS file
diff --git a/AUTHORS b/AUTHORS
index ad0b97c..1322c7f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,4 +1,5 @@
Josh Aas <joshmoz at gmail.com> Memory leak fix for quartz backend
+Daniel Amelang <dan at amelang.net> Many (magic) floating-point optimizations
Shawn T. Amundson <amundson at gtk.org> Build fix
Olivier Andrieu <oliv__a at users.sourceforge.net> PNG backend
Peter Dennis Bartok <peter at novonyx.com> Bug fix for clipping
@@ -38,6 +39,7 @@ Mike Owens <etc at filespanker.com> Bug fix
Keith Packard <keithp at keithp.com> Original concept, polygon tessellation, dashing, font metrics rewrite
Stuart Parmenter <pavlov at pavlov.net> Original GDI+ backend, win32 fixes
Christof Petig <christof at petig-baender.de> Build fixes related to freetype
+Joonas Pihlaja <jpihlaja at cc.helsinki.fi> Huge improvements to the tessellator performance
David Reveman <davidr at novell.com> New pattern API, glitz backend
Calum Robinson <calumr at mac.com> Quartz backend
Tim Rowley <tim.rowley at gmail.com> Quartz/ATSUI fixes, X server workarounds, win32 glyph path support
diff-tree a8f6d27fba582cc8e935676d26c703fa7b253822 (from fac3684e686a259658151dac13907fa69f43f727)
Author: Carl Worth <cworth at cworth.org>
Date: Wed Nov 22 18:42:48 2006 -0800
Add some missing cairo_private decorators
diff --git a/src/cairo-freelist-private.h b/src/cairo-freelist-private.h
index 7a225ff..41855f7 100644
--- a/src/cairo-freelist-private.h
+++ b/src/cairo-freelist-private.h
@@ -21,6 +21,8 @@
*/
#ifndef CAIRO_FREELIST_H
#define CAIRO_FREELIST_H
+
+#include "cairoint.h"
#include <stddef.h>
/* Opaque implementation types. */
@@ -41,31 +43,31 @@ struct _cairo_freelist {
/* Initialise a freelist that will be responsible for allocating
* nodes of size nodesize. */
-void
+cairo_private void
_cairo_freelist_init (cairo_freelist_t *freelist, unsigned nodesize);
/* Deallocate any nodes in the freelist. */
-void
+cairo_private void
_cairo_freelist_fini (cairo_freelist_t *freelist);
/* Allocate a new node from the freelist. If the freelist contains no
* nodes, a new one will be allocated using malloc(). The caller is
* responsible for calling _cairo_freelist_free() or free() on the
* returned node. Returns NULL on memory allocation error. */
-void *
+cairo_private void *
_cairo_freelist_alloc (cairo_freelist_t *freelist);
/* Allocate a new node from the freelist. If the freelist contains no
* nodes, a new one will be allocated using calloc(). The caller is
* responsible for calling _cairo_freelist_free() or free() on the
* returned node. Returns NULL on memory allocation error. */
-void *
+cairo_private void *
_cairo_freelist_calloc (cairo_freelist_t *freelist);
/* Return a node to the freelist. This does not deallocate the memory,
* but makes it available for later reuse by
* _cairo_freelist_alloc(). */
-void
+cairo_private void
_cairo_freelist_free (cairo_freelist_t *freelist, void *node);
#endif /* CAIRO_FREELIST_H */
diff --git a/src/cairo-skiplist-private.h b/src/cairo-skiplist-private.h
index d433398..d776ad6 100644
--- a/src/cairo-skiplist-private.h
+++ b/src/cairo-skiplist-private.h
@@ -24,6 +24,8 @@
#ifndef SKIPLIST_H
#define SKIPLIST_H
+#include "cairoint.h"
+
#define MAX_LEVEL 31
/*
@@ -62,7 +64,7 @@ typedef struct _skip_list {
* sizeof) is passed for elt_size. Note that the structure used for
* list elements must have as its final member a skip_elt_t
*/
-void
+cairo_private void
skip_list_init (skip_list_t *list,
skip_list_compare_t compare,
size_t elt_size);
@@ -71,7 +73,7 @@ skip_list_init (skip_list_t *list,
/* Deallocate resources associated with a skip list and all elements
* in it. (XXX: currently this simply deletes all elements.)
*/
-void
+cairo_private void
skip_list_fini (skip_list_t *list);
/* Insert a new element into the list at the correct sort order as
@@ -79,19 +81,19 @@ skip_list_fini (skip_list_t *list);
* are ignored and the already inserted element is returned.
* Otherwise data will be copied (elt_size bytes from <data> via
* memcpy) and the new element is returned. */
-void *
+cairo_private void *
skip_list_insert (skip_list_t *list, void *data, int unique);
/* Find an element which compare considers equal to <data> */
-void *
+cairo_private void *
skip_list_find (skip_list_t *list, void *data);
/* Delete an element which compare considers equal to <data> */
-void
+cairo_private void
skip_list_delete (skip_list_t *list, void *data);
/* Delete the given element from the list. */
-void
+cairo_private void
skip_list_delete_given (skip_list_t *list, skip_elt_t *given);
#endif
diff --git a/src/cairoint.h b/src/cairoint.h
index aa17467..1f74d62 100755
--- a/src/cairoint.h
+++ b/src/cairoint.h
@@ -2236,12 +2236,12 @@ _cairo_traps_tessellate_polygon (cairo_t
cairo_polygon_t *poly,
cairo_fill_rule_t fill_rule);
-cairo_status_t
+cairo_private cairo_status_t
_cairo_traps_add_trap_from_points (cairo_traps_t *traps, cairo_fixed_t top, cairo_fixed_t bottom,
cairo_point_t left_p1, cairo_point_t left_p2,
cairo_point_t right_p1, cairo_point_t right_p2);
-cairo_status_t
+cairo_private cairo_status_t
_cairo_bentley_ottmann_tessellate_polygon (cairo_traps_t *traps,
cairo_polygon_t *polygon,
cairo_fill_rule_t fill_rule);
- Previous message: [cairo-commit] Changes to 'refs/tags/1.3.4'
- Next message: [cairo-commit]
cairo-perl CairoSurface.xs, 1.17, 1.18 MANIFEST, 1.9,
1.10 Makefile.PL, 1.21, 1.22 NEWS, 1.9, 1.10 doctypes, NONE,
1.1 ChangeLog, 1.45, 1.46
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the cairo-commit
mailing list