X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=TODO;h=4434ec7cb8af1f24eecec5e410020df17dece335;hb=1e1a00e964a1d8ef43d6d75c1c3a0b5d518d1979;hp=fc457af0fd5c415f8e57076cdd2fabcc73244974;hpb=49240111dbb31c335856f9653544a039275bf033;p=profile%2Fivi%2Fpixman.git diff --git a/TODO b/TODO index fc457af..4434ec7 100644 --- a/TODO +++ b/TODO @@ -1,12 +1,67 @@ + - Testing + - Test implementations against each other + - Test both with and without the operator strength reduction. + They shold be identical. + + - SSE 2 issues: + + - Use MM_HINT_NTA instead of MM_HINT_T0 + + - Use of fbCompositeOver_x888x8x8888sse2() + + - Update the RLEASING file + + - Things to keep in mind if breaking ABI: + + - There should be a guard #ifndef I_AM_EITHER_CAIRO_OR_THE_X_SERVER + + - X server will require 16.16 essentially forever. Can we get + the required precision by simply adding offset_x/y to the + relevant rendering API? + + - Get rid of workaround for X server bug. + + - pixman_image_set_indexed() should copy its argument, and X + should be ported over to use a pixman_image as the + representation of a Picture, rather than creating one on each + operation. + + - We should get rid of pixman_set_static_pointers() + + - We should get rid of the various trapezoid helper functions(). + (They only exist because they are theoretically available to + drivers). + + - 16 bit regions should be deleted + + - There should only be one trap rasterization API. + + - The PIXMAN_g8/c8/etc formats should use the A channel + to indicate the actual depth. That way PIXMAN_x4c4 and PIXMAN_c8 + won't collide. + + - Maybe bite the bullet and make configure.ac generate a pixman-types.h + file that can be included from pixman.h to avoid the #ifdef magic + in pixman.h + + - Make pixman_region_point_in() survive a NULL box, then fix up + pixman-compose.c + + - Possibly look into inlining the fetch functions + + - There is a bug with source clipping demonstrated by clip-test in the + test directory. If we interprete source clipping as given in + destination coordinates, which is probably the only sane choice, + then the result should have two red bars down the sides. + + - Test suite + - Add a general way of dealing with architecture specific fast-paths. The current idea is to have each operation that can be optimized is called through a function pointer that is initially set to an initialization function that is responsible for setting the function pointer to the appropriate fast-path. - - Get rid of the switch-of-doom; replace it with a big table - describing the various fast paths. - - Go through things marked FIXME - Add calls to prepare and finish access where necessary. grep for @@ -30,17 +85,50 @@ this, I suggest just using 32-bit datatypes by setting IC_SHIFT to 5 for all machines. - - Consider whether calling regions region16 is really such a great - idea Vlad wants 32 bit regions for Cairo. This will break X server - ABI, but should otherwise be mostly harmless, though a - pixman_region_get_boxes16() may be useful. - - Consider optimizing the 8/16 bit solid fills in pixman-util.c by storing more than one value at a time. - Add an image cache to prevent excessive malloc/free. Note that pixman needs to be thread safe when used from cairo. + - Moving to 24.8 coordinates. This is tricky because X is still + defined as 16.16 and will be basically forever. It's possible we + could do this by adding extra offset_x/y parameters to the + trapezoid calls. The X server could then just call the API with + (0, 0). Cairo would have to make sure that the delta *within* a + batch of trapezoids does not exceed 16 bit. + + - Consider adding actual backends. Brain dump: + + A backend is something that knows how to + + - Create images + - Composite three images + - Rasterize trapezoids + - Do solid fills and blits + + These operations are provided by a vtable that the backend will + create when it is initialized. Initial backends: + + - VMX + - SSE2 + - MMX + - Plain Old C + + When the SIMD backends are initialized, they will be passed a + pointer to the Plain Old C backend that they can use for fallback + purposes. + + Images would gain a vtable as well that would contain things like + + - Read scanline + - Write scanline + + (Or even read_patch/write_patch as suggested by Keith a while + back). + + This could simplify the compositing code considerably. + - Review the pixman_format_code_t enum to make sure it will support future formats. Some formats we will probably need: @@ -92,8 +180,36 @@ What about color spaces such a linear vs. srGB etc.? + done: +- Use pixmanFillsse2 and pixmanBltsse2 + +- Be consistent about calling sse2 sse2 + +- Rename "SSE" to "MMX_EXTENSIONS". (Deleted mmx extensions). + +- Commented-out uses of fbCompositeCopyAreasse2() + +- Consider whether calling regions region16 is really such a great + idea. Vlad wants 32 bit regions for Cairo. This will break X server + ABI, but should otherwise be mostly harmless, though a + pixman_region_get_boxes16() may be useful. + +- Altivec signal issue (Company has fix, there is also a patch by + dwmw2 in rawhide). + +- Behdad's MMX issue - see list + +- SSE2 issues: + - Crashes in Mozilla because of unaligned stack. Possible fixes + - Make use of gcc 4.2 feature to align the stack + - Write some sort of trampoline that aligns the stack + before calling SSE functions. + +- Get rid of the switch-of-doom; replace it with a big table + describing the various fast paths. + - Make source clipping optional. - done: source clipping happens through an indirection. still needs to make the indirection settable. (And call it