[cairo] Pixman refactoring, ARM and Altivec implementations needed

Soeren Sandmann sandmann at daimi.au.dk
Wed May 27 14:43:32 PDT 2009


Hi,

> Yeah, clarity was my biggest concern. I don't know how much a difference
> it makes.

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.

        - For Altivec, the combiner functions should get two extra
          arguments, both of which are unused:

                pixman_implementation_t *imp, pixman_op_t op,

        - The corresponding #ifdef'd code in pixman-general.c should
          go away.

        - The pixman-{arm-neon,arm-simd,vmx}.h header files can then
          be deleted.


Thanks,
Soren


More information about the cairo mailing list