[Libva] problem when tiling is disabled on decoded surfaces

Sean V Kelley seanvk at posteo.de
Thu Oct 27 18:43:55 UTC 2016


On Thu, 2016-10-27 at 16:00 +0000, Xiang, Haihao wrote:
> > -----Original Message-----
> > From: Julien Isorce [mailto:julien.isorce at gmail.com]
> > Sent: Wednesday, October 26, 2016 4:43 PM
> > To: Xiang, Haihao <haihao.xiang at intel.com>
> > Cc: Zhao, Yakui <yakui.zhao at intel.com>; Kelley, Sean V
> > <sean.v.kelley at intel.com>; libva at lists.freedesktop.org
> > Subject: Re: [Libva] problem when tiling is disabled on decoded
> > surfaces
> > 
> > Hi,
> > 
> > 
> > Thx for the detailed.
> > 
> > 
> > If I understand correctly, the intel HW video decoder can only
> > output a tiled
> > layout. But if I export the surface as a dmabuf and I use mmap on
> > it, I will still
> > be able to access pixels using width/pitch like if it was linear.
> 
> You do not need to export the surface as a dmabuf if you only want to
> access pixels in your program.
> the purpose of exporting a surface as a dmabuf is for buffer sharing.

Indeed, if you do need to use dmabuf export in a non VA_SURFACE
context, we do have changes we need to make in the fugure for better
sharing of the export.

> 
> > 
> > If I need to share it with a non-intel gpu I would need VPP since
> > this unit can
> > output a linear layout (I can configure it by clearing the flag
> > VA_SURFACE_EXTBUF_DESC_ENABLE_TILING when calling vaCreateSurfaces)
> 
> Yes.


Agreed.

Thanks,

Sean

