[Pixman] [PATCH 2/2] Delete simple repeat code

Soeren Sandmann sandmann at daimi.au.dk
Thu Dec 16 05:58:22 PST 2010

Siarhei Siamashka <siarhei.siamashka at gmail.com> writes:

> > As it turns out, non-scaled images having NORMAL repeat (tiled pictures)
> > are actually used occasionally (typically with SRC operator). And removing
> > simple repeat code caused ~4x performance regression in these cases. Looks
> > like a new fast path is needed to solve the problem.
> Just an update to this. I tried to check whether this is easily solvable, but
> looks like there are a handful of missing fast paths for NORMAL repeat (they
> primarily show up when browsing various pages). Just doing it in a simple and
> straightforward way by adding all of them as new fast path functions may
> cause more redundancy in the pixman source code. Modifying the existing
> scaled fast paths to accept non-scaled cases also works, but it does not
> provide the best performance.

An idea might be to move the lookup_fast_path() into pixman-utils.c,
and then write a new fast path that would call this function to look
up another fast path and call it through the simple repeat code.

This would require the full set of flags to be passed down to the fast
paths, but we need that for the performance reporting anyway.

Just a suggestion, I don't know whether it would work in practice.

(An interesting possibility from this would be to use the regular
blitters as the "combiners" in the general code. That way, if you
have, say, a

        gradient IN a8 OVER 565

operation, then instead of converting both a8 and 565 to 8888, an
existing over_8888_8_565 function could just be called with pointers
directly into the mask and destination. Some changes to the general
code would obviously be required though).

> For now I just reverted this patch in my pixman tree to workaround
> the problem and buy some more time to think about how it can be
> solved.

Does reverting the patch actually work? The standard flags currently
include SAMPLES_COVER_CLIP, and for a typical repeating blit, that
would not be set.


More information about the Pixman mailing list