[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