[cairo] 1.6: a8-mask: Making non-aligned strides illegal

Behdad Esfahbod behdad at behdad.org
Sun Jan 27 21:51:13 PST 2008

On Mon, 2008-01-28 at 00:35 -0500, Carl Worth wrote:
> On Thu, 24 Jan 2008 12:43:35 -0800, Carl Worth wrote:
> > 	• Fix a8mask failure	cworth
> In talking with Keith, Eric, and Søren I've become convinced that
> instead of "supporting" rendering to/from an A8 mask with a
> non-multiple-of-4 stride value, we really do want to just document
> this as illegal.
> Forcing this kind of alignment will allow for many more optimization
> opportunities.
> The inkscape folks had run into this problem and I had said we'd have
> a fix in 1.6. Instead, I'd like to volunteer to help fix the inkscape
> code to allocate buffers with a properly aligned stride. If some kind
> inkscape developer were willing to help me with this soon, that would
> be great.
> In order to make it easier to know what a "legal" stride is, (and to
> allow us to require more stringent alignment constraints in the
> future), I'm proposing the following new API:
> 	int
> 	cairo_image_surface_stride_for_width (cairo_format_t    format,
> 	                                      int               width);

I marginally prefer cairo_format_stride_for_width() as a name.

> And also documenting cairo_image_surface_create_for_data that the
> stride value passed to it should always come from calling the function
> above.

Humm, not sure how limiting that would be.  Do you mean it should be the
stride_for_width() of the actual image width, or the stride for some
(any) width?   I mean, say I want to create a cairo surface for a
subsurface of a larger buffer.  The width passed to cairo may be way
smaller than the width used for stride computation.

Also while at this, how does this work for:

  - 64-bit machines?  Is the requirement still just 32?  Guess yes.

  - Machines that do not allow unaligned access.  Do we also require
that data be aligned properly?

> More details, (and more thorough documentation), in the patches below.
> I'll push unless there are complaints.
> -Carl


"Those who would give up Essential Liberty to purchase a little
 Temporary Safety, deserve neither Liberty nor Safety."
        -- Benjamin Franklin, 1759

More information about the cairo mailing list