[Pixman] Pixman library on wince arm
block111 at mail.ru
Wed Sep 22 11:05:27 PDT 2010
21 Sep 2010 00:18:49 +0200 письмо от Soeren Sandmann <sandmann at daimi.au.dk>:
> PS <block111 at mail.ru> writes:
> > Currently, I have code that does what I described (using winapi or even
> plain c code that does alpha blending). So, I'd like to find out how to do
> such relatively simple tasks with pixman. There seems to be no docs/tutorials
> on how to use pixman directly.
> > After reading mailing lists, I see a lot of commits and post that are
> relative to neon optimizations, but they are all in some separate git branches
> ( http://cgit.freedesktop.org/~siamashka/pixman/ )
> > Should I look into some of these branches?
> I think almost all NEON related patches are in master at the moment,
> though it's possible Siarhei has other things pending.
> The latest stable release, 0.18.4, has a number of NEON fast paths
I tried to see if I could easily use normal pixman functions, and it requires too much changes in my code which works fine but has some performance issues.
I reviewed possible places for improvement and I came down to one function that I could use. Actually, I made some changes to check performance improvement with pixman and it was something like 10x improvement but that code could handle only simple shapes.
In short I have complex polygons, clipping rectangles etc and all that code works well and does not have performance problems. Biggest hit comes from alpha blending code. It doesn't make much sense to change my code, but still I want to try pixman optimized functions.
I changed my code to always use x8r8g8b8 as the destination surface and for polygons I would be able to use pixman_composite_over_n_8888_asm_neon (or sse2 version on PC). I have all my code in place that eventually line by line does blending to the destination surface with some predefined color.
The question I have is simple: the function pixman_composite_over_n_8888_asm_##cpu takes height as the second (AFAIK) parameter, it has some logic to handle height and line stride. Is there a function that does the same but operates on single lines? That function wouldn't need to know dst_stride and height, all I'd need to pass is the dst_line, width, and color.
I tried to check that .S for neon asm and it's quite complicated to figure out how to remove that stride/height handling logic from that functions to keep it as simple as possible. When there is a clipping rectangle or some trapezoid setup as mask then the underlying algorithms in pixman also should operate on lines because in complex shapes every single line will have different width etc. am I correct about that? If I am, then there should already be functions that do what I need
More information about the Pixman