FS#9178 - lcd_blit_yuv and lcd_write_yuv420_lines2 functions for Cowon D2

Attached to Project: Rockbox
Opened by Thibaut GIRKA (ThibG) - Wednesday, 09 July 2008, 17:24 GMT
Last edited by Rob Purchase (shotofadds) - Wednesday, 16 July 2008, 17:40 GMT
Task Type Patches
Category LCD
Status Closed
Assigned To No-one
Operating System Another
Severity Low
Priority Normal
Reported Version Daily build (which?)
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


Provide a basic (extremly slow) lcd_write_yuv420_lines for the Cowon D2 and update the lcd_blit_yuv function.
This task depends upon

Closed by  Rob Purchase (shotofadds)
Wednesday, 16 July 2008, 17:40 GMT
Reason for closing:  Accepted
Additional comments about closing:  In r18060.
Comment by Thibaut GIRKA (ThibG) - Wednesday, 09 July 2008, 18:39 GMT
Ignore the old patch, this one is much faster.
Comment by Thibaut GIRKA (ThibG) - Wednesday, 09 July 2008, 20:04 GMT
Another patch :)
Comment by Michael Sevakis (MikeS) - Wednesday, 09 July 2008, 21:39 GMT
Why not modify lcd-as-memframe.S since it's in use for general RGB updates for the D2 anyway? The asm yuv stuff should only need a few instructions changed to allow non-rotated conversion. mpegplayer also needs to be told explicitly that dithering is available for the target.
Comment by Rob Purchase (shotofadds) - Wednesday, 09 July 2008, 22:35 GMT
Mike, that's the intention. This was accepted as a stop-gap until either I have the time to fix it properly (not a priority) or someone else with the relevant ARM knowledge comes along and does so.
Comment by Thibaut GIRKA (ThibG) - Friday, 11 July 2008, 08:37 GMT
Here is a new patch, which make the ASM part draw lines horizontally when LCD_HEIGHT < LCD_WIDTH
Comment by Rob Purchase (shotofadds) - Sunday, 13 July 2008, 15:20 GMT
The attached patch updates both the standard and dithered versions (lcd_yuv_write_42_lines_odither) to only rotate if LCD_HEIGHT > LCD_WIDTH, and also enables the Dithering option in MpegPlayer for the D2.

I've simplified the previous patch slightly by removing the LCD_WIDTH < 128 stuff (since no targets using this code have a resolution that small) and included a slight optimisation for an extra 1fps.