[Libva] problem when tiling is disabled on decoded surfaces

Xiang, Haihao haihao.xiang at intel.com
Sat Oct 8 03:09:03 UTC 2016


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
> > > > https://lists.freedesktop.org/mailman/listinfo/libva
> > > > 
> > > 
> > > 
> > > 
> > > --
> > > Sean V. Kelley<sean.v.kelley at intel.com>
> > > Open Source Technology Center / SSG
> > > Intel Corp.
> > 
> > 
> > 
> 
> _______________________________________________
> Libva mailing list
> Libva at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/libva


More information about the Libva mailing list