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

2018-03-21 Thread Leo Liu



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 .

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 
Cc: mesa-sta...@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 = 
  enc->session(enc);
  enc->destroy(enc);
-    enc->feedback(enc);
  flush(enc);
  si_vid_destroy_buffer();
  }
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, 0x0001, 0, 0, 0);
  +    feedback(enc);
+
  RVCE_BEGIN(0x0201); // 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, 0x0001, 0, 0, 0);
-
-    RVCE_BEGIN(0x0201); // destroy
-    RVCE_END();
-}
-
  static void feedback(struct rvce_encoder *enc)
  {
  RVCE_BEGIN(0x0505); // 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, 0x0001, 0, 0, 0);
+
+    feedback(enc);
+
+    RVCE_BEGIN(0x0201); // destroy
+    RVCE_END();
+}
+
  static void motion_estimation(struct rvce_encoder *enc)
  {
  RVCE_BEGIN(0x0407); // motion estimation


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




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


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

2018-03-21 Thread Christian König
Can't 100% judge if that is correct, but on first glance it seems to 
make sense.


Patch is Acked-by: Christian König .

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 
Cc: mesa-sta...@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 = 
  enc->session(enc);
  enc->destroy(enc);
-    enc->feedback(enc);
  flush(enc);
  si_vid_destroy_buffer();
  }
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, 0x0001, 0, 0, 0);
  +    feedback(enc);
+
  RVCE_BEGIN(0x0201); // 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, 0x0001, 0, 0, 0);
-
-    RVCE_BEGIN(0x0201); // destroy
-    RVCE_END();
-}
-
  static void feedback(struct rvce_encoder *enc)
  {
  RVCE_BEGIN(0x0505); // 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, 0x0001, 0, 0, 0);
+
+    feedback(enc);
+
+    RVCE_BEGIN(0x0201); // destroy
+    RVCE_END();
+}
+
  static void motion_estimation(struct rvce_encoder *enc)
  {
  RVCE_BEGIN(0x0407); // motion estimation


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


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


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

2018-03-21 Thread 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 
Cc: mesa-sta...@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 = 
enc->session(enc);
enc->destroy(enc);
-   enc->feedback(enc);
flush(enc);
si_vid_destroy_buffer();
}
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, 0x0001, 0, 0, 0);
  
+	feedback(enc);

+
RVCE_BEGIN(0x0201); // 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, 0x0001, 0, 0, 0);
-
-   RVCE_BEGIN(0x0201); // destroy
-   RVCE_END();
-}
-
  static void feedback(struct rvce_encoder *enc)
  {
RVCE_BEGIN(0x0505); // 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, 0x0001, 0, 0, 0);
+
+   feedback(enc);
+
+   RVCE_BEGIN(0x0201); // destroy
+   RVCE_END();
+}
+
  static void motion_estimation(struct rvce_encoder *enc)
  {
RVCE_BEGIN(0x0407); // motion estimation


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