cairo 1.9.6 snapshot available
From: Carl Worth <>
Date: Fri, 19 Feb 2010 17:56:14 -0800
Subject: cairo snapshot 1.9.6 now available

A new cairo snapshot 1.9.6 is now available from:

    which can be verified with:
        0e204b2c4f062dc65c1b854d4b1ccf360f3cb255  cairo-1.9.6.tar.gz
        (signed by Carl Worth)

  Additionally, a git clone of the source tree:

        git clone git://

    will include a signed 1.9.6 tag which points to a commit named:

    which can be verified with:
        git verify-tag 1.9.6

    and can be checked out with a command such as:
        git checkout -b build 1.9.6

We're happy to share this snapshot of recent cairo development. We
apologize that it has been so long since the last snapshot, (snapshot
1.9.4 was 4 months ago), but we are optimistic that we can finish up
cairo 1.10 in the next month or so. Our goal going forward is to have
major cairo releases on a time-based schedule with releases at the end
of every March and September (or so).

This 1.9.6 snapshot is really exactly that---it's a snapshot of current
development. There hasn't been as much testing through the test suite as
we would normally do for a cairo release. But that's what we'll be doing
From now until cairo 1.10. We also hope that many of you will also test
this snapshot with your cairo applications and report back to us.

One of the most exciting things in the 1.9.6 snapshot is the cairo-gl
backend with dramatic improvements compared to cairo-gl in any previous
snapshots, (it's now using shaders to accelerate many operations). See
Eric's post here for some performance numbers:

and please join me in thanking Eric and T. Zachary Laine (a welcome new
contributor!) for this work.

As usual, Chris Wilson has put in a remarkable amount of effort as
reflected in this snapshot. I give him my heartfelt thanks for keeping
cairo so vibrant while I have not been able to give it much personal
attention lately.

This snapshot also includes the cairo-drm backend worked on by Chris
Wilson and Kristian Høgsber. This is another interesting experimental
backend which currently outperforms cairo-gl in several benchmarks, (and
sets the bar for cairo-gl to reach). This direct-rendering backend only
support Intel graphics chipsets in the i915 and i965 families.

I've written a quick summary of other improvements in 1.9.6 below. I've
certainly missed many interesting things that have been done. If you are
aware of interesting work that I neglected, please let me know so that
we can get that work mentioned for the 1.10 release notes. (Best would
be a patch to the NEWS file adding the information).

I hope that everyone will have lots of fun with cairo!


API additions
    Add cairo_device_t

    The device is a generic method for accessing the underlying interface
    with the native graphics subsystem, typically the X connection or
    perhaps the GL context. By exposing a cairo_device_t on a surface and
    its various methods we enable finer control over interoperability with
    external interactions of the device by applications. The use case in
    mind is, for example, a multi-threaded gstreamer which needs to serialise
    its own direct access to the device along with Cairo's across many

    Secondly, the cairo_device_t is a unifying API for the mismash of
    backend specific methods for controlling creation of surfaces with
    explicit devices and a convenient hook for debugging and introspection.

    The principal components of the API are the memory management of:

      cairo_device_finish() and

    along with a pair of routines for serialising interaction:

      cairo_device_acquire() and

    and a method to flush any outstanding accesses:


    The device for a particular surface may be retrieved using:


    The device returned is owned by the surface.

API changes (to API new in the cairo 1.9.x series)

    These are the replacement names for the functions previously named
    cairo_meta_surface_create and cairo_meta_surface_ink_extents.


    This interface is now changed such that the MIME data will be
    detached if the surface is modified at all. This guarantees that
    the MIME data will not become out of synch due to surface
    modifications, and also means that for the MIME data to be useful,
    it must be set after all modifications to the surface are

API removal (of experiment API)
  The cairo-glitz backend is removed entirely, (in favor of the new
  cairo-gl backend). See below for more on cairo-gl.

Generic fixes

  Many improvements for drawing of dashed strokes

        Fix incorrect handling of negative offset
        Faster computation of first dash (avoids near-infinite looping)
        Approximate extremely fine dash patterns with appropriate alpha value

  Optimize spans-based renderers for repeated rows, (such as in a rounded rectangle)

Backend-specific improvements

  This is a new, direct-rendering backend that supports Intel graphics
  chipsets in the i915 and i965 families. It's still experimental and
  will likely remain that way for a while. It's already got extremely
  good performance on the hardware it supports, so if nothing else
  provides a working proof and performance target for the cairo-gl
  work for Intel graphics.


  Start using GLSL to accelerate many operations. Many thanks to Eric
  Anholt and T. Zachary Laine for this work. For the first time, we
  have what looks like what will be a very compelling OpenGL-based
  backend for cairo (in terms of both quality and performance).

  See this writeup from Eric for more details on recent progress of
  cairo-gl (which he presented at FOSDEM 2010):


  The image backend is made dramatically faster (3-5 times faster for
  benchmarks consisting primarily of glyph rendering).

cairo-quartz fixes:

  Many fixes from Robert O'Callahan and Andrea Canciani including:

        Fixed gradient pattern painting
        Improved A8 image handling
        Fixes for "unbounded" and other compositing operators

cairo-pdf fixes:

  Improvements to embedding of JPEG and JPEG2000 data.

cairo-ps fixes:

  Fix printing of rotated user fonts.