View Single Post
Posts: 503 | Thanked: 267 times | Joined on Jul 2006 @ Helsinki
#29
Originally Posted by fanoush View Post
I guess you tried to start copying earlier to narrow the gap? It just needs to write to framebuffer data which is already transferred and do not outrun the DMA in progress. Maybe some timestamp when DMA transfer started could help with timing this?
Yes, I thought about it, but that's a bit unportable as the timings depend on memory and graphics bus performance difference (and I don't know how this performance may change depending on various factors, for example frequency scaling). And it does not solve the problem completely. Having two pages in the framebuffer seems like a better option. I considered splitting current framebuffer into two parts, doing software downscaling to fit video frames into each part, and do screen updates with hardware upscaling each of the parts to fullscreen. All of this supposedly could be done with a new framebuffer screen update ioctl (which allows to specify destination x and y coordinates), but it did not work as I expected when I tried it earlier (was its implementation buggy?). I can try to experiment with this trick again on OS2008 firmware.

But this would need modified kernel anyway (unless the timestamp can be figured out somehow) so we could also preallocate second framebuffer in such kernel too (but this eats memory). Is the timing worth the effort?
Kernel modifications are rather hard to deliver to end users. We still even can't use YUV420 color format reliably in mplayer on 770 (for ~2% faster video playback) as there is no way to know beforehand if it will work properly (fixed kernel) or deadlock (original kernel). Also such a small speedup may be not enough to provide motivation for the users to install new kernel.

Last edited by Serge; 2008-01-24 at 07:39.
 

The Following 2 Users Say Thank You to Serge For This Useful Post: