[cairo] Question on DirectFB backend

Chris Wilson chris at chris-wilson.co.uk
Fri Nov 20 04:45:23 PST 2009


Excerpts from Lionel Landwerlin's message of Fri Nov 20 09:39:11 +0000 2009:
> Hi folks,
> 
> I'm working with buildroot (http://buildroot.org/) to generate rootfs for
> embedded systems.
> I'm trying to upgrade the current cairo package in buildroot to the  1.8.8
> version. The current package uses cairo-1.6.4 + one patch.
> 
> I reapplied manually the patch and found that most of it has already been
> applied in the 1.8.8 version, some other part has been rewritten and there
> is only one part which bother me.
> 
> Does someone know why theses ReleaseSource calls has been added ?
> I guess this has something to do with the fact that cairo owns a lock on the
> surfaces that requires frequent EngineSync calls when blitting (which slows
> down the hardware acceleration), but I'm not really sure.

The commit that added ReleaseSurface is a good example of the style that we
need to avoid:

commit 08516d97a1b34cbb119d6d842ae31e4cb4e08740
Author: Claudio Ciccani <klan at directfb.org>
Date:   Mon Dec 10 18:54:01 2007 +0100

[cairo-directfb] Merging from directfb.org

- Improved performance in case of surface conversion: allocate a shadow buffer that can only grow
- Fixed support for small surfaces (less than 8x8)
- Optimize the blending function according to the surface format
- Added _directfb_categorize_operation(): selects the blitting function according to the transform matrix
- Avoid inverting the matrix when doing a simple StretchBlit()
- Use TextureTriangles() instead of StretchBlit() when scale factors are negative
- Added support for ARGB32 fonts (converted to A8 internally)
- Removed unused functions (flush() and mark_dirty_rectangle())
- Code cosmetics

So we have no idea why ReleaseSurface is required.

Lionel, can you give a quick pitch on why I should not simply delete
the directfb backend? From my reading of the code, it will only
attempt to accelerate the simplest of blits and blends [though, that
includes solid glyphs]. Everything else will trigger fallbacks. So is
there any justification for Cairo to continue to have a DirectFB backend?
At the moment I'm radically changing the internal interfaces, that will
reduce the directfb backend to being basically a wrapper around the
image surface, and I'm not sure if that is worth the effort. (The effort
principally be in writing better glyph support.)
-ickle
-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the cairo mailing list