> 
> > 
> > 
> > Is it correct ?
> > 
> > 
> > Cheers
> > 
> > Julien
> > 
> > 
> > 
> > On 8 October 2016 at 04:09, Xiang, Haihao <haihao.xiang at intel.com
> > <mailto:haihao.xiang at intel.com> > wrote:
> > 
> > 
> > 
> > 	Hi Julien,
> > 
> > 	Please do not set obj_surface->user_disable_tiling to true
> > unless you
> > 	know the usage, e.g. your applicate allocates a VA surface via
> > libva
> > 	and shares this surface between libva and camera, some cameras
> > only
> > 	support linear memory.
> > 
> > 	In your case, it is the right behavior if you saw garbage
> > because all
> > 	surfaces are linear however HW requires a tiled surface for
> > decoding.
> > 
> > 	Thanks
> > 	Haihao
> > 
> > 
> > 
> > 	> On 10/08/2016 02:13 AM, Sean V Kelley wrote:
> > 	> > On Fri, Oct 7, 2016 at 11:00 AM, Sean V Kelley<sean.v.kelle
> > y at intel.
> > 	> > com>  wrote:
> > 	> > > On Thu, Oct 6, 2016 at 1:20 AM, Julien Isorce<julien.isor
> > ce at gmail
> > 	> > > .com>  wrote:
> > 	> > > > Hi,
> > 	> > > >
> > 	> > > > In intel vaapi driver I tried disabling tiling with:
> > 	> > > >
> > 	> > > > ---   a/src/i965_drv_video.c
> > 	> > > > +++ b/src/i965_drv_video.c
> > 	> > > > @@ -1534,7 +1534,7 @@ i965_CreateSurfaces2(
> > 	> > > >           obj_surface->orig_height = height;
> > 	> > > > -        obj_surface->user_disable_tiling = false;
> > 	> > > > +       obj_surface->user_disable_tiling = true;
> > 	> > > >           obj_surface->user_h_stride_set = false;
> > 	> > > >
> > 	> > > > But then gst-launch-1.0 filesrc
> > 	> > > > location=~/Downloads/simpson.mp4 ! qtdemux !
> > 	> > > > vaapih264dec ! xvimagesink shows garbage, like if the
> > memory
> > 	> > > > was still
> > 	> > > > tiled.
> > 	> > > >
> > 	> > >
> > 	> > > We implemented disable tiling for a very specific
> > purpose.  We
> > 	> > > were
> > 	> > > sharing surfaces decoded via Imagination Tech driver on a
> > 	> > > Baytrail,
> > 	> > > and wrapped that for the X11 backend rendering.  I was
> > using
> > two
> > 	> > > drivers (IMG and GEN).
> > 	> > > At the time, the driver assumed that all surfaces were
> > 	> > > tiled.  Since
> > 	> > > IMG was not tiled, we needed a way to pass through.  I'll
> > look at
> > 	> > > this
> > 	> > > more closely.
> > 	> > >
> > 	> > > But for hardware GEN decoding we assume the surface to be
> > 	> > > tiled.  The
> > 	> > > intent was never to allow disabling tilint for purposes
> > of actual
> > 	> > > h264
> > 	> > > decode.
> > 	> >
> > 	> > The GEN hardware really only uses the tiling format for
> > 	> > decoding/encoding.  The flag
> > 	> > is historical and used with other drivers (remember VA-API
> > can be
> > 	> > used
> > 	> > with IMG).  In my
> > 	> > case I triggered it by our having added a new VA memory
> > type for
> > 	> > when
> > 	> > I needed to share surfaces.
> > 	> >
> > 	> > But again, we don't decode non-tiled.  We simply give you
> > the
> > 	> > flexibility to create those surfaces non-tiled
> > 	> > for historical and conversion reasons as the one above I
> > gave you.
> > 	>
> > 	> Hi, Julien
> > 	>
> > 	>      What Sean said is correct. When the surface is used for
> > the
> > 	> decoding, it should be tiled, which is the hardware
> > requirement. If
> > 	> it
> > 	> is non-tiled, the hardware can't work as expected.
> > 	>      The non-tiled surface can be used for the other purpose.
> > For
> > 	> example: buffer sharing (Some other componenets/driver wants
> > to
> > share
> > 	> the NV12 buffer with libva driver. And it requires that it is
> > non-
> > 	> tiled.
> > 	> The default buffer for NV12 format is tiled. So one option is
> > added
> > 	> so
> > 	> that the non-tiled NV12 buffer is created).
> > 	>
> > 	>      BTW: the tiling or non-tiling surface is transparent to
> > the
> > 	> upper
> > 	> middleware. Although one tiling buffer is created internally,
> > the
> > 	> upper
> > 	> middleware can map it and then access it based on
> > width/pitch.
> > 	>
> > 	>      Not sure whether it helps to clarify your concerns.
> > 	>
> > 	> Thanks
> > 	>     Yakui
> > 	>
> > 	> >
> > 	> > Sean
> > 	> >
> > 	> >
> > 	> > >
> > 	> > > I'll have to refresh my memory a bit.  I'll let Haihao
> > chime in.
> > 	> > >
> > 	> > > Sean
> > 	> > >
> > 	> > >
> > 	> > > > I tried to debug it and but all calls to
> > dri_bo_get_tiling
> > 	> > > > returns
> > 	> > > > I915_TILING_NONE as expected.
> > 	> > > >
> > 	> > > > Also see vainfo output below.
> > 	> > > >
> > 	> > > > Thx
> > 	> > > > Julien
> > 	> > > >
> > 	> > > > libva info: VA-API version 0.39.4
> > 	> > > > libva info: va_getDriverName() returns 0
> > 	> > > > libva info: Trying to open
> > 	> > > >
> > /home/julien/gst/master/prefix/lib/dri/i965_drv_video.so
> > 	> > > > libva info: Found init function __vaDriverInit_0_39
> > 	> > > > libva info: va_openDriver() returns 0
> > 	> > > > vainfo: VA-API version: 0.39 (libva 1.7.3.pre1)
> > 	> > > > vainfo: Driver version: Intel i965 driver for Intel(R)
> > Haswell
> > 	> > > > Mobile -
> > 	> > > > 1.7.3.pre1 (1.7.2-115-gfa3d1c3)
> > 	> > > > vainfo: Supported profile and entrypoints
> > 	> > >
> > >        VAProfileMPEG2Simple            :    VAEntrypointVLD
> > 	> > >
> > >        VAProfileMPEG2Simple            :    VAEntrypointEncSlic
> > 	> > > > e
> > 	> > >
> > >        VAProfileMPEG2Main              :    VAEntrypointVLD
> > 	> > >
> > >        VAProfileMPEG2Main              :    VAEntrypointEncSlic
> > 	> > > > e
> > 	> > >
> > >        VAProfileH264ConstrainedBaseline:    VAEntrypointVLD
> > 	> > >
> > >        VAProfileH264ConstrainedBaseline:    VAEntrypointEncSlic
> > 	> > > > e
> > 	> > >
> > >        VAProfileH264Main               :    VAEntrypointVLD
> > 	> > >
> > >        VAProfileH264Main               :    VAEntrypointEncSlic
> > 	> > > > e
> > 	> > >
> > >        VAProfileH264High               :    VAEntrypointVLD
> > 	> > >
> > >        VAProfileH264High               :    VAEntrypointEncSlic
> > 	> > > > e
> > 	> > >
> > >        VAProfileH264MultiviewHigh      :    VAEntrypointVLD
> > 	> > >
> > >        VAProfileH264MultiviewHigh      :    VAEntrypointEncSlic
> > 	> > > > e
> > 	> > >
> > >        VAProfileH264StereoHigh         :    VAEntrypointVLD
> > 	> > >
> > >        VAProfileH264StereoHigh         :    VAEntrypointEncSlic
> > 	> > > > e
> > 	> > >
> > >        VAProfileVC1Simple              :    VAEntrypointVLD
> > 	> > >
> > >        VAProfileVC1Main                :    VAEntrypointVLD
> > 	> > >
> > >        VAProfileVC1Advanced            :    VAEntrypointVLD
> > 	> > >
> > >        VAProfileNone                   :    VAEntrypointVideoPr
> > 	> > > > oc
> > 	> > >
> > >        VAProfileJPEGBaseline           :    VAEntrypointVLD
> > 	> > >
> > >        VAProfileVP9Profile0            :    VAEntrypointVLD
> > 	> > > >
> > 	> > > > _______________________________________________
> > 	> > > > Libva mailing list
> > 	> > > > Libva at lists.freedesktop.org
> > <mailto:Libva at lists.freedesktop.org>
> > 	> > > > https://lists.freedesktop.org/mailman/listinfo/libva
> > <https://lists.freedesktop.org/mailman/listinfo/libva>
> > 	> > > >
> > 	> > >
> > 	> > >
> > 	> > >
> > 	> > > --
> > 	> > > Sean V. Kelley<sean.v.kelley at intel.com
> > <mailto:sean.v.kelley at intel.com> >
> > 	> > > Open Source Technology Center / SSG
> > 	> > > Intel Corp.
> > 	> >
> > 	> >
> > 	> >
> > 	>
> > 	> _______________________________________________
> > 	> Libva mailing list
> > 	> Libva at lists.freedesktop.org <mailto:Libva at lists.freedesktop.o
> > rg>
> > 	> https://lists.freedesktop.org/mailman/listinfo/libva
> > <https://lists.freedesktop.org/mailman/listinfo/libva>
> > 	_______________________________________________
> > 	Libva mailing list
> > 	Libva at lists.freedesktop.org <mailto:Libva at lists.freedesktop.org
> > >
> > 	https://lists.freedesktop.org/mailman/listinfo/libva
> > <https://lists.freedesktop.org/mailman/listinfo/libva>
> > 
> > 
> 
> _______________________________________________
> Libva mailing list
> Libva at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/libva
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/libva/attachments/20161027/dd3e6aef/attachment-0001.sig>


More information about the Libva mailing list