[Mesa-stable] [Mesa-dev] [PATCH] radeon/vce: move feedback command inside of destroy function

Leo Liu leo.liu at amd.com
Wed Mar 21 14:28:47 UTC 2018



On 03/21/2018 10:25 AM, Christian König wrote:
> Can't 100% judge if that is correct, but on first glance it seems to 
> make sense.
It all depends on how firmware handle it. The only thing we could do is 
to verify on different generation of HW as much as possible.

Thanks,
Leo


>
> Patch is Acked-by: Christian König <christian.koenig at amd.com>.
>
> Regards,
> Christian.
>
> Am 21.03.2018 um 15:22 schrieb Leo Liu:
>> Ping.
>>
>>
>> On 03/19/2018 01:11 PM, Leo Liu wrote:
>>> On the CI family, firmware requires the destory command have to be the
>>> last command in the IB, moving feedback command after destroy is 
>>> causing
>>> issues on CI cards, so we have to keep the previous logic that moves
>>> destroy back to the last command.
>>>
>>> But as the original issue fixed previously, with the newer family 
>>> like Vega10,
>>> feedback command have to be included inside of the task info command 
>>> along
>>> with destroy command.
>>>
>>> Fixes: 6d74cb25("radeon/vce: move destroy command before feedback 
>>> command")
>>>
>>> Signed-off-by: Leo Liu <leo.liu at amd.com>
>>> Cc: mesa-stable at lists.freedesktop.org
>>> ---
>>>   src/gallium/drivers/radeon/radeon_vce.c        |  1 -
>>>   src/gallium/drivers/radeon/radeon_vce_40_2_2.c |  2 ++
>>>   src/gallium/drivers/radeon/radeon_vce_52.c     | 18 
>>> ++++++++++--------
>>>   3 files changed, 12 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/src/gallium/drivers/radeon/radeon_vce.c 
>>> b/src/gallium/drivers/radeon/radeon_vce.c
>>> index 427bf01ed8..c84103e0ac 100644
>>> --- a/src/gallium/drivers/radeon/radeon_vce.c
>>> +++ b/src/gallium/drivers/radeon/radeon_vce.c
>>> @@ -247,7 +247,6 @@ static void rvce_destroy(struct pipe_video_codec 
>>> *encoder)
>>>           enc->fb = &fb;
>>>           enc->session(enc);
>>>           enc->destroy(enc);
>>> -        enc->feedback(enc);
>>>           flush(enc);
>>>           si_vid_destroy_buffer(&fb);
>>>       }
>>> diff --git a/src/gallium/drivers/radeon/radeon_vce_40_2_2.c 
>>> b/src/gallium/drivers/radeon/radeon_vce_40_2_2.c
>>> index f1db47d4bd..04e9d7f5e1 100644
>>> --- a/src/gallium/drivers/radeon/radeon_vce_40_2_2.c
>>> +++ b/src/gallium/drivers/radeon/radeon_vce_40_2_2.c
>>> @@ -421,6 +421,8 @@ static void destroy(struct rvce_encoder *enc)
>>>   {
>>>       enc->task_info(enc, 0x00000001, 0, 0, 0);
>>>   +    feedback(enc);
>>> +
>>>       RVCE_BEGIN(0x02000001); // destroy
>>>       RVCE_END();
>>>   }
>>> diff --git a/src/gallium/drivers/radeon/radeon_vce_52.c 
>>> b/src/gallium/drivers/radeon/radeon_vce_52.c
>>> index a941c476f6..421539c4bd 100644
>>> --- a/src/gallium/drivers/radeon/radeon_vce_52.c
>>> +++ b/src/gallium/drivers/radeon/radeon_vce_52.c
>>> @@ -458,14 +458,6 @@ static void config_extension(struct 
>>> rvce_encoder *enc)
>>>       RVCE_END();
>>>   }
>>>   -static void destroy(struct rvce_encoder *enc)
>>> -{
>>> -    enc->task_info(enc, 0x00000001, 0, 0, 0);
>>> -
>>> -    RVCE_BEGIN(0x02000001); // destroy
>>> -    RVCE_END();
>>> -}
>>> -
>>>   static void feedback(struct rvce_encoder *enc)
>>>   {
>>>       RVCE_BEGIN(0x05000005); // feedback buffer
>>> @@ -474,6 +466,16 @@ static void feedback(struct rvce_encoder *enc)
>>>       RVCE_END();
>>>   }
>>>   +static void destroy(struct rvce_encoder *enc)
>>> +{
>>> +    enc->task_info(enc, 0x00000001, 0, 0, 0);
>>> +
>>> +    feedback(enc);
>>> +
>>> +    RVCE_BEGIN(0x02000001); // destroy
>>> +    RVCE_END();
>>> +}
>>> +
>>>   static void motion_estimation(struct rvce_encoder *enc)
>>>   {
>>>       RVCE_BEGIN(0x04000007); // motion estimation
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>



More information about the mesa-stable mailing list