Hey folks,<br><br>The attached patch add support for Moonlight working on top of OpenVG. Basically, there are three components that are modified or provided : ShivaVG (the OpenVG implementation used in the port which is based on OpenGL), Cairo (by adding the OpenVG surface) and Moonlight itself (for using correctly the new surface).<br>
<br>Dependencies<br>============<br><br>- liboil 0.3<br>- gtkglext 1.2.0<br>- an accelerated OpenGL with PBO support (glxinfo | grep &#39;GL_ARB_pixel_buffer_object&#39;)<br><br>How to build<br>==========<br><br>- Extract the provided ShivaVG tarball, then, before calling autogen.sh and configure, run `source exportShivavg.sh&#39; which set up some environment variables. After that, make and make install as usual.<br>
<br>- Compile moon with openvg.patch applied (patch based on r138450). Before running autogen.sh or configure, run `source exportMoon.sh&#39; which also setup some environment variables. You may have to `make clean &amp;&amp; make distclean&#39; for things to work correctly.<br>
<br>Demos that are known to &quot;work&quot;<br>=========================<br><br>- BubbleMark : <a href="http://bubblemark.com/silverlight2.html">http://bubblemark.com/silverlight2.html</a><br>- DeepZoom map : <a href="http://blogs.msdn.com/lutzg/archive/2009/03/03/panning-across-large-maps-with-deep-zoom-and-custom-animations.aspx">http://blogs.msdn.com/lutzg/archive/2009/03/03/panning-across-large-maps-with-deep-zoom-and-custom-animations.aspx</a><br>
<br>TODO<br>=====<br><br>- Find a way to not monopolize GLib mainloop (fix Firefox redrawing).<br>- Add VBO to ShivaVG for path handling.<br>- Make Cairo OpenVG surface use more of ShivaVG rather than fallbacking on cairo_image_surface operations.<br>
- Image caching on Moonlight is currently totally disabled. Create another cairo surface wrapping vgImage for that (that could maybe be returned by cairo_surface_create_similar to keep the current caching code working).<br>
- Get that f*ck*ng slowdown on NVidia squashed.<br>- Handle the resize of the canvas.<br><br>About Silverlight 3.0<br>===============<br><br>The cool thing about ShivaVG here is that it relies on OpenGL. It means that when Moonlight will transition to SL 3.0 and its 3D effects, you can basically still call Cairo/OpenVG for the 2D stuff and insert some other OpenGL calls when 3D is necessary.<br>
<br>Cheers.<br><br>--<br clear="all">Jérémie Laval<br><a href="mailto:jeremie.laval@gmail.com">jeremie.laval@gmail.com</a><br><a href="http://garuma.wordpress.com">http://garuma.wordpress.com</a><br>