On 04/04/2018 12:40 PM, Mark Janes wrote:
Leo Liu <leo....@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....@amd.com>
Cc: mesa-sta...@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?
I would like to have this patch apply to branches "17.2", "17.3", "18.0", which got patch titled "radeon/vce: move destroy command before feedback command"

And this Cc-ed patch is to fix "radeon/vce: move destroy command before feedback command"

Thanks,
Leo



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-sta...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-stable

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to