Commit graph

3228 commits

Author SHA1 Message Date
Carl Worth
aa883123d2 Optimize filling of a path that is a single device-axis-aligned rectangle.
It turns out that this case is extremely common and worth avoiding
the overhead of the path iteration and tessellation code.

The optimization here works only for device-axis-aligned rectangles
It should be possible to generalize this to catch more cases, (such
as any convex quadrilateral with 4 or fewer points).

This fix results in a 1.4-1.8x speedup for the rectangles perf case:

image-rgb  rectangles-512  7.80 1.22% -> 4.35 1.62%: 1.79x speedup
▊
image-rgba rectangles-512  7.71 4.77% -> 4.37 0.30%: 1.77x speedup
▊
 xlib-rgba rectangles-512  8.78 5.02% -> 5.58 5.54%: 1.57x speedup
▋
 xlib-rgb  rectangles-512 11.87 2.71% -> 8.75 0.08%: 1.36x speedup
▍

Which conveniently overcomes the ~ 1.3x slowdown we had been seeing
for this case since 1.2. Now, compared to 1.2.6 we see only a speedup:

image-rgba rectangles-512  6.19 0.29% -> 4.37 0.30%: 1.42x speedup
▎
image-rgb  rectangles-512  6.12 1.68% -> 4.35 1.62%: 1.41x speedup
▎
 xlib-rgba rectangles-512  7.48 1.07% -> 5.58 5.54%: 1.34x speedup
▏
 xlib-rgb  rectangles-512 10.35 1.03% -> 8.75 0.08%: 1.18x speedup
▏
2007-03-05 21:01:05 -08:00
Brian Ewins
e15bb8efe6 [quartz] remove unnecessary flushes
Removing calls to CGContextFlush; these were slowing down the
mac and on other platforms it is up to the client to flush
the surface.
2007-03-06 00:40:56 +00:00
Behdad Esfahbod
393908c34d [test] Modify extend-reflect to need a smaller reference image 2007-03-05 19:23:10 -05:00
Behdad Esfahbod
4716ed760c [test] Remove some ref images from random-intersections
Each one is larger than 100kb, so paint background black to reuse
same ref image for rgb24 and argb32 cases.  Also remove Quartz ref
images for now.
2007-03-05 19:23:10 -05:00
Behdad Esfahbod
feba319413 [test] Remove unused variable 2007-03-05 19:23:10 -05:00
Emmanuel Pacaud
e1a598211b Use the offset attribute to improve cairo-svg handling of EXTEND_REPEAT and EXTEND_REFLECT
With this change, the cairo-svg output is perfectly fine with
CAIRO_EXTEND_REPEAT, but is still very slightly wrong with
CAIRO_EXTEND_REFLECT, (though *much* better than it was before
this fix).
2007-03-05 16:04:24 -08:00
Emmanuel Pacaud
47f2bf4e28 Remove broken special-casing of radial gradient fx,fy under CAIRO_EXTEND_NONE
Carl can't explain why he added this special-case, and removing it
eliminates one failure case from the radial-gradient test matrix.
2007-03-05 16:04:24 -08:00
Brian Ewins
a724f816e1 [quartz,atsui] separate the quartz surface and atsui font backend
Make it possible to use the --enable-quartz and --enable-atsui
independently. Quartz on its own will use the ft font backend.
2007-03-05 23:19:24 +00:00
Behdad Esfahbod
83fcce0e93 [quartz] Make utility functions static 2007-03-05 17:56:57 -05:00
Behdad Esfahbod
d25548d679 In cairo_append_path(), allow excess path_data elements 2007-03-05 17:11:39 -05:00
Behdad Esfahbod
3ab9ca54aa In cairo_text_path(), bail out if zero glyphs 2007-03-05 16:33:46 -05:00
Behdad Esfahbod
4f138e4af5 Uniform object handling in _reference(), _destroy(), and _get_reference_count()
All three now regard NULL and nil inputs the same.  This is new for
_get_reference_count().  It now returns 0 on NULL too, like it does on
nil objects.
2007-03-05 16:28:31 -05:00
Behdad Esfahbod
cc12c5acc4 Make cairo_text_path() set current point correctly
This fixes the bitmap-text test that I just made reveal a bug.
2007-03-05 16:19:28 -05:00
Behdad Esfahbod
b63f5ae58f [test] In the bitmap-font test, break cairo_text_path() call into two
such that it checks current-point handling after that call.  It fails now,
because cairo_text_path does not set current-point explicitly.
2007-03-05 16:15:09 -05:00
Behdad Esfahbod
a487d09421 Rename all mutex variables to start with an underscore
since they are not static in some of the implementations (win32, ...)
2007-03-05 15:59:43 -05:00
Behdad Esfahbod
c8b84a4735 [beos] Update mutex initializers
This should be the last one.  We are going to move to a central
mutex initialization scheme right after 1.4.0 is out.
2007-03-05 15:46:19 -05:00
Behdad Esfahbod
b8e2888fbe [OS2] Add mutex initializer for cairo_font_face_mutex 2007-03-05 15:45:45 -05:00
Behdad Esfahbod
403b4b7c16 [OS2] Remove unused mutex cairo_toy_font_face_hash_table_mutex 2007-03-05 15:39:09 -05:00
Behdad Esfahbod
6358ec539d [WIN32] Make cairo_ft_unscaled_font_map_mutex initialization conditional of ft 2007-03-05 15:38:52 -05:00
Behdad Esfahbod
972f7d9fc8 [WIN32] Remove unused mutex cairo_toy_font_face_hash_table_mutex 2007-03-05 15:36:51 -05:00
Behdad Esfahbod
0cdb96544e [SVG] Cast -1 values to unsigned to indicate we really did mean to type them 2007-03-05 15:10:35 -05:00
Behdad Esfahbod
bbc3416144 [ROADMAP] Remove 1.3.14 items, add 1.4.2 ones 2007-03-05 14:54:02 -05:00
Dave Yeo
d6ac9b4770 [test] Fix build on Win32 2007-03-05 13:36:32 -05:00
Mathias Hasselmann
ffa86b17ab [test/pdiff] Fix build problem with certain flavors of make 2007-03-04 16:39:00 -05:00
Hans Breuer
325e752390 Fix mutex initialization for win32 (missing cairo_font_face_mutex)
We've currently got a problem where it's easy to add a mutex
for a POSIX system and easy to forget to add its intialization
for other systems. Behdad has cooked up a plan for fixing this
properly:

	http://lists.freedesktop.org/archives/cairo/2007-February/009679.html

