[Pixman] Pixman on iOS

Siarhei Siamashka siarhei.siamashka at gmail.com
Wed Aug 3 08:48:16 PDT 2011

On Mon, Jul 25, 2011 at 5:02 AM, cu <cairouser at yahoo.com> wrote:
> It's been a while - but I am finally at a point where this is going to
> become project of the day.
> Are there any recent changes to be aware of, in particular:
> - A known good version of binutils objdump?
> - Anything new wrt. erroneous decoding of instructions or any other
> caveats that make using most recent pixman impossible?

This is something to be investigated by those who want to get pixman
ARM NEON optimizations working on iOS. I can answer some questions
about the code and provide some minor assistance, but the iOS porting
task needs to be driven by somebody else. Sorry.

> My plan is to go through the pre-processing, get a working .S assembly
> file and, provided it actually works for iOS, return it to the "public"
> (i.e it could be checked into the source with appropriate disclaimers,
> as you have suggested)

Adding such automatically generated file to pixman repository is not
maintainable because any changes to the ARM NEON assembly files would
make it immediately outdated.

Assuming that pixman ARM assembly sources keep using gnu assembler and
no updates to iOS toolchain are coming to fix gnu assembler
compatibility issue, there are two solutions possible:
a) use some gas compatible macro preprocessor which supports all the
features needed by pixman, https://github.com/yuvi/gas-preprocessor
may be possibly improved to become one (it got libjpeg-turbo support
recently, but this is not enough for pixman)
b) use the original preprocessor from gnu assembler itself and extract
its results via some hacks

The second option is technically easier for pixman, but it is also
more messy. For it to work, we need:
1. A reasonably bug free version of binutils which can do a successful
"as -> objdump -> simple script -> as" roundtrip. All the binutils
bugs should be reported to binutils bug tracker:
2. Some script for pixman which can automatically download a suitable
version of binutils, compile it and do all the steps needed to get the
resulting iOS assembler compatible source, eliminating any possible
human error in this process.

The "as -> objdump" step is not quite nice, so it might be a good idea
to try investigating whether it is possible to get the intermediate
output of the preprocessor from gnu assembler instead of the object
file. If such feature exists, then we should use it. If not, then a
feature request (preferably with a patch) is better to be submitted to
binutils maintainers.

Best regards,
Siarhei Siamashka

More information about the Pixman mailing list