Open Source implementation released

Hi,

I’ve sat down and did an Open Source implementation of OpenVG.
The implemention is licensed under GNU GPL v2 license and depends on the cross-platform Qt library. Qt 4.3 is required, mainly because to 4.3 I added perspective transformations and extended blend ops that are necessary for OpenVG. Since Qt 4.3 hasn’t been officially released as of yet, you’ll need a snapshot. Documentation on how to get Qt snapshots is available here:
http://www.trolltech.com/developer/down … /snapshots

And the OpenVG implementation (along with one example so far, of course animated one) is available as a tarball:
http://ktown.kde.org/~zrusin/dev/openvg.tar.bz2
and also a Git repository is available from:
http://gitweb.freedesktop.org/?p=users/ … ;a=summary
if you have git installed you can check it out with:
git clone git://people.freedesktop.org/~zack/openvg

As far as the implementation goes, it’s on top of OpenGL. I don’t have hardware here with OpenVG acceleration support so I didn’t even bother with trying to come up with driver hooks, but obviously it’s something we’ll consider (where by “we” I’m referring to the Open Source community).
The rendering code is really well done and you can be sure that this implementation, altough on top of OpenGL, is faster than any other vector graphics API (which includes Avalon).
We’re planning to add OpenGL ES support to 4.3 meaning soon it will work with OpenGL ES as well.
You really want a card with support for fragment programs because they’re used for rastarization (for high-quality anti-aliasing), gradients, blend mode, patterns and non-tessellated ellipse drawing.

All in all, the dependency on Qt and the license could change. I’m more interested in whether people are interested in having an Open Source OpenVG implementation and if so what they would like to see.

I don’t think I’ll be able to follow this board (I’m not a big fan of online forums) but if you have an opinion, then please send them to zack at kde.org .

Oh, and if you have examples that you’d be willing to contribute that’d be great. In general the biggest problem of the specification is almost complete lack of source code for anything, but trivial operations. I especially enjoyed the part about gradients that has pictures of gradients (oh, so that’s how gradients look! :wink: ) but no code showing how to create each one of them.

So all in all: I’ll finish the implementation if there’s enough interest, Qt dependency and license could change, depending on the needs and the specification needs quite a bit of work to make it readable.

Zack Rusin

Hi Zack,
Do OpenVG have any ‘value’ if we don’t get the driver manufacturers to support it directly? My thinking is that if its done on top of OpenGL which you currently have done then it would just be another OpenGL powered Vector API like Cairo and Arthur and thus not really ‘adding’.

On the other side if we put this into X.org and managed to get ATI, Intel and Nvidia to support it, do you see OpenVG as a better backend for Cairo and Arthur than OpenGL currently is (for instance providing better performance for these API’s than OpenGL does) or do you see it as a standards based replacement for the Cairo and Arthur API’s?

Christian