Ah right .. it was lock() that was copying and "unrotating" surface from whatever native rotation format it was stored internally.
Yeah so at this point the original problem still persists, meaning that the memory buffer is in native format which is not as simple as say , storing it in standard format and doing rotation in the final flip.
On the other hand , I completely understand your decision to store rotated surfaces in native format to avoid shearing.
My current game ( about 95% done) uses variable rate terrain scrolling and shearing , not performance, is the biggest problem at this point so I am actually very glad that GapiDraw works the way it does - I don't want to even think how bad shearing would be if the final blit also included rotating...
:-)
PS.
BTW .. I just finished “porting” my game to GapiDraw 2.x. The performance went up by around 20%-30% which, considering that I almost exclusively use alphablit for all my sprites, is pretty much what I would expect.
Everything else works, fine – I had small issue with drawtext which seems to be a bit more picky as far as font bitmap ( compared to GapiDraw 1.x ) but I resolved all problems and now everything works fine.
PS2.
Here is a little movie of my new game in action.
http://www.warmi.net/images/zraid/game.avi
This is a version with "collisions turned off" for testing so I am plowing thru everything with ease :-)
Back in the day I played River Raid a lot and always wanted to make a clone with modern graphics etc ..