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