[cairo] Performance of the refactored Pixman

Jonathan Morton jonathan.morton at movial.com
Wed Jun 17 04:35:22 PDT 2009


> > If you can demonstrate a performance benefit, I'd probably take a
> > patch that replaced the parameter block with
> > 
> >         const pixman_composite_args_t *args
> > 
> > or something like that.
> 
> Okay, I'll see what we're able to do.

Initial tests show that this approach regains about half the lost
performance between 0.13.2 and the current head, for most operations.
Functions in the composite chain now look like this:

void
fbCompositeOver_8888x0565neon (
	pixman_implementation_t   *imp,
	pixman_composite_params_t *params)
{

This is a step in the right direction.  However, it doesn't get all the
way back up to the previous performance level, so clearly there is still
some optimisation to be found.  (I wonder how much of a difference
const-ifying would make, for example.  Now is the time to do such
experiments.)

The patch to achieve this will be pretty damn huge, mind - but I think
it removes more lines of code than it adds, overall.  The API entry
points remain unchanged (hey, it still has to interface with Xorg), but
the new structure is filled immediately and used thereafter.

I'm also seeing a very large regression on glyph rendering, though.  It
could be just an oversight on my part (it looks like it's using the
generic code path for some reason), so I'll debug it.  In any case I'll
have to extend the coverage to the MMX, SSE and Altivec backends - so
far I've only done the ARM ones.

-- 
------
From: Jonathan Morton
      jonathan.morton at movial.com




More information about the cairo mailing list