- Status Closed
- Percent Complete
- Task Type Patches
- Category LCD
-
Assigned To
Buschel - Operating System iPod Nano 2G
- Severity Low
- Priority Very Low
- Reported Version Release 3.7.1
- Due in Version Undecided
-
Due Date
Undecided
- Votes
- Private
FS#11807 - Major speed up of iPod nano 2G LCD
This patch implements some changes to the iPod nano 2G LCD driver.
1) Do not poll FIFO full state, but for FIFO half full state. FIFO size is 16 bytes. So, when FIFO is not half full it is possible to write up 8 bytes (= 4 pixels) at once. This reduces the number of polls by far.
2) Force “width” to even in lcd_update_rect() to allow writing 2 pixels per loop.
3) Write 4 pixels per loop when (width==LCD_WIDTH).
Speed up is ~50% for RGB and 25% for YUV.
Edit: My nano has a LDS176 type LCD.
Closed by Buschel
2010-12-21 07:03
Reason for closing: Accepted
Additional comments about closing: Warning: Undefined array key "typography" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 371 Warning: Undefined array key "camelcase" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 407
2010-12-21 07:03
Reason for closing: Accepted
Additional comments about closing: Warning: Undefined array key "typography" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 371 Warning: Undefined array key "camelcase" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 407
All patches committed with up to
r28868
Loading...
Available keyboard shortcuts
- Alt + ⇧ Shift + l Login Dialog / Logout
- Alt + ⇧ Shift + a Add new task
- Alt + ⇧ Shift + m My searches
- Alt + ⇧ Shift + t focus taskid search
Tasklist
- o open selected task
- j move cursor down
- k move cursor up
Task Details
- n Next task
- p Previous task
- Alt + ⇧ Shift + e ↵ Enter Edit this task
- Alt + ⇧ Shift + w watch task
- Alt + ⇧ Shift + y Close Task
Task Editing
- Alt + ⇧ Shift + s save task
Small update which further speeds up the LCD driver.
Further speed up for RGB 1/4, YUV 1/1 and YUV 1/4. This patch version changes the LCD register bus width to 16 bit (using little endian).
Unify DATA8 / DATA18 and CMD8 / CMD16 functions.
Introduce asm code for YUV blitting. The asm code was adapted from the iPod Video code. The usage of registers can be further optimized (e.g. not handing over LCD_BASE as parameter.
svn
192 MHz
Main: 86.5 (1/1) 343.5 (1/4)
YUV : 64.0 (1/1) 254.5 (1/4)
48 MHz Main: 36.3 (1/1) 144.5 (1/4)
YUV : 22.5 (1/1) 90.0 (1/4)
patch v08
192 MHz Main: 129.5 (1/1) 516.0 (1/4) = 6,017,088 bytes/s (+50%)
YUV : 123.5 (1/1) 499.0 (1/4) = 2,869,152 pixel/s (+93%)
48 MHz Main: 64.5 (1/1) 258.0 (1/4) = 2,996,928 bytes/s (+78%)
YUV : 41.7 (1/1) 168.0 (1/4) = 968,774 pixel/s (+85%)
v08 submitted with r28813. This task is kept open to track possible issues.
After some experiments during an IRC chat with TheSeven I also changed the LCD_PHTIME register for the LDS-type display to 0×00. This results in a massive speedup of RGB full/quarter updates. As we now come closer to the memory bandwith I have added an asm function to write a single line to the LCD. To do this efficient the starting index must be even and the number of transfered pixels must be a multiple of 4.
patch v08 (against r28800)
192 MHz Main: 258.0 (1/1) 1029.5 (1/4) = 11,987,712 bytes/s (+198%)
YUV : 125.5 (1/1) 504.0 (1/4) = 2,915,616 pixel/s (+ 96%)
48 MHz Main: 129.0 (1/1) 514.0 (1/4) = 5,993,856 bytes/s (+252%)
YUV : 41.7 (1/1) 168.0 (1/4) = 968,774 pixel/s (+ 85%)
Submitted with r28824 except setting LCD_PHTIME to 0×00. Patch v10 does this.
Sync’ed against r28861 (tested for LDS and ILI type displays now). Speed is same for both LDS and ILI.