Commit graph

2770 commits

Author SHA1 Message Date
Carl Worth
a97b697d8f ROADMAP: Set cairo 1.4 to early January for sake of Gnome 2.18 2006-11-16 10:38:53 -08:00
Carl Worth
db603d6647 Increment cairo version to 1.3.3 after 1.3.2 snapshot 2006-11-15 15:33:52 -08:00
Carl Worth
804e20b55d Update cairo version and libtool version for 1.3.2 snapshot 2006-11-15 13:32:15 -08:00
Carl Worth
c63fd9437b NEWS: Add notes for 1.3.2 snapshot 2006-11-15 13:30:16 -08:00
Behdad Esfahbod
a2d625edc6 Add notes for the 1.2.6 release. 2006-11-14 16:08:58 -08:00
Carl Worth
eeb1fa42aa Add missing pattern-getters-ref.png to Makefile to avoid breaking distcheck target 2006-11-14 15:13:58 -08:00
Carl Worth
28a9f1dd14 Fix get-clip test for surfaces not implementing set_clip_region 2006-11-14 15:13:58 -08:00
Carl Worth
7b86cf513e Remove non-existent reference images from Makefile to avoid breaking distcheck target 2006-11-14 15:13:58 -08:00
Carl Worth
0f7381b26e cairo-perf-diff: Run git-ls-tree from the correct directory
Before this change, cairo-perf-diff would work correctly only
if run from the top-level directory, (and if run from any other
directory it would not pull in the latest boilerplate and perf
files).
2006-11-14 15:13:58 -08:00
Behdad Esfahbod
f3f6ea3092 Fix typo. 2006-11-14 17:58:09 -05:00
Carl Worth
29b01f93ca Make miter join code use tessellate_convex_quad rather than tessellate_polygon
This provides an additional 22-29% speedup on top of the previous
fix for stroking paths with many miter joins:

image-rgba  world_map-800  459.73 0.27% -> 356.80 0.32%:  1.29x speedup
▎
image-rgb   world_map-800  458.83 0.37% -> 358.08 0.41%:  1.28x speedup
▎
 xlib-rgba  world_map-800  566.57 0.23% -> 463.84 0.31%:  1.22x speedup
▎
 xlib-rgb   world_map-800  562.31 0.64% -> 460.51 0.83%:  1.22x speedup
▎
2006-11-13 16:50:30 -08:00
Carl Worth
3d53f623fa Make _cairo_stroker_add_sub_edge use tessellate_convex_quad rather than tessellate_polygon
This gives a 17-20% speedup for stroking polygons with many
straight line segments as seen in the world_map test case:

Speedups
========
image-rgba  world_map-800  555.41 0.17% -> 460.69 0.20%:  1.21x speedup
▎
image-rgb   world_map-800  554.91 0.25% -> 460.73 0.26%:  1.20x speedup
▎
 xlib-rgb   world_map-800  669.85 3.70% -> 570.31 0.24%:  1.17x speedup
▏
 xlib-rgba  world_map-800  663.71 0.46% -> 567.74 0.19%:  1.17x speedup
▏
2006-11-13 16:50:00 -08:00
Carl Worth
fefa7d9b99 Rewrite tessellate_rectangle as tessellate_convex_quad to make it more useful
Currently there aren't even any users of this code, (they had
stopped using it when they realized what they really wanted
was tessellate_convex_quad).
2006-11-13 15:57:50 -08:00
Carl Worth
e324bbcbc6 Add a status field to cairo_traps_t to enable less error checking 2006-11-13 14:44:21 -08:00
Carl Worth
74f5fe241e cairo-perf-diff: rsync only git-managed files from boilerplate/perf
Previously, we were using rsync to recursively copy all files
from boilerplate and perf when doing the performance tests. This
had the fatal flaw that pre-built binaries would be hard coded to
link against the cairo library from $CAIRO_DIR with an absolute
path, (due to libtool rpath stuff).

By only copying git-managed files, we only get source and the compiled
binaries (or libtool wrappers) will now be hard-coded to link against
the library under test.
2006-11-13 14:44:07 -08:00
Carl Worth
26b74049e7 cairo-perf-diff: Use rsync instead of cp to avoid some unnecessary rebuilding 2006-11-10 11:26:01 -08:00
Carl Worth
f1f189b81a cairo-perf-diff: Separate old and new build directories
With the fancy new, incremental cairo-perf-diff we don't want to keep
resetting the same working tree back and forth between the old and new
versions and rebuilding everything all over again. So use two different
build directories instead of one.

