I'm kind of new to this forum, but I am not new to graphics programming for the Pocket PC.

I have tried most approaches of implementing fast landscape support for the Pocket PC, and the only feasible solution I found was to access all pixel surfaces (buffers) in a format compatible with the display format and avoid rotating at all costs. GapiTools does not perform a single rotation on any device (except for precalced bitmaps conversion).
This approach requires a bit more logic in the drawing functions, to translate the coordinates used for drawing and flip x/y loops to optimize speed (n+1 is faster than n+240 for example), but the increase in speed for copying a pixel surface to the display more than makes up for it.
All simple blits in GapiTools are done by using fast 32-bit memory loops. Factors such as analyzing pixel strip length to decrease loop counts, stepping in the smallest direction with respect to x/y pitch and re-using word alignments can also be used to increase speed further (unless an entire surface is to be copied as a memory block).
The overhead in translating the coordinates in each drawing function does not involve too much logic, and the performance drawback is most visible using single SetPixel/GetPixel accesses.
With all new screens emerging on the Pocket PC, I personally believe that direct drawing to a screen buffer (using raw mem pointer access) should be avoided at all costs, and let a thin middleware (such as the one implemented in GapiTools) do all coordinate transformations. Which is a shame because of the overhead requirements.. In a perfect world all PDA's have perfectly aligned screen buffers.

Best regards,
Johan Sanneblad
www.gapitools.com