[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