This fixes the rebuild of the library itself, but the perf stuff is still
being rebuilt, (since it's being re-copied each time).
2006-11-10 10:34:37 -08:00
Carl Worth
d9b697c46c cairo-perf-diff: Allow incremental refinement of performance results
cairo-perf-diff now accepts a -f command-line option to force it to
re-generate performance results even if something exists in the cache
already. It also now uses raw mode and appends to the cached file
rather than rewriting the results.

Finally, it also now allows a -- option on the command line and passes
all the subsequent command-line options to cairo-perf. This is handy for
limiting cairo-perf to run only on a subset of the tests of interest.
2006-11-10 10:34:35 -08:00
Carl Worth
439bf81e56 Fix broken size calculation for xrealloc
Another one of those "untested code == broken code" situations.
2006-11-10 10:00:31 -08:00
Carl Worth
f6b400a292 perf: Add world-map performance test case.
The map for this test case was originally demonstrated as a
performance problem in this mozilla bug report:

	A very slow SVG file with <path>s
	https://bugzilla.mozilla.org/show_bug.cgi?id=332413

I obtained permission from the creator of the original file to
include the data here, (see comments in world-map.h for details).
2006-11-08 06:07:01 -08:00
Carl Worth
2d927eaefa perf/Makefile.am: Add missing zrusin-another.h file to list 2006-11-08 06:07:01 -08:00
Carl Worth
0d1340f716 perf: Eliminate CAIRO_STATS_MIN_VALID_SAMPLES
We don't need this at this deep level since callers can now
implement this limiting manually since stats.iterations is
now returned. Also, this was interfering with the -i option
to cairo-perf anyway.
2006-11-08 06:07:01 -08:00
Carl Worth
6d5df0e3e2 cairo-perf-diff-files: Add support for diffing "raw" files from "cairo-perf -r" 2006-11-08 06:07:01 -08:00
Carl Worth
d1e1192090 cairo-perf: Print ticks_per_ms value in raw mode so raw analysis tools can report times 2006-11-08 06:07:01 -08:00
Carl Worth
5393989272 perf: Move statistics code into new cairo-stats.h for sharing 2006-11-08 06:07:01 -08:00
Carl Worth
7673e3ac3f boilerplate: Add xrealloc function 2006-11-08 06:07:01 -08:00
Vladimir Vukicevic
1e4515c548 [win32] implement EXTEND_REPEAT in composite when possible
Optimizes EXTEND_REPEAT, especially when DDBs are in use through the
use of PatBlt or manually expanding out the repeated blits (up to a
limit).  Will still fall back to fallback code as necessary.
2006-11-07 13:15:28 -08:00
Vladimir Vukicevic
6db219c3a1 [win32] clean up win32_surface_composite
Make sure that all operations are correct (the operations chosen
are listed in cairo-win32-surface.c); in particular, deal with the extra
byte present in FORMAT_RGB24 surfaces correctly.

Also adds support for calling StretchDIBits to draw RGB24
cairo_image_surfaces directly.
2006-11-07 13:12:09 -08:00
Vladimir Vukicevic
3e002a474b [win32] Update pixman MMX code to work with MSVC
Patch from Tor Lillqvist.
2006-11-07 13:12:07 -08:00
Behdad Esfahbod
fc87d41481 [configure] Err if a suitable pkg-config is not found 2006-11-07 15:07:33 -05:00
Carl Worth
fc584e1fbb Rewrite _cairo_matrix_transform_bounding_box to actually accept a box not a rectangle
It turns out that all of the callers want a box anyway, so this
simplfies the code in addition to being more honest to the name.

(For those new to the convention, a "box" is an (x1,y2),(x2,y2)
pair while a "rectangle" is an (x,y),(width,height) pair.)
2006-11-07 01:42:21 -08:00
Carl Worth
777eaf326a test/Makefile.am: Fix typo in EXTRA_DIST that was breaking distcheck 2006-11-07 01:33:40 -08:00
Carl Worth
0564b5074c cairo-perf: Add command line options for test cases to run, listing tests, and new raw mode. 2006-11-07 01:29:38 -08:00
Carl Worth
49b72f004d Add zrusin-another test cases (tessellate and fill).
This new test case is the 0th polygon polygon from Zack Rusin's
recent cairorender program as made avaialable here:

	http://ktown.kde.org/~zrusin/examples/cairorender.tar.bz2

This polygon contains about 1000 coordinates and looks like a
hand-drawn version of the word another.
2006-11-06 23:56:19 -08:00
Carl Worth
52eb7134bd cairo-perf-diff: Use two-part hash to avoid stale data when perf suite changes.
The perf tree's sha1 is now in the cache file name, so that
if the performance suite itself ever changes then new data
will be generated rather than using stale stuff from the cache.

Also, we now use the src tree's sha1 rather than the commit's
so that commits that don't change the src directory are also
treated as identical, (which they really should be as far as
performance of the library itself is concerned).
2006-11-06 09:39:02 -08:00
Carl Worth
e760d0927e Don't rely on NQUARTZ or OS2 surface types unless they exist.
This allows the cairo-perf stuff to build on older checkouts,
(such as 1.2.4), so that we can usefully do things like:

	cairo-perf-diff 1.2.4 HEAD
2006-11-06 09:39:02 -08:00
Dan Amelang
4cd50965a1 Change _cairo_fixed_from_double to use the "magic number" technique
See long thread here:
http://lists.freedesktop.org/archives/cairo/2006-October/008285.html

This patch provides a 3x performance improvement (on x86) for the
conversion of floating-point to fixed-point values as measured by
the recent pattern_create_radial performance test:

image-rgba      pattern_create_radial-16     8.98 3.36% ->   2.97 1.03%:  3.38x speedup
██▍
image-rgb       pattern_create_radial-16     8.94 3.21% ->   2.97 0.18%:  3.36x speedup
██▍
 xlib-rgb       pattern_create_radial-16     9.55 3.17% ->   3.64 0.51%:  2.93x speedup
█▉
 xlib-rgba      pattern_create_radial-16     9.63 3.53% ->   3.69 0.66%:  2.91x speedup
█▉
2006-11-06 09:37:40 -08:00
Dan Amelang
5376e47425 Add autoconf macro AX_C_FLOAT_WORDS_BIGENDIAN
The symbol that this macro defines (FLOAT_WORDS_BIGENDIAN) can be used
to make double arithmetic tricks portable.
2006-11-06 09:35:10 -08:00
Carl Worth
941b517024 cairo-perf-diff: Build and run latest cairo-perf program rather than whatever was in the old checkout 2006-11-06 09:35:10 -08:00
Carl Worth
e2ede57fbb cairo-perf-diff: Fix to still function if run from the top-level directory containing .git 2006-11-06 09:35:10 -08:00
Jinghua Luo
8e74f9f945 glitz: fix a memory leak in _cairo_glitz_surface_composite_trapezoids. 2006-11-06 12:21:25 +08:00
Behdad Esfahbod
e759959fd6 [Makefile.am] Pass tag message to git-tag in release-publish
(cherry picked from 7cac87c804 commit)
2006-11-02 21:17:12 -05:00
Behdad Esfahbod
91ffb36faa [Makefile.am] Minor fixes in release-publish output
(cherry picked from 953332d128 commit)
2006-11-02 21:17:12 -05:00
Carl Worth
16bc72feaf Increment CAIRO_VERSION to 1.3.1 now that a 1.2.6 release exists 2006-11-02 17:16:52 -08:00
Carl Worth
5500c59b9b Remove typo (mean vs median)
This didn't end up making a difference in practice since the
median is assigned again later on.
2006-11-02 12:27:17 -08:00
Carl Worth
b717e98777 cairo-perf: Change outlier elimination and report minimum times.
Instead of just discarding the worst 15% of the results, we now
do IQR-based detection and elimination of outliers. Also, instead
of reporting mean times we now report minimum and median times.
We still do compute the mean and standard deviation for the
detection of when results seem stable for early bailout. And we
do still report the standard deviation.

A statistician might complain that it looks funny to report the
median and the standard deviation together, (instead of median
and average absolute deviation from the median, say), but I liked
the standard deviation since it is always larger, so it might
ensure better separatation if we use it to determine when two
sets of results are sufficiently different to be interesting.
2006-11-02 12:21:26 -08:00
Dan Amelang
d2d0d11bde Add new perf test "pattern_create_radial"
This test is really just for hammering the double to fixed-point conversion
(in _cairo_fixed_from_double) that happens as doubles from API calls gets
translated into internal cairo fixed-point numbers.
2006-11-02 10:38:00 -08:00
Carl Worth
a618fd2cf9 cairo-perf-diff: Simplify git usage and just run cairo-perf that gets built with cairo revision
Many thanks to Josh Triplett for help with theses fixes:

1. Simplify the usage of git to eliminate the fragile and nasty
   stuff we were doing previously, (such as manually symlinking
   things under .git rather than just using git-clone -s).

2. Don't try running latest cairo-perf with LD_LIBRARY_PATH
   pointing to built cairo version. Apparently stupid libtool
   and its use of rpath is foiling us here. Instead just run
   whatever cairo-perf gets built as part of the source that
   gets checked out.

This second point means that cairo-perf-diff won't yet be useful
for comparing the performance of old cairo revisions that pre-date
cairo-perf. I've since been reasing and we might be able to use
--disable-rpath to the configure script to get what we want.
2006-11-02 04:45:27 -08:00
Jamey Sharp
504ea250f7 XCB/perf: implement boilerplate_xcb_synchronize for fair performance tests.
It sure was nice when some tests showed XCB to be 1300 times faster
than Xlib though...
2006-10-29 13:50:04 -08:00
Behdad Esfahbod
bc983700c4 [autogen.sh] Make sed script portable 2006-10-29 14:50:09 -05:00