RFC: video with DRI2

Corbin Simpson mostawesomedude at gmail.com
Wed Jul 20 15:28:28 PDT 2011


If I recall correctly, DRI2 can transport VDPAU and there is some
libvdpau stuff in the Mesa/Gallium source tree. I haven't really been
heavily involved, but I would imagine that that might be interesting
to you.

~ C.

On Wed, Jul 20, 2011 at 3:15 PM, Rob Clark <robdclark at gmail.com> wrote:
> All,
>
> I've been looking a bit at dri2 as a way to handle video display (in
> addition to just GL stuff).  Basically it seems like a convenient way
> to share buffer handles between Xorg driver and client video player
> app.  (Yes, I know about Xv.. no, it isn't useful if I want to avoid a
> memcpy.)
>
> The basic differences compared to some 3d/gl app:
> 1) color format..  video content would (most likely) be in some YUV
> format.  No problem for DRI2GetBuffersWithFormat, passing a fourcc as
> the 'format' value seems sane.
>
> 2) attachment points.. for GL you might triple or double buffer.  For
> video you might have >16 buffers.  This mostly seems ok, most of the
> existing dri2.c code seems like it would tolerate me requesting
> non-existing attachment points.  The one bit of awkwardness is that
> DRI2SwapBuffers doesn't let me specify *which* buffers I want to swap.
>  Maybe I could cope by playing some games by changing buffer name to
> buffer object mappings.  The tricky thing to keep in mind is that in
> the video case the buffers would be displayed in a seemingly random
> (to the xorg driver) order, if B-frames are present..  decode order !=
> display order
>
> 3) cropping.. in case you are actually trying to share buffers without
> copy between video codec and Xorg, you probably have some codec edges
> that need to be cropped out.  So you need some way to request buffers
> larger than the target drawable, and specify some x,y offset into that
> larger buffer to find what should appear on screen.  In some cases it
> might even be that the x,y offset is changing frame by frame.
>
>
> Some of these issues go away if you do a blit/colorconvert on client
> side into the DRI2 buffer.  This seems to be what intel vaapi driver
> (and probably others) are doing currently.  Although my ideal goal is
> to push this to xorg side, and let xorg driver decide whether to blit,
> or use an overlay, etc.
>
>
> The approaches I can think of to deal with this are:
> 1) add DRI2Get/SetProperty sort of messages.  Some things like
> cropping offsets and perhaps actual requested buffers sizes could be
> set as properties.  There are some things that are a bit iff'y about
> this.  For example, changing crop should apply on the next
> SwapBuffers.  The good news is it would be easy to later define new
> properties as the need arises.
>
> 2) Add additional parameters to GetBuffers and SwapBuffers
>
> 3) Define some new msgs with extra parameters...
> DRI2GetBufferWithFormatAndMore, etc.
>
>
> Anyone have some opinions on the best approach to take?  Anyone else
> given some thought to this sort of thing before?
>
>
>
> BR,
> -R
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>



-- 
When the facts change, I change my mind. What do you do, sir? ~ Keynes

Corbin Simpson
<MostAwesomeDude at gmail.com>


More information about the xorg-devel mailing list