[Libva] problem when tiling is disabled on decoded surfaces

Zhao Yakui yakui.zhao at intel.com
Sat Oct 8 00:33:23 UTC 2016


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            :    VAEntrypointEncSlice
>>>        VAProfileMPEG2Main              :    VAEntrypointVLD
>>>        VAProfileMPEG2Main              :    VAEntrypointEncSlice
>>>        VAProfileH264ConstrainedBaseline:    VAEntrypointVLD
>>>        VAProfileH264ConstrainedBaseline:    VAEntrypointEncSlice
>>>        VAProfileH264Main               :    VAEntrypointVLD
>>>        VAProfileH264Main               :    VAEntrypointEncSlice
>>>        VAProfileH264High               :    VAEntrypointVLD
>>>        VAProfileH264High               :    VAEntrypointEncSlice
>>>        VAProfileH264MultiviewHigh      :    VAEntrypointVLD
>>>        VAProfileH264MultiviewHigh      :    VAEntrypointEncSlice
>>>        VAProfileH264StereoHigh         :    VAEntrypointVLD
>>>        VAProfileH264StereoHigh         :    VAEntrypointEncSlice
>>>        VAProfileVC1Simple              :    VAEntrypointVLD
>>>        VAProfileVC1Main                :    VAEntrypointVLD
>>>        VAProfileVC1Advanced            :    VAEntrypointVLD
>>>        VAProfileNone                   :    VAEntrypointVideoProc
>>>        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.
>
>
>



More information about the Libva mailing list