[Mesa-dev] [PATCH 17/20] radeon/uvd: add YUYV format support for target buffer

Leo Liu leo.liu at amd.com
Thu Aug 17 14:28:09 UTC 2017



On 08/17/2017 06:35 AM, Christian König wrote:
> Am 17.08.2017 um 12:27 schrieb Leo Liu:
>>
>>
>> On 08/17/2017 05:15 AM, Christian König wrote:
>>> Am 16.08.2017 um 19:53 schrieb Leo Liu:
>>>> YUYV is a packed YUV format, and there is no chorma plane
>>>>
>>>> v2: add stream type check for YUYV pitch setup
>>>>
>>>> Signed-off-by: Leo Liu <leo.liu at amd.com>
>>>> ---
>>>>   src/gallium/drivers/radeon/radeon_uvd.c | 8 ++++++--
>>>>   src/gallium/drivers/radeonsi/si_uvd.c   | 2 +-
>>>>   2 files changed, 7 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/src/gallium/drivers/radeon/radeon_uvd.c 
>>>> b/src/gallium/drivers/radeon/radeon_uvd.c
>>>> index b6106c6e1f..e809e24405 100644
>>>> --- a/src/gallium/drivers/radeon/radeon_uvd.c
>>>> +++ b/src/gallium/drivers/radeon/radeon_uvd.c
>>>> @@ -1547,6 +1547,8 @@ void ruvd_set_dt_surfaces(struct ruvd_msg 
>>>> *msg, struct radeon_surf *luma,
>>>>       default:
>>>>       case RUVD_SURFACE_TYPE_LEGACY:
>>>>           msg->body.decode.dt_pitch = luma->u.legacy.level[0].nblk_x;
>>>> +        if (msg->body.decode.stream_type == RUVD_CODEC_MJPEG && 
>>>> !chroma)
>>>> +            msg->body.decode.dt_pitch *= 2;
>>>
>>> That still doesn't look correct to me. Please try the following 
>>> instead:
>>>
>>> msg->body.decode.dt_pitch = luma->u.legacy.level[0].nblk_x * luma->bpe;
>>>
>>> Does that work as well?
>>
>> I think it works. I tried that in the very beginning, but I have to 
>> double check when back to the office later.

Unfortunately, it doesn't work. NV12 luma->bpe is 1, YUYV bpe is 4.
In order to get it work. It has to be luma->u.legacy.level[0].nblk_x * 
(luma->bpe / 2). i.e originally "msg->body.decode.dt_pitch *= 2".

I am going to check with firmware guys. In the meantime, any ideas?

Leo

>>
>>
>> There was a patch back to March "radeon/UVD: fix the decoding target 
>> pitch calculation" removed "bpe" for normal NV12 format.
>
> Crap, yeah. That was for 10bit handling.
>
>>
>> so I think for this YUYV, we still need condition, and code will be like
>>
>> if (msg->body.decode.stream_type == RUVD_CODEC_MJPEG && !chroma)
>>    msg->body.decode.dt_pitch = luma->u.legacy.level[0].nblk_x * 
>> luma->bpe;
>
> Looks like the firmware guys interpret the dt_pitch field differently 
> depending on the codec.
>
> Feel free to add my rb on this version, but if you have time please 
> double check with the firmware team what they really expect.
>
>> Other than that, could you review the patch 1 v2 ? that's the only 
>> one left not reviewed in the series after this "pitch" one.
>



More information about the mesa-dev mailing list