FS#5432 - Ipod video lcd speed increase

Attached to Project: Rockbox
Opened by Thomas Paul Diffenbach (tpdiffenbach) - Friday, 26 May 2006, 05:54 GMT
Task Type Patches
Category LCD
Status Closed
Assigned To No-one
Operating System iPod 5G
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


Patch to increase lcd speed on the ipod video.

Decreases runtime of lcd_update_rect by an average of 0.1 ticks per call, or 1 millisecond; and up to three milliseconds max. This increases the maximum frame rate by about one to one-and-one-half frames per second.

Using the test_fps plugin, the results for the unmodified code, on my ipod, are:
1/1 21.5 fps, 1/4 44.5 fps, with CPU at 30MHz
1/1 37.0 fps, 1/4 57.0 fps, with CPU at 75MHz

With this patch, my results are:
1/1 22.5 fps, 1/4 46.0 fps, with CPU at 30MHz
1/1 38.5 fps, 1/4 58.0 fps, with CPU at 75 MHz

The patch uses Duff's Device to unroll a loop.
This task depends upon

Closed by  Dave Chapman (linuxstb)
Wednesday, 19 July 2006, 17:47 GMT
Reason for closing:  Accepted
Comment by Rani Hod (RaeNye) - Sunday, 28 May 2006, 15:48 GMT
Great work, man!
I didn't know DD before and it's cool.

I don't have an ipod, but I implemented this for iaudio x5 as well, and got about the same speedups (CPU at 45MHz) --
Original: 1/1 41.5 fps, 1/4 164.5 fps
Duff: 1/1 42.5 fps, 1/4 166.5 fps

Given that the x5 LCD's size is 1/4 of the ipod's, there's obviously room for improvement...

I didn't submit a patch because
1. I could only unroll the loop once (=2 iters) because the IRAM is not big enough for twice (=4 iters) :)
2. There's no use to submitting X5 specific patches until codefreeze is over;
3. And when it's over, there'll be lots of changes to CVS, so I'll have to repatch anyway.
4. But the real reason is that my lcd-x5.c is already full of patches (contrast, brightness, ...) that have to be uploaded in a different patch.