Okay, the last days I played a lot with NEON and I learned:
Sparrow3d was not made very NEON friendly. I would need to change the whole triangle render code for a good result. Right now most of the times the NEON code is even slower than the code not using NEON. There are different reasons.
My idea is the following: For every pixel I load the texel and then I do some tests like alpha test, z test, pattern test, etc. If this test fails I can stop consider this pixel and keep on with the next pixel.
So what is the problem with NEON? With NEON I consider 4 pixels at one time in parallel. However I can't just cancel the execution for one of the four parallel lanes. I can only set a mask and tell NEON to use the mask e.g. for pixel drawing. So I do all the tests for all pixels, even if a very early test fails. Furthermore I need to pause using NEON for loading the texels. I can't cancel easy if all lane masks are set to "not drawing", too, there is not such a NEON command. I would need to load the values to the memord before I can use them. Hower in the time needed for this, I can just continue using useless NEON instructions.
All in all only for some very special cases NEON is for me faster than not using it.
Fortunately Hase is such a special case. So I use NEON now in Hase to get more fps and lower the needed cpu clock. However I ran in an interesting problem, I didn't have with my approach without NEON. My theory is, that my approach is better optimizable. The problem are cache misses in the texture buffer in certain rotations. I iterate over x. If the texture is placed orthogonal, I iterate in the texture space over y. This is bad. In Hase this is the reason I sometimes have 35 FPS (at 700 Mhz) and sometimes only ~20 FPS.
However I don't have any other game, which would profit. So I will not continue implementing NEON optimizations (e.g. for triangles without textures). I just don't have games, which would profit.
NEON optimization is not enabled by default, too. If you need it or want to this with it, build with "PARAMETER=-DPANDORA_NEON".
Anyway: Thanks for your help, Exophase! The little vector machine in the pandora is very neat.
I am considering using my knowledge for some SSE optimizations for the PC build. Hopefully I don't have the same bottlenecks there.
Greetings, Ziz