WINCE: ARM version of screen rotation fn for SDL lib
|Reported by:||SF/robinwatts||Owned by:||SF/knakos|
The Wince port of Scummvm relies on a port of SDL, and in particular the video interface it provides implemented using GAPI.
The central part of this routine that blits stuff to the screen is GAPI_UpdateRects. This patch implements the two rotated cases of that blit in ARM code in the most cache friendly way I know how.
Screen memory is uncached generally, so the key to getting performance out should be to make use of the write buffer. At the same time, we have to be sure that we don't blow through the data cache as we read through source lines.
The ARM code routine enclosed reads and writes 4 pixels at a time in such a way that the write buffer should merge writes for the most efficient operation possible. Reading should use 4 cache lines at a time, so should make nice use of the cache too.
My next job is to do some timings to prove that this patch is genuinely faster, but I thought I'd upload it here in advance for safekeeping.
Ticket imported from: #1714659. Ticket imported from: patches/761.