Hello Pixman,

I'm writing a geometry app for windows mobile and I wanted to optimize some cpu 
intensive operations. My phone is HTC HD2 and it supports neon (I already use 
some neon code with it). I tried to search for some example code or for neon 
optimized if there is any and it seem that pixman may have that functionality.

1) I do argb alpha blending from 32bit src image to 32/24 or rbg565 surface. I 
downloaded pixman and after digging through test code I was able to get that 
part working: pixman_image_composite(PIXMAN_OP_OVER, alpha_img, NULL, dest_img, 
...); I tried 32-bit destination argb and it works (I didn't try 24bit or 
rbg565 as destination images, but I assume they work the same way, as there are 
neon optimized paths for these operations in pixman-arm-neon.c)

2) I do simple overlays with arbitrary shapes. For example, I have 200x200 pix 
image (rbg565 or 24bit rgb) and I have a triangle defined by some arbitrary 
vertices. I do solid fill of that triangle or I also do 40% alpha blending of 
that triangle (60% from the src image and the rest 40% of some solid color).
I tried to find how to do that kind of tasks with pixman, but I couldn't find 
how to do it. In real application I actually need to draw lines and solid-fill 
or do 40% blending of arbitrary shapes. It looks like some arbitrary shaped 
fills can be done with pixman_add_traps ( after I viewed test\trap-test.c ), 
but for that I need t generate alpha plane, and I didn't see how set arbitrary 
shaped trap and then do pixman_image_composite so that only some part of the 
image had composited pixels. To tell the trues, it's really not clear to me 
what trap means and what it does in pixman.

3) I had a big problem with zooming. I optimized that part a bit, but it seems 
that such part could be done better with pixman. In short, I want to stretch 
from 200x200 to 250x250 some arbitrary image 32/24bit or rgb565. As far as I 
understood from studying test code, that kind stuff is possible through some 
sort of transformations, and there is no straight forward scale function.

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?

thanks!





_______________________________________________
Pixman mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pixman

Reply via email to