[Moonlight-list] Fwd: silverlight 3 features

Chris Toshok toshok at gmail.com
Mon Nov 9 15:28:43 EST 2009


-------- Original Message --------
Subject: 	silverlight 3 features
Date: 	Mon, 09 Nov 2009 14:36:58 -0500
From: 	David Reveman <dreveman at novell.com>



Been doing some basic background research on the silverlight features we
need to implement for 3.0. I'm currently getting to know the moonlight
code base and will start to implement the features in the order
described below asap..

- david


Silverlight 3.0
===============

Perspective 3D
--------------

Basic perspective transformations of 2D objects is all that is supported
by silverlight 3.0. Perspective transformations are not supported by the
cairo API but supported by pixman and xlib backends. Which means we have
to implement it as bitmap transformations by pushing the rendering of a
UIElement into a bitmap and render that bitmap unto its parent with the
perspective transformation. This intermediate compositing step will have
an impact on performance mostly due to the extremely inefficient
implementation of perspective transformation in pixman.


Pixel Shader APIs
-----------------

* No hardware accelerated in Silverlight 3.0
* .ps effect files
* Allows use of DirectX’s shader dialect called HLSL to create the
effect files

Obviously not supported by cairo so it will have to implemented in a
similar way to perspective transformations. We can't really have
anything like this run on the server side when xlib backend is used so
it will have to always run on the client side using local pixman images.
Can eventually be accelerated using an OpenGL output backend.


Cached Composition (GPU support)
--------------------------------

* Push rendering of UIElements to cairo surfaces
* Use cached surface instead of rendering child elements
   + Provides GPU acceleration through Xrender
* OpenGL output surface could give better GPU acceleration

Integrates with perspective transformations and pixels shaders. The
amount of acceleration this will provide through Xrender depends much on
the X server driver architecture and such. Can provide significant
acceleration through an OpenGL backend.


TODO
====

Pixel shaders, perspective transformations and bitmap caching can be
implemented in a similar way to how the opacity mask property in the
UIElement class is handled.

I recommend that we use Gallium3D for pixel processing

Gallium3D
   + MIT licenced
   + SSE2 optimized software implementation
   + LLVM implementation
   + Can be hardware accelerated if necessary

We need to convert .ps effect files to TGSI

Proposed order of implementation:

1. Bitmap caching
2. Perspective transformations
3. Pixel shaders
4. OpenGL acceleration




-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/moonlight-list/attachments/20091109/39732d58/attachment.html 


More information about the Moonlight-list mailing list