ssvb/xf86-video-fbturbo — pull request #35 by lgeek (2014-05-03 23:00:20+00:00)
Title: RFC: Add abstraction layer between XVideo and device drivers

I have been working on adding hardware acceleration for XVideo
to another hardware platform (Rockchip RK3188). The glue code
in sunxi_video seem to be largely reusable for other similar
devices, so I've ended up changing it to act as an interface
between a device driver and XVideo. This is somewhat similar
to SunxiG2D, which is used as an abstraction layer by multiple
hardware drivers.

Note: This commit is for gathering feedback, please don't
merge it in your main branches since it breaks stuff.

Once we agree on a design, I'm willing to port the Sunxi driver
to use this interface. Note, however, that I don't have any
hardware set up for testing it, so it would be nice if someone
else offered to test it or maybe port it themselves.

In terms of functionally there are two things I've changed:
* I've replaced the clipping stuff with a new function, which clips
the drw area to the visible screen so that no content is attempted
to be rendered off-screen, and at the same time it sets up margins
and offsets for the src area so that only the correct content is
rendered in the visible portion of the drw area. As far as I can
tell, the results from xf86XVClipVideoHelper were not actually used(?)

* The driver struct has a flags field which can be used to control
various features. The only flags I'm introducing is for enabling
or disabling double (well, technically multiple) buffering. I need
this feature for RK3188 since from my tests I can't change the
frame pointer fast enough for video. I could also work around it using
a custom copy_buffer(), but I think that would be quite dirty. :)

I would appreciate a relatively quick discussion so that I can avoid
publishing code depending on this draft. Thank you