[cairo] Using cairo with image surface backend results hangs system

Chris Wilson chris at chris-wilson.co.uk
Tue Nov 13 01:57:57 PST 2012

On Mon, 12 Nov 2012 14:31:26 -0700, "Carl D. Blake" <carl at boeckeler.com> wrote:
> I'm trying to use cairo with a DM8168 based system.  I want to be able
> to use it with the framebuffer so I've set it up to use the image
> surface backend.  I've mmaped the framebuffer to a memory location and
> passed that as the data pointer to cairo_image_surface_create_for_data.
> It appears to work for a while, but it always hangs the system at some
> point when any drawing is being done (cairo_show_text or cairo_stroke).
> I realize that cairo is drawing directly to the framebuffer, but I
> didn't think this would be a problem.  Am I doing something wrong here?

It should work, Cairo should not generate out-of-bounds write or reads.
So I would suggest something is going wrong at the hardware/driver level
if the machine stops responding.

However, I can not recommend that you use an UC or WC mapping for a
Cairo surface, except for the final blit. Many of the operators that
Cairo performs involve a readback from memory, which from a scanout will
be very slow and may give the appearance of the machine freezing. (The
usual solution is to use a shadow framebuffer for the composition with a
blit (CAIRO_OPERATOR_SOURCE) onto the scanout for display.)

Chris Wilson, Intel Open Source Technology Centre

More information about the cairo mailing list