[cairo] Problems porting to embedded ARM9 platform - only rectangles are visible

Luke Diamand luke at diamand.org
Thu Dec 21 00:03:28 PST 2006

Daniel Amelang wrote:

> That's pretty bizarre. We already have cairo 1.3.8 running properly on
> the 770, which has pretty much the same hardware specs. I'll fire mine
> up later to see if we missed a "make test" back there.

I thought it was bizarre too!

> Can you tell us more about your system? Hardware and software? What
> are the major differences when compared to the 770 and Maemo?

The most obvious difference is that we are using a proprietary OS.

In my test code though, cairo only uses a handful of external calls -
malloc, qsort, memset,  and so-on. I am confident these behave in a
standard fashion.

The floating point code is perhaps different. On the 770 I guess the
Linux ARM floating point code is used. I currently use the gcc 3.4.6
distributed assembler routines which seem to behave slightly
differently. For example, converting a -ve double to an unsigned returns
0 rather than the bitpattern of the corresponding -ve integer.

However, I have also tried floating point code derived from softfloat
(so same derivation as ARM/Linux) and this has the same problem [1].

The code is all being executed in ARM mode, rather than thumb. I'd hope
that wouldn't make any difference.

I've simply taken the config.h generated by configuring for an ARM. But
it's possible that there is somewhere some #ifdef code that looks at
defines generated by the compiler.

After that, the hardware is just a standard ARM920T. It has some
hardware 2d acceleration, but that's not being used right now.


[1] I wonder if anyone has compared the speed of the softfloat code in
Linux (arch/arm/lib/nwfpe) with the assembler in gcc. I would have
thought the assembler would go faster, since the nwfpe doesn't seem to
use the hardware multiply. But I haven't looked at the Maemo stuff at
all to know.

More information about the cairo mailing list