Xv and alignment requirements

Daniel Drake dsd at laptop.org
Thu May 30 15:26:50 PDT 2013


Hi,

I am working with a vivante graphics controller in a Marvell ARM SoC
(OLPC XO-4). We are having trouble playing back some I420 video
resolutions with Xv.

The X driver is open source, unfortunately it calls into a proprietary
library to generate commands that are then sent to a GPL kernel
module. (Fortunately there are some ongoing community efforts to
improve the situation)

The code in question is:
http://dev.laptop.org/git/projects/xf86-video-dove/tree/src/dovefb_xv.c#n3404

The hardware only accepts RGB for the "video overlay" functionality.
However, the hardware can also "filter blit" from one format to
another. So the DDX claims that it can support RGB, I420, etc, and
when it encounters a non-RGB format, it does a quick filter blit to
convert it to RGB before piping it into the video overlay. Sounds
sensible.

However, we are finding that the gco2D_FilterBlit() call that makes
this happen requires that each plane of the I420 image is aligned to a
512 byte boundary. And in these problematic videos, that requirement
is not met (it is obviously resolution dependent), so the function
returns an error and no video is shown.

Any suggestions for how to deal with such a requirement at the DDX level?

Is there some way that drivers can offer I420 Xv support but only if
its neatly aligned? What would DDX developers with more experience
than me do here?

Thanks
Daniel


More information about the xorg-devel mailing list