blob: 070aea131be7a3e2396ee085263a1d262a1571f3 (plain
The aim of this project is to provide a means of driving OpenGL
compositing in the X Window System using the Mono framework. The
project must achieve this in a way such that effects can be provided
concurrently by individual effect plugins with their logic written
purely in a CLS-compliant language supported by Mono, such as C#. The
infrastructure itself is not restricted to this requirement and may be
implemented with a combination of C "glue" code and C# in the style of
existing bindings. The project must yield one or more effect plugins
that demonstrates a sensible subset of functionality offered by GL
compositing managers. Common sense should be the guiding force rather
than a word-for-word adherence to the following plans, as this project
explores some new ground:
The project should achieve its goals by extending compiz
non-invasively, ideally as a a regular compiz module which hosts the
Mono runtime. In the case that this is infeasible or highly inelegant,
the project mentor may be consulted as to whether it would be a better
solution to extend compiz itself to allow more flexible extensions by
working with the author of compiz and contributing to that project
David Reveman's description of compiz:
compiz - OpenGL window and compositing manager
Compiz is an OpenGL compositing manager that uses
GLX_EXT_texture_from_pixmap for binding redirected top-level windows
to texture objects. It has a flexible plug-in system and it is
designed to run well on most graphics hardware.
The API exposed by the project must cover the subset of entry points
needed to create functional effect plugins, and should provide
complete coverage of all relevant public API. The managed (C#) API may
deviate in terminology from that used in compiz in order to follow the
naming standards and style of the CLR and existing Mono libraries.
The project should allow plugins to implement effects using Mono's Tao
OpenGL library. This library has not been widely distributed and is
not yet in a deliverable form, so some work towards making it
shippable might be made but productisation of dependent libraries will
generally be outwith the scope of the project.
Code will be written foremost with maintainability, correctness and
stability in mind, followed by completeness and performance concerns.
Progress should be made such that there is demonstrable integration of
Mono with the compositing manager for the mid-program evaluation, and
a complete workable framework that meets the requirements set out in
this specification by the time of the final evaluation.
All code and documentation produced for the project will be
contributed under the terms of the MIT X11 license.