Commit graph

109 commits

Author SHA1 Message Date
M Joonas Pihlaja
bb480d2358 [NEWS] Thank the AuroraUX team for facilitating Solaris testing. 2009-09-02 04:48:40 +01:00
Chris Wilson
f8bb3617c3 Eliminate self-intersecting strokes.
We refactor the surface fallbacks to convert full strokes and fills to the
intermediate polygon representation (as opposed to before where we
returned the trapezoidal representation). This allow greater flexibility
to choose how then to rasterize the polygon. Where possible we use the
local spans rasteriser for its increased performance, but still have the
option to use the tessellator instead (for example, with the current
Render protocol which does not yet have a polygon image).

In order to accommodate this, the spans interface is tweaked to accept
whole polygons instead of a path and the tessellator is tweaked for speed.

Performance Impact
==================

...
Still measuring, expecting some severe regressions.
...
2009-08-29 08:08:28 +01:00
Chris Wilson
786d1f962a [xlib] Use server-side gradients.
We can offload creation of gradients to server that support RENDER 0.10
and later. This greatly reduces the amount of traffic we need to send over
our display connection as the gradient patterns are much smaller than the
full image. Even if the server fallbacks to using pixman, performance
should be improved by the reduced transport overhead. Furthermore this is a
requisite to enable hardware accelerated gradients with the xlib backend.

Running cairo-perf-trace on tiny, Celeron/i915:

  before: firefox-20090601 211.585
   after: firefox-20090601 270.939

and on tiger, CoreDuo/nvidia:

  before: firefox-20090601 70.143
   after: firefox-20090601 87.326

where linear gradients are used extensively throughout the GTK+ theme.
Not quite the result I was expecting!

In particular, looking at tiny:

 xlib-rgba paint-with-alpha_linear-rgba_over-512   47.11 (47.16 0.05%) -> 123.42 (123.72 0.13%):  2.62x slowdown
█▋
 xlib-rgba paint-with-alpha_linear3-rgba_over-512   47.27 (47.32 0.04%) -> 123.78 (124.04 0.13%):  2.62x slowdown
█▋
 xlib-rgba paint-with-alpha_linear-rgb_over-512   47.19 (47.21 0.02%) -> 123.37 (123.70 0.13%):  2.61x slowdown
█▋
 xlib-rgba paint-with-alpha_linear3-rgb_over-512   47.30 (47.31 0.04%) -> 123.52 (123.62 0.09%):  2.61x slowdown
█▋
 xlib-rgba     paint_linear3-rgb_over-512   47.29 (47.32 0.05%) -> 118.95 (119.60 0.29%):  2.52x slowdown
█▌
 xlib-rgba     paint_linear-rgba_over-512   47.14 (47.17 0.06%) -> 116.76 (117.06 0.16%):  2.48x slowdown
█▌
 xlib-rgba    paint_linear3-rgba_over-512   47.32 (47.34 0.04%) -> 116.85 (116.98 0.05%):  2.47x slowdown
█▌
 xlib-rgba      paint_linear-rgb_over-512   47.15 (47.19 0.03%) -> 114.08 (114.55 0.20%):  2.42x slowdown
█▍
 xlib-rgba paint-with-alpha_radial-rgb_over-512  117.25 (119.43 1.21%) -> 194.36 (194.73 0.09%):  1.66x slowdown
▋
 xlib-rgba paint-with-alpha_radial-rgba_over-512  117.22 (117.26 0.02%) -> 193.81 (194.17 0.11%):  1.65x slowdown
▋
 xlib-rgba     paint_radial-rgba_over-512  117.23 (117.26 0.02%) -> 186.35 (186.41 0.03%):  1.59x slowdown
▋
 xlib-rgba      paint_radial-rgb_over-512  117.23 (117.27 0.02%) -> 184.14 (184.62 1.51%):  1.57x slowdown
▋

Before 1.10, we may choose to disable server-side gradients for the
current crop of Xorg servers, similar to the extended repeat modes.

[Updated by Chris Wilson. All bugs are his.]
2009-07-31 14:33:01 +01:00
Chris Wilson
bed2701e1c Remove clip handling from generic surface layer.
Handling clip as part of the surface state, as opposed to being part of
the operation state, is cumbersome and a hindrance to providing true proxy
surface support. For example, the clip must be copied from the surface
onto the fallback image, but this was forgotten causing undue hassle in
each backend. Another example is the contortion the meta surface
endures to ensure the clip is correctly recorded. By contrast passing the
clip along with the operation is quite simple and enables us to write
generic handlers for providing surface wrappers. (And in the future, we
should be able to write more esoteric wrappers, e.g. automatic 2x FSAA,
trivially.)

In brief, instead of the surface automatically applying the clip before
calling the backend, the backend can call into a generic helper to apply
clipping. For raster surfaces, clip regions are handled automatically as
part of the composite interface. For vector surfaces, a clip helper is
introduced to replay and callback into an intersect_clip_path() function
as necessary.

Whilst this is not primarily a performance related change (the change
should just move the computation of the clip from the moment it is applied
by the user to the moment it is required by the backend), it is important
to track any potential regression:

ppc:
Speedups
========
image-rgba         evolution-20090607-0    1026085.22 0.18% -> 672972.07 0.77%:  1.52x speedup
▌
image-rgba         evolution-20090618-0    680579.98 0.12% -> 573237.66  0.16%:  1.19x speedup
▎
image-rgba      swfdec-fill-rate-4xaa-0    460296.92 0.36% -> 407464.63  0.42%:  1.13x speedup
▏
image-rgba      swfdec-fill-rate-2xaa-0    128431.95 0.47% -> 115051.86  0.42%:  1.12x speedup
▏
Slowdowns
=========
image-rgba     firefox-periodic-table-0    56837.61 0.78% -> 66055.17    3.20%:  1.09x slowdown
▏
2009-07-23 15:32:14 +01:00
Chris Wilson
fed0006203 [NEWS] Add stub for OpenGL. 2009-07-22 07:49:05 +01:00
Chris Wilson
52fa8760ae Add OpenVG backend.
Based on the work by Øyvind Kolås and Pierre Tardy -- many thanks to
Pierre for pushing this backend for inclusion as well as testing and
reviewing my initial patch. And many more thanks to pippin for writing the
backend in the first place!

Hacked and chopped by myself into a suitable basis for a backend. Quite a
few issues remain open, but would seem to be ready for testing on suitable
hardware.
2009-07-17 11:50:02 +01:00
Chris Wilson
6003ab77e1 Export meta-surface
The meta-surface is a vital tool to record a trace of drawing commands
in-memory. As such it is used throughout cairo.

The value of such a surface is immediately obvious and should be
applicable for many applications. The first such case is by
cairo-test-trace which wants to record the entire graph of drawing commands
that affect a surface in the event of a failure.
2009-07-03 18:26:50 +01:00
Chris Wilson
4bc89e224f [NEWS] Add release notes from 1.8.8 2009-06-16 15:13:46 +01:00
Carl Worth
8ac8c5b428 NEWS: Fix date and name of 1.9.2 snapshot
It's a snapshot, not a release, and the broken REFERENCE_IMAGE list
derailed me from finishing yesterday.
2009-06-12 11:58:57 -07:00
Carl Worth
a4f023ef2e NEWS: Update date for snapshot planned for today. 2009-06-11 14:54:03 -07:00
Carl Worth
82139b4291 NEWS: Explain bovine polaroids a bit more.
It's a fun joke, but the COW snapshots feature is important enough
that we should actually tell users what it is.
2009-06-11 14:54:03 -07:00
Carl Worth
4d5f66d5b1 NEWS: Cleanup in preparation for 1.9.2 snapshot
Mostly just wrapping to a reasonable line length, and some minor
wording changes.
2009-06-11 14:54:03 -07:00
Chris Wilson
b40ce402ad [NEWS] Add more notes 2009-06-11 09:16:29 +01:00
Chris Wilson
17ce8584e7 [NEWS] Add API changes.
Scan the public headers for obvious additions.
2009-02-12 18:27:52 +00:00
Chris Wilson
8cec548854 [NEWS] Add notes for 1.8.6
Add the historical blurb for 1.8.6.
2008-12-14 16:42:59 +00:00
Carl Worth
456252a1c2 Merge branch '1.8'
Conflicts:

	NEWS
	cairo-version.h
2008-11-14 15:27:34 +01:00
Carl Worth
b9c1344ad8 NEWS: Add notes for cairo 1.8.4
Just a few bug fixes here.
2008-11-14 11:07:10 +01:00
Chris Wilson
ff0bd64e94 [NEWS] Add a few notes.
Help Carl with a speedy snapshot by writing a few notes about what has been
added so far to 1.9.
2008-11-06 01:22:39 +00:00
Carl Worth
30f2df1dec Fix typo in bug URL.
Thanks to AndrewR in IRC for pointing out the typo.
2008-10-30 08:40:35 -07:00
Carl Worth
cf97966c07 NEWS: Finish the entry for the 1.8.2 release.
Add some summarizing paragraphs and organize bug-fixes and optimizations
into separate sections.
2008-10-29 21:01:01 -07:00
Chris Wilson
b6741cffef [NEWS] Spot another couple of typos.
Proof-reading is difficult, even with the squiggly lines.
2008-10-30 01:15:45 +00:00
Chris Wilson
d20cc82779 [NEWS] Correct a couple of typos.
Whilst Carl's not looking, fix a couple of typos -- in particular the one
calling me a bug! ;-)
2008-10-30 01:06:08 +00:00
Carl Worth
0ceda81dfd NEWS: Add long list of bugs fixed for 1.8.2.
(Still need to add a paragraph or two summarizing the release.)
2008-10-29 17:38:36 -07:00
Carl Worth
42d2d1b6d3 Correct NEWS to say 'release' instead of 'snapshot' for 1.8.0
A copy-and-paste bug strikes again.
2008-10-28 12:48:03 -07:00
Chris Wilson
6aa1143d5a Update documentation to remove references to cairo_has_show_text_glyphs().
With the addition of cairo_show_text_glyphs() came a couple of functions
to query whether the target supported the extended attributes. However,
at Carl's request cairo_has_show_text_glyphs() was removed - but the
documentation was not updated to reflect that.
2008-10-13 23:49:17 +01:00
Carl Worth
e1560eceab NEWS: Add notes for the 1.8.0 release.
Heavily cribbed from 1.7.x snapshot NEWS of course.
2008-09-25 15:57:07 -07:00
Carl Worth
cf80c78f0c Correct NEWS mention to talk about fontconfig setting not Xsetting.
Thanks to Behdad for helping me get the terminology right.
2008-09-18 12:12:42 -07:00
Carl Worth
e00d794120 NEWS: Add notes for 1.7.6 snapshot.
Note 1.7 API changes: Remove lcd_filter, cairo_has_show_glyphs, and
add cairo_text_cluster_flags_t. Also mention a few major bug fixes,
Behdad's build-system rework, and Chris's customary robustness
improvements.
2008-09-18 11:55:28 -07:00
Behdad Esfahbod
012a12a67b [configure.in,NEWS] Release 1.7.4 2008-08-11 15:06:31 -04:00
Behdad Esfahbod
057a832f9e [configure.in,NEWS] Release 1.7.2 2008-08-11 11:51:18 -04:00
Adrian Johnson
c014e51dc9 NEWS: Win32 font backend has been fixed 2008-08-10 14:49:30 +09:30
Behdad Esfahbod
e9933ba28c [NEWS] Add some notes about recent happenings 2008-08-08 17:13:27 -04:00
Carl Worth
a96176e12f NEWS: Add notes for cairo 1.6.4 2008-04-11 14:32:37 -07:00
Carl Worth
0c32497c34 NEWS: Add notes for 1.6.2 release 2008-04-11 09:50:53 -07:00
Carl Worth
709805c26f NEWS: Add notes for 1.6.0 release 2008-04-10 17:33:51 -07:00
Carl Worth
8f123d035a NEWS: Add notes for 1.5.20 snapshot 2008-04-08 02:45:31 -07:00
Carl Worth
44cd51ada6 NEWS: Add notes for 1.5.18 snapshot 2008-04-06 03:10:07 -07:00
Carl Worth
eb6721f4cc NEWS: Add notes for the cairo 1.5.16 snapshot 2008-04-01 15:51:57 -07:00
Carl Worth
3bb0474ea7 NEWS: Add notes for 1.5.14 snapshot 2008-03-20 13:48:29 -07:00
Carl Worth
bf99e355d9 Clarify that 16-bit limit still exists in pixman 2008-02-28 15:45:11 -08:00
Carl Worth
81175110ab NEWS: Add notes for cairo 1.5.12 2008-02-28 14:36:47 -08:00
Carl Worth
8f0ec1174a Patch hole in fabric of time-space continuum 2008-02-21 08:17:33 -08:00
Carl Worth
ee62a5fad6 Mention that cairo_get_current_point is void again 2008-02-20 08:08:52 -08:00
Carl Worth
5aacc54c43 NEWS: Add notes for cairo 1.5.10 2008-02-20 08:02:45 -08:00
Carl Worth
7d2fda54f9 NEWS: Add notes for the 1.5.8 snapshot 2008-01-30 04:23:19 -08:00
Carl Worth
fe27f4b9a3 NEWS: Add notes for cairo 1.5.6 2008-01-16 09:48:54 -08:00
Carl Worth
946b8fedb5 Fix misspellings 2007-12-05 02:30:58 -08:00
Carl Worth
94a35c7b71 Fix version number typo 2007-12-05 02:28:20 -08:00
Carl Worth
11aaf992fb NEWS: Add notes for 1.5.4 2007-12-05 01:52:03 -08:00
Carl Worth
f09f02a6e8 Add notes for 1.5.2 snapshot 2007-10-30 21:57:47 -07:00