Hi,
(1) 555 to 565
GapiDraw never converts 565 surfaces to 555. Surfaces are always stored in one format depending on the device to avoid a final conversion when drawing to the display.
There are several optimizations you could do in your 565 to 555 conversion routine:
(a) Read two pixels at a time
(b) Avoid *src twice on the same row in case the compiler does not read the contents on src to a register and uses that twice.
For example:
DWORD twopixels = *src32;
*dest32 = /* 32-bit 565 to 555 conversion of "twopixels" here */
(2) Devices
Basically it does support all 12-bit and 16-bit devices.. GapiDraw has been downloaded over 5000 times now, and tested on most Pocket PCs and Smartphones. The only device I have gotten reported issues with is the @migo, and I am investing that right now. It is probably just a bad GAPI implementation on that device.
(3) Target FPS 1000
One ---THOUSAND--- FPS? Why on earth would you want that??? Your monitor is only capable of refreshing the display at around 100 hz maximum, so why would you draw graphics to the display when noone can see it??