[cairo] [PATCH 00/39] [OpenVG] merging pippin work on HEAD, and adding egl support

Pierre Tardy tardyp at gmail.com
Fri Jul 10 10:27:05 PDT 2009


You can find some png results here, as well as the patches in tarball
format, here.
http://tardyp.free.fr/cairo-openvg/

And, for performances, there is plenty of room for optimization:

cairo_openvg_image_surface rendering:

Page1 595x842 rendered in 0.5691 seconds
Page2 595x842 rendered in 20.5493 seconds
Page3 595x842 rendered in 0.5199 seconds
Page4 595x842 rendered in 0.3953 seconds
Page5 595x842 rendered in 0.3275 seconds
Page6 595x842 rendered in 0.3482 seconds
Page7 595x842 rendered in 0.3119 seconds
Page8 595x842 rendered in 0.7030 seconds
Page9 842x595 rendered in 0.1457 seconds
Page10 595x842 rendered in 0.4740 seconds
Page11 595x842 rendered in 0.4311 seconds
Page12 595x842 rendered in 22.2790 seconds
Page13 595x842 rendered in 1.7996 seconds
Page14 595x842 rendered in 0.1203 seconds

cairo_image_surface rendering:
Page1 595x842 rendered in 0.4480 seconds
Page2 595x842 rendered in 0.5049 seconds
Page3 595x842 rendered in 0.3278 seconds
Page4 595x842 rendered in 0.1348 seconds
Page5 595x842 rendered in 0.2112 seconds
Page6 595x842 rendered in 0.1227 seconds
Page7 595x842 rendered in 0.1130 seconds
Page8 595x842 rendered in 0.9758 seconds
Page9 842x595 rendered in 0.1216 seconds
Page10 595x842 rendered in 0.4677 seconds
Page11 595x842 rendered in 0.4032 seconds
Page12 595x842 rendered in 1.7699 seconds
Page13 595x842 rendered in 2.0625 seconds
Page14 595x842 rendered in 0.0798 seconds


On Fri, Jul 10, 2009 at 7:02 PM, <tardyp at gmail.com> wrote:

> From: Pierre Tardy <tardyp at gmail.com>
>
> Hi,
>
> Here is my work to merge Øyvind's openvg backend on latest master.
>
> The last patch is the add of egl around openvg, in order to have a
> image_surface like behaviour. This backend is still very experimental,
> I'm having relatively good correctness using poppler rendering a pdf.
>
> The performance is not very good, probably due to some texture thrashing.
>
> The openvg font sytem is also not used, cairo core is kindly converting
> glyphs into path for us.
>
> Pierre Tardy (4):
>  OpenVG Build plumbing for configure.ac and Makefile.sources
>  Update cairo-openvg to compile on 1.8.2 baseline
>  [OpenVG] updated cairo-openvg to latest internal API changes
>  Added egl support to cairo-openvg
>
> Øyvind Kolås (35):
>  Build plumbing and addition of OpenVG surface type, and added initial
>    skeleton of backend.
>  Removal of dead code, reindentation.
>  Added linear gradient source.
>  Added radial source, made the gradient stop setup a separate utility
>  added functionality to get_extents callback.
>  reverted change to extents.
>  Preliminary stubs for surface source.
>  Made the source paint object live in the surface
>  Added preliminary code to support image pattern source.
>  check for, and include /vg/openvg.h instead of /VG/openvg.h
>  Made paint use the same source setup as stroke and fill, also
>    enhanced pattern source.
>  %s/quartz/openvg/ in the path conversion function name.
>  Made _cairo_openvg_surface_show_glyphs fill paths.
>  do not register intersect_clip_path since it is empty
>  Made linear, radial and image source patterns use a common setup for
>    the transform of the pattern.
>  Modified component order for buffers in component shuffle.
>  Comment and indentation enhancements.
>  Implemented intersect_clip_path, using software rendered path and
>    masks.
>  flip the cliping path vertically in the surface
>  Added some FIXME's and comments about future development.
>  Added define to enable/disable use of mask (ShivaVG doesn't support
>    vgMask yet)
>  implemented cairo_mask
>  Return an image surface when a similar surface is requested,
>    workaround for not supporting OpenVG based source patterns in
>    OpenVG.
>  added hack that resets clipping path after cairo_mask.
>  small fix to make the previous fix build
>  Batch upload of path segments in bundles of 16, removed logic to
>    defines to avoid using vgMask. Now that ShivaVG supports all OpenVG
>    features needed for the basic full coverage of cairo.
>  updated author and license information, added missing r's here and
>    there.
>  improved coverage of compositing operators
>  use meta surface instead of image surface for create_similar
>  keep track of opacities set for groups (solid masks) ourselves
>    instead of uploading a mask
>  propagate errors in cairo_path_fixed_t to VGPath function
>  return to correct component order for images.
>  reuse paint object, have a cache of images
>  do not avoid reuploading the data when only the data pointer for the
>    image surface has changed.
>  added a logical clock to keep track of dirt.
>
>  configure.ac                |    7 +
>  src/Makefile.sources        |    4 +
>  src/cairo-openvg-surface.c  | 1275
> +++++++++++++++++++++++++++++++++++++++++++
>  src/cairo-openvg.h          |   53 ++
>  src/cairo-surface-private.h |    2 +
>  src/cairo-surface.c         |    4 +
>  src/cairo.h                 |    4 +-
>  7 files changed, 1348 insertions(+), 1 deletions(-)
>  create mode 100644 src/cairo-openvg-surface.c
>  create mode 100644 src/cairo-openvg.h
>
>


-- 
Pierre
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.cairographics.org/archives/cairo/attachments/20090710/119967d0/attachment.html 


More information about the cairo mailing list