[cairo] is self-copy supposed to work?
Soeren Sandmann
sandmann at daimi.au.dk
Wed May 5 05:36:58 PDT 2010
Siarhei Siamashka <siarhei.siamashka at gmail.com> writes:
> On Tuesday 04 May 2010, Benjamin Otte wrote:
> > On Tue, 2010-05-04 at 17:45 +1200, Matt Woodrow wrote:
> > > Cairo doesn't actually use pixmin_blt anywhere sadly, everything goes
> > > through pixman_composite_32.
> >
> > This is by design. Or said differently: I spent a bunch of time
> > replacing calls to pixman_blit() with calls to
> > pixman_image_fill_boxes(). And I did that because it makes the code more
> > flexible (you can plug in more formats easily) and avoids code
> > duplication (the code figuring out what to blit doesn't need to be
> > duplicated in both pixman and cairo).
>
> In the end, 'pixman_image_fill_boxes' still contains a call to 'pixman_fill'
> (for performance reasons?). So 'pixman_fill' is not retired completely.
> And regarding flexibility, 'pixman_fill' still does not supports formats with
> less than one byte per pixel. This looks like a bug.
Is it actually _buggy_? color_to_pixel() only returns TRUE if the
format is wider than a byte, so that is the only case where
pixman_fill() actually gets called. In the other cases it falls back
to composite.
> But the point is that fast scrolling (quite a common operation, not something
> totally fancy) requires self-copy support. So IMHO it makes sense to have this
> functionality somehow implemented in pixman and available in some usable way
> to application developers (Firefox et al.)
Agreed, and let me repeat that it would make sense to move the X
server core primitives, including XCopyArea() and XFillRectangles()
into pixman.
There is the beginning of a branch to move FbBlt(), which is the meat
of XCopyArea(), here:
http://cgit.freedesktop.org/~sandmann/pixman/log/?h=blt
However, this won't make 0.20.0 unless someone makes it happen.
Soren
More information about the cairo
mailing list