[Libva] problem when tiling is disabled on decoded surfaces

Xiang, Haihao haihao.xiang at intel.com
Thu Oct 27 16:00:40 UTC 2016



>-----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.

>
>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.

>
>
>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.kelley at intel.
>	> > com>  wrote:
>	> > > On Thu, Oct 6, 2016 at 1:20 AM, Julien Isorce<julien.isorce 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.org>
>	> 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>
>
>



More information about the Libva mailing list