[Pixman] pixman on iOS
cu
cairouser at yahoo.com
Fri Apr 24 08:16:26 PDT 2015
Ben Avison wrote:
>
> Unless someone has forked Pixman somewhere else, then no, there is no
> special support for AArch64. The existing ARMv6 and ARMv7 optimisations
> are all hand-coded assembly, so can only be built for the AArch32
> instruction set. If you run an ARMv8 in AArch32 state, then I would
> expect the ARMv6 and ARMv7 optimisations to still work - in AArch32
> state, ARMv8 is only incrementally different from ARMv7 - but I have a
> feeling that Apple only run their ARMv8 chips in AArch64 state (BICBW).
You are correct, Apple specifically runs these chips in 64 bit mode.
Pixman rendering without optimization is pretty slow even on those
processors.
>
> There is still code in Pixman, first added at 0.24, to determine which
> ARM features are available when building for iOS - it's just in
> pixman-arm.c now rather than pixman-cpu.c. However it makes no attempt to
> factor in the AArch32/AArch64 state before enabling the ARMv6 and ARMv7
> optimisations. You'd also need some magic in the build system so that it
> doesn't even attempt to assemble any of the AArch32 assembly source files
> in an AArch64 build.
0.24 is the version I am using, and it never built "natively" (i.e.
using configure script) for iOS. There was, as I recall, an issue with
iOS assembly being incompatible with gnu/Linux toolchain for which
pixman assembly code was written. Someone instead posted manually
created (I think through assembly/disassembly on a Linux box) file that
was manually added to the pixman build. At least that's what I still
have in 0.24. I tried current version and encountered the same issue -
essentially optimization assembly is not compatible with current Apple
compiler.
>
> If you're having trouble even building the ARM optimisations for AArch32,
> you might want to try building intermediate versions of Pixman until you
> can narrow down where it stopped working.
It sounds as though, unless something changed dramatically, iOS tools
are still not compatible with assembler used in pixman so they are
unlikely to work.
If anyone wants to take a look at it, I am glad to help build anything -
but my own knowledge of assembly code is pretty rudimentary.
More information about the Pixman
mailing list