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

Mark Janes mark.a.janes at intel.com
Wed Apr 4 16:40:43 UTC 2018


Leo Liu <leo.liu at amd.com> writes:

> 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

These tags seem ambiguous to me.  If this commit fixes a specific
commit, then the patch should be applied only to stable branches which
contain that commit.

However, the mesa-stable CC caused this patch to be applied to 17.3,
which does *not* contain the broken patch.

Leo: did you intend for the mesa-stable CC to cause this patch to be
applied to older stable branches?

Release managers: is there a protocol for how this specification should
be parsed, when considering a patch for stable?

> ---
>  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
> -- 
> 2.14.1
>
> _______________________________________________
> mesa-stable mailing list
> mesa-stable at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-stable


More information about the mesa-dev mailing list