In the meantime, we'll just kkeping breaking things, and patches
like this will be needed to fix up our mistakes.

This fix closes the following bug report:

	cairo_font_face_mutex missing from cairo-win32-surface.c
	https://bugs.freedesktop.org/show_bug.cgi?id=10175
2007-03-03 22:50:16 -08:00
Brian Ewins
5f2b5f1f92 [configure.in] --enable-quartz should require atsui and no xlib
Recent changes have made quartz and atsui interdependent. It is also
no longer possible to build quartz with xlib enabled due to a redefinition
of the 'Picture' symbol. This change makes '--enable-atsui' unnecessary
and refuses to switch on quartz when it cannot be built because xlib
is enabled.
2007-03-04 03:01:22 +00:00
Behdad Esfahbod
1720d0b950 [Makefile.am] --enable-test-surfaces in distcheck 2007-03-03 15:42:09 -05:00
Behdad Esfahbod
79acd268d9 [Makefile.am] Remove releasing instructions that are in RELEASING already 2007-03-03 15:41:32 -05:00
Behdad Esfahbod
f9f71457a5 [RELEASING] Update announcement mail instructions 2007-03-03 15:37:45 -05:00
Behdad Esfahbod
454c6a62a9 [RELEASING] Note that two versions should be added to bugzilla 2007-03-03 15:35:25 -05:00
Behdad Esfahbod
57e1b6fa98 [RELEASING] Reorder pushing tag and commits
We should push the tag only after pushing the actually release commit.
2007-03-03 15:34:19 -05:00
Behdad Esfahbod
052acc95e9 [RELEASING] Fix git-tag invocation 2007-03-03 15:32:42 -05:00
Behdad Esfahbod
9f0a1648b7 [configure.in] Increase version to 1.3.17 post-release 2007-03-03 00:22:53 -05:00
Behdad Esfahbod
b3e1fd8c1c [configure.in] Increase version to 1.3.16 in preparation for release 2007-03-03 00:07:34 -05:00
Behdad Esfahbod
c6541b9ac2 [RELEASING] Add note about ChangeLog sanity 2007-03-03 00:07:14 -05:00
Behdad Esfahbod
9aecd7c815 [test] Include romedalen.png in dist, oops 2007-03-03 00:05:40 -05:00
Behdad Esfahbod
2f497c25f9 [Makefile.am] Check for ChangeLog sanity in release-publish 2007-03-02 23:59:55 -05:00
Behdad Esfahbod
eb8214c960 [ChangeLog.mk] Adapt to latest git-describe output format 2007-03-02 23:49:27 -05:00
Behdad Esfahbod
8a69a32795 [test] Update list of refrerence images 2007-03-02 23:29:54 -05:00
Behdad Esfahbod
55d4806127 [NEWS] Add note about documentation improvements 2007-03-02 22:52:38 -05:00
Behdad Esfahbod
77b27fd06b [doc] Update templates 2007-03-02 22:45:50 -05:00
Behdad Esfahbod
1082fed692 [doc] Docuemnt all symbols but cairo_filter_t and cairo_operator_t
Lets see if this is enough to push Carl Worth document those two.
2007-03-02 22:42:17 -05:00
Behdad Esfahbod
e37b6ca3e2 Beautify cairo.h 2007-03-02 22:03:27 -05:00
Behdad Esfahbod
9be961eb0c [doc] Some documentation love 2007-03-02 22:01:15 -05:00
Behdad Esfahbod
8a6308e144 [doc] Update list of header files to ignore 2007-03-02 22:00:25 -05:00
Behdad Esfahbod
fed13e77e1 [NEWS] Fix typos 2007-03-02 16:49:58 -05:00
Vladimir Vukicevic
ab1887f4b0 [quartz] Bug 3939 - Fix Quartz backend endianness problem
Add kCGBitmapByteOrder32Host to CGImageCreate call in release_dest_image
of Quartz surface.
2007-03-02 13:46:31 -08:00
Carl Worth
2640aa7e99 Add notes for 1.3.16
Now, maybe we won't actually make a 1.3.16 snapshot, but these are all
the things that will be new in 1.4.0 compared to 1.3.14.
2007-03-02 13:23:06 -08:00
Behdad Esfahbod
a0bc2ada78 [test] Support passing extra valgrind flags
using EXTRA_VALGRIND_FLAGS make variable or CAIRO_EXTRA_VALGRIND_FLAGS
env variable.
2007-03-02 15:45:02 -05:00
Carl Worth
cd43c03d16 Fix leak of an output stream in cairo_type1_font_destroy 2007-03-02 12:30:53 -08:00