[Libva] problem when tiling is disabled on decoded surfaces
Julien Isorce
julien.isorce at gmail.com
Wed Oct 26 08:42:56 UTC 2016
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.
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)
Is it correct ?
Cheers
Julien
On 8 October 2016 at 04:09, Xiang, Haihao <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
> > > > > 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
> _______________________________________________
> Libva mailing list
> Libva at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/libva
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libva/attachments/20161026/837c915d/attachment-0001.html>
More information about the Libva
mailing list