[cairo-commit] [cairo-www] src/summerofcode
Carl Worth
cworth at freedesktop.org
Sat Mar 15 18:39:14 PDT 2008
src/summerofcode/ideas.mdwn | 48 ++++++++++++++++++++++++++++++++++++--------
1 file changed, 40 insertions(+), 8 deletions(-)
New commits:
commit 14caf1b332f1cbc5d47e2e0fa32e99f8566de97c
Author: Carl Worth <cworth at cworth.org>
Date: Sun Mar 16 02:39:02 2008 +0100
Add more details for some Summer-of-Code project ideas
diff --git a/src/summerofcode/ideas.mdwn b/src/summerofcode/ideas.mdwn
index 5f7141b..5db2bd2 100644
--- a/src/summerofcode/ideas.mdwn
+++ b/src/summerofcode/ideas.mdwn
@@ -3,25 +3,58 @@
Library improvements
====================
- * Implement a faster lookup-table-based rasterizer
-
- * A significant improvement to pixman compositing code
+ * [Medium] Implement a faster lookup-table-based rasterizer
+
+ Cairo's software rasterization currently does a complete walk of a
+ regular 15x17 sampling grid for ever pixel in order to compute
+ coverage. This is quite slow. It would be great to have something
+ much faster.
+
+ With the recent change from 16 bits of sub-pixel precision to only
+ 8 bits, (and perhaps even throwing some of those away), there's
+ perhaps something easy to do. One approach would be to generate a
+ lookup table based on all possible input and output positions of a
+ trapezoid edge to a pixel. Then rasterization can become nothing
+ more than 1 to 4 table lookups for each pixel.
+
+ * [Hard] A significant improvement to pixman compositing code
+
+ We know that we want something that is more dynamic than the
+ current approach of hand-writing optimized MMX/SSE2 functions for
+ special cases. We have a proof-of-concept of dynamic
+ code-generation for pixman in the jitblit library, but nothing
+ that's in a form suitable to ship, (due to unfinished parts of the
+ compilation framework that jitblit uses).
+
+ One possible approach would be to instead base a new framework on
+ [LLVM](http://llvm.org/) Søren also has some ideas about doing
+ something somewhat dynamic, but much less aggressive than the kind
+ of approach taken with jitblit.
* Merge XLib and XCB backend similarly to what was done recently to PDF and PS
- * Implement `cairo_stroke_to_path()`
+ * [Medium] Implement `cairo_stroke_to_path()`
+
+ This API function provides a new path that the outline that would
+ be formed by computing a stroke of the current path. The current
+ stroking algorithm does compute this path, but the path has some
+ undesired self-intersecting regions in it. These
+ self-intersections need to be detected and eliminated. The
+ intersection-finding code at the core of cairo's tessellation
+ implementation should provide all the primitive operations
+ necessary for this.
- * Improve software polygon compositing by doing it in a
+ * [Hard] Improve software polygon compositing by doing it in a
single scanline pass rather than tessellating, rasterizing, then
compositing the entire polygon.
- * Fix cairo so that a degenerate matrix draws nothing rather than
+ * [Medium] Fix cairo so that a degenerate matrix draws nothing rather than
triggering an error state. That is: `cairo_scale (cr, 0, 0);` should
not cause an error, (though maybe it shouldn't actually draw
_nothing_ for painting an infinite source pattern---compute the
average color for a surface-based source pattern perhaps?).
- * Add color-space support to cairo.
+ * [Hard] Add appropriate color-management support to cairo.
* [Medium] Add HDR image surface type to cairo/pixman (`CAIRO_FORMAT_ARGB64`).
@@ -53,4 +86,4 @@ Website improvements
Ideally the rest of the wiki would be able to write cairo_create() and have
that automatically link to the entry for cairo_create() in the reference manual.
- A unified look and feel of the reference manual would be a plus.
\ No newline at end of file
+ A unified look and feel of the reference manual would be a plus.
More information about the cairo-commit
mailing list