[cairo] Pixman refactoring, ARM and Altivec implementations needed

Jonathan Morton jonathan.morton at movial.com
Thu May 28 02:29:01 PDT 2009

> I have merged this branch to master now. A "make perf" in cairo's
> performance test suite doesn't report any real differences in
> performance.
> With this change, the general C implementations lives in
> pixman-general.c and is fairly readable, but there are some remaining
> traces of architecture specific code. Fixing this should be
> straightforward:
>         - A pixman_implementation_create_{simd,neon,vmx} function
>           needs to be written, similar to the one for sse2.
>         - The pixman_choose_implementation() code in pixman-cpu.c
>           should be updated to call this.
>         - For arm-simd and arm-neon, the implementation should get a
>           'composite' virtual function, which calls
>           pixman_run_fast_path on the fast_path array, and falls back
>           if that returns FALSE.

Sigh.  I had to edit quite a lot of crap to make things simply work
again on ARM, mostly updating the prototype of every single compositing
blitter in the ARM-SIMD and NEON implementations.

The resulting patch won't apply cleanly against master, because of all
the extra blitters I'm staging, for which I also had to edit the
prototypes.  If it did apply cleanly, I'd attach it here.

That's without actually making use of the new architecture, just
minimally fixing the compile breakage.

I plan to send these blitters upstream very soon, but this kind of
lossage is *exactly* what I was hoping to avoid.  :-(

I know qemu doesn't really support emulating ARMv7 yet, but could you at
least try using a cross-compiler on it to make sure it builds cleanly?
Then I'd only have to edit my own stuff, and I'd have a convenient
template to work against.  Scratchbox is probably the best way of
getting one, unless you're on Gentoo which has a very neat
cross-compiler builder.

From: Jonathan Morton
      jonathan.morton at movial.com

More information about the cairo mailing list