[cairo] ANN: "Caskbench" performance benchmark
Bryce Harrington
bryce at osg.samsung.com
Fri Sep 26 13:01:25 PDT 2014
On Fri, Sep 26, 2014 at 07:33:03AM +0100, Chris Wilson wrote:
> On Thu, Sep 25, 2014 at 05:54:40PM -0700, Bryce Harrington wrote:
> > At Samsung one of the projects I've been working on is a benchmark test
> > for comparing the performance of Cairo and Skia with EGL + MSAA, called
> > Caskbench. I presented about this testing at LinuxConf US in Chicago
> > last month.
> >
> > This is no where near as comprehensive or meticulous as Cairo's
> > performance test suite, but it runs quickly, and includes Skia ports of
> > each of the tests. The idea here being to do fair apples-to-apples
> > comparisons of the two codebases, or for comparing performance of
> > Cairo's image backend with the egl backend.
>
> In the stock configuration you don't have a fair comparison as they have
> different rendering intent and substantially different levels of
> quality. At the same resolution, cairo's scanline converter is
> marginally faster, but skia benefits from a better spline walker and
> inline rasterisation. Not to mention that skia has a hairline stroker
> and imprecise gradient caches but has a hard time rasterising rectilinear
> polygons (or at least did a couple of years ago).
Right, there's a LOT of assumptional differences between the two. Even
simple stuff like whether to alpha blend by default and pixel
alignment. I try to correct for some of this, when there's
user-accessible settings. But where one renderer has better internals I
figure they deserve credit for that... and I'd wonder if that's
something we could look at doing in Cairo?
> > The codebase has been open sourced and is available on github:
> >
> > https://github.com/Samsung/caskbench
>
> How do you control the PRNG? And as you are using rand() that often, you
> probably want to consider an alternate LCG rng.
Yes, this is high on the todo list. In fact I've found some hardware
where the prng can't be re-seeded, so I need to replace all that
anyway.
Anyway, ignoring skia and looking just at Cairo, here's what I'm getting
for comparing Cairo's image backend to its EGL backend. This is on a
Sandybridge box with ubuntu 14.04 (which uses mesa 3.0):
image egl
--------------------------------------------
cairo-animation 288 290 0%
cairo-bubbles 83 495 496%
cairo-circle 112 274 144%
cairo-clip 556 2953 431%
cairo-cubic 151 280 85%
cairo-curves 18 29 61%
cairo-fill 182 435 139%
cairo-hline 1055 1156 9%
cairo-image 256 3870 1411%
cairo-image_rotate 69 2947 4171%
cairo-image_scale 140 3214 2195%
cairo-linear_gradient 22 1184 5281%
cairo-line 497 667 34%
cairo-mask 442 888 100%
cairo-multi_line 369 927 151%
cairo-multi_shape 178 349 96%
cairo-paint 62 1357 2088%
cairo-quadratic 188 313 66%
cairo-radial_gradient 11 1167 10509%
cairo-rect 50 629 1158%
cairo-roundrect 187 261 39%
cairo-shadow 4 2 -50% # (Feature unimplemented)
cairo-star 565 223 -60%
cairo-text 330 841 154%
cairo-text_glyphs 510 1116 118%
cairo-transform 16 22 37%
cairo-vline 1086 1172 7%
The numbers are fps so bigger is better.
Apart from the stars test, cairo-gl did better all-around than cairo
image. And for gradients and image manipulation it's profoundly faster.
Now, I haven't tested against GLX but this makes me wonder if this would
translate into significantly better performance for, say, Inkscape? If
so, should we maybe be advocating cairo-gl/cairo-egl more heavily here?
Bryce
More information about the cairo
mailing list