This is the bug/patch tracker for Rockbox. Click here for more information.
Quick links: Bugs · Patches · Rockbox frontpage
FS#11843 - LCD speed up for iPod nano 1G, iPod color
Attached to Project:
Rockbox
Opened by Andree Buschmann (Buschel) - Wednesday, 29 December 2010, 09:26 GMT+2
Last edited by Andree Buschmann (Buschel) - Sunday, 09 January 2011, 20:03 GMT+2
Opened by Andree Buschmann (Buschel) - Wednesday, 29 December 2010, 09:26 GMT+2
Last edited by Andree Buschmann (Buschel) - Sunday, 09 January 2011, 20:03 GMT+2
|
DetailsThis task provides changes to the iPod color/nano1G LCD driver that affect both RGB and YUV screen updates. For the YUV optimization the asm from the HDD6330 is used, for RGB a special case handling for (width==LCD_WIDTH) is introduced.
v01 = only affects YUV v02 = YUV and RGB changes |
This task depends upon
Closed by Andree Buschmann (Buschel)
Sunday, 09 January 2011, 20:03 GMT+2
Reason for closing: Accepted
Additional comments about closing: All relevant changes were submitted. If new changes come up I will open a new task.
Sunday, 09 January 2011, 20:03 GMT+2
Reason for closing: Accepted
Additional comments about closing: All relevant changes were submitted. If new changes come up I will open a new task.
@ 30Mhz:
LCD = 80.5 / 318.0 (Identical to stock SVN)
YUV = 30.1 / 120.5 (vs 23.0 / 92.0 with stock SVN)
@ 80 Mhz:
LCD = 214.5 / 850.0 (Identical to stock SVN)
YUV = 81.0 / 322.0 (vs 61.5 / 246.0 with stock SVN)
<Buschel> soap: could you try the following and retest RGB full screen? -> r+=4 in line 338 and copying line 342 to call this twice?
<soap> of lcd-color_nano.c?
<Buschel> yes
results in an apparent failure to boot, the boot logo is garbled and I can see no screen response to key presses.
Only needs to bested with the critical 80 MHz clock.
/home/soap/rockbox/firmware/target/arm/ipod/lcd-as-color-nano.S:201: Error: symbol `lcd_yuv_write_inner_loop' is already defined
make: *** [/home/soap/rockbox/buildnano/firmware/target/arm/ipod/lcd-as-color-nano.o] Error 1
svn up, make bin =
/home/soap/rockbox/firmware/target/arm/ipod/lcd-as-color-nano.S: Assembler messages:
/home/soap/rockbox/firmware/target/arm/ipod/lcd-as-color-nano.S:201: Error: symbol `lcd_yuv_write_inner_loop' is already defined
/home/soap/rockbox/firmware/target/arm/ipod/lcd-as-color-nano.S:353: Error: symbol `lcd_yuv_write_inner_loop' is already defined
/home/soap/rockbox/firmware/target/arm/ipod/lcd-as-color-nano.S:505: Error: symbol `lcd_yuv_write_inner_loop' is already defined
make: *** [/home/soap/rockbox/buildnano/firmware/target/arm/ipod/lcd-as-color-nano.o] Error 1
LCD RGB 1/1: 51.7, 1/4: 202.5 LCD YUV 1/1: 45.5, 1/4: 180.0 @ 80MHz
LCD RGB 1/1: 19.4, 1/4: 76.0 LCD YUV 1/1: 17.0, 1/4: 67.1 @ 30MHz
v03 on iPod color (tested by Hayden Pearce):
LCD RGB 1/1: 51.7, 1/4: 202.5 ; LCD YUV 1/1: 51.0, 1/4: 202.0 @ 80MHZ
LCD RGB 1/1: 19.4, 1/4: 76.0 ; LCD YUV 1/1: 19.1, 1/4: 75.5 @ 30MHZ
YUV is nearly identical to RGB. This means the bottleneck should be the LCD IF itself.
@ 80 Mhz:
LCD = 214.5 / 850.0 (Identical to stock SVN)
YUV = 90.5 / 360.0 (vs 81.0 / 322.0 with v01 vs 61.5 / 246.0 with stock SVN)
Elephant's Dream /appears/ to play properly. What sort of artifacts should one expect? Subtle ones or gross ones? No gross ones to report.
v10 patch disables FIFO_WAIT. Speedup on nano 1G is about +17% against svn (94.0 fps boosted full screen).
2) Ensure that "h" (derived from "height") is always even for the internal loops. This ensures that the first loop also uses even "h" in the YUV blitting which writes two lines at once. This is also relevant for the iPod color only.
LCD 1/1: 19.4, 1/4: 77.1 LCD YUV 1/1: 17.4, 1/4: 70.0 @30MHz ;
LCD 1/1: 51.7, 1/4: 206.0 LCD YUV 1/1: 46.7, 1/4: 187.0 @80MHz
v17 submitted with r28944.
Submitted with r28956, no speed change.