2022-11-15 12:15:28

by Viswanath Boma

[permalink] [raw]
Subject: [PATCH 1/1] venus : Fix for H265 decoding failure.

From: Viswanath Boma <[email protected]>

Aligned the mismatch of persist1 and scratch1 buffer calculation,
as per the firmware requirements .

Signed-off-by: Vikash Garodia <[email protected]>
Signed-off-by: Viswanath Boma <[email protected]>
---
drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
index ea25c451222b..a9be31ec6927 100644
--- a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
+++ b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
@@ -93,7 +93,7 @@
#define LCU_MIN_SIZE_PELS 16
#define SIZE_SEI_USERDATA 4096

-#define H265D_MAX_SLICE 600
+#define H265D_MAX_SLICE 3600
#define SIZE_H265D_HW_PIC_T SIZE_H264D_HW_PIC_T
#define SIZE_H265D_BSE_CMD_PER_BUF (16 * sizeof(u32))
#define SIZE_H265D_VPP_CMD_PER_BUF 256
@@ -1021,7 +1021,7 @@ static u32 h264d_persist1_size(void)
static u32 h265d_persist1_size(void)
{
return ALIGN((SIZE_SLIST_BUF_H265 * NUM_SLIST_BUF_H265 + H265_NUM_TILE
- * sizeof(u32)), HFI_DMA_ALIGNMENT);
+ * sizeof(u32) + NUM_HW_PIC_BUF * SIZE_SEI_USERDATA), HFI_DMA_ALIGNMENT);
}

static u32 vp8d_persist1_size(void)
--
2.17.1



2022-12-02 00:19:38

by Nathan Hebert

[permalink] [raw]
Subject: Re: [PATCH 1/1] venus : Fix for H265 decoding failure.

On Tue, Nov 15, 2022 at 4:10 AM <[email protected]> wrote:
>
> From: Viswanath Boma <[email protected]>
>
> Aligned the mismatch of persist1 and scratch1 buffer calculation,
> as per the firmware requirements .
>
> Signed-off-by: Vikash Garodia <[email protected]>
> Signed-off-by: Viswanath Boma <[email protected]>
> ---
> drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> index ea25c451222b..a9be31ec6927 100644
> --- a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> +++ b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> @@ -93,7 +93,7 @@
> #define LCU_MIN_SIZE_PELS 16
> #define SIZE_SEI_USERDATA 4096
>
> -#define H265D_MAX_SLICE 600
> +#define H265D_MAX_SLICE 3600
> #define SIZE_H265D_HW_PIC_T SIZE_H264D_HW_PIC_T
> #define SIZE_H265D_BSE_CMD_PER_BUF (16 * sizeof(u32))
> #define SIZE_H265D_VPP_CMD_PER_BUF 256
> @@ -1021,7 +1021,7 @@ static u32 h264d_persist1_size(void)
> static u32 h265d_persist1_size(void)
> {
> return ALIGN((SIZE_SLIST_BUF_H265 * NUM_SLIST_BUF_H265 + H265_NUM_TILE
> - * sizeof(u32)), HFI_DMA_ALIGNMENT);
> + * sizeof(u32) + NUM_HW_PIC_BUF * SIZE_SEI_USERDATA), HFI_DMA_ALIGNMENT);
> }
>
> static u32 vp8d_persist1_size(void)
> --
> 2.17.1
>
Hi Viswanath. I tested this patch on ChromiumOS's downstream
5.15-based fork. Using ITU-T HEVC test vectors [0] I am seeing
firmware errors "qcom-venus-decoder aa00000.video-codec:video-decoder:
VenusMed : event not sufficient resources". Does this change fix HEVC
decoding for you?

[0]: https://www.itu.int/wftp3/av-arch/jctvc-site/bitstream_exchange/draft_conformance/HEVC_v1/

Best regards,
Nathan Hebert

2022-12-02 01:07:29

by Bryan O'Donoghue

[permalink] [raw]
Subject: Re: [PATCH 1/1] venus : Fix for H265 decoding failure.

On 15/11/2022 12:10, [email protected] wrote:
> From: Viswanath Boma <[email protected]>
>
> Aligned the mismatch of persist1 and scratch1 buffer calculation,
> as per the firmware requirements .
>
> Signed-off-by: Vikash Garodia <[email protected]>
> Signed-off-by: Viswanath Boma <[email protected]>
> ---
> drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> index ea25c451222b..a9be31ec6927 100644
> --- a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> +++ b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> @@ -93,7 +93,7 @@
> #define LCU_MIN_SIZE_PELS 16
> #define SIZE_SEI_USERDATA 4096
>
> -#define H265D_MAX_SLICE 600
> +#define H265D_MAX_SLICE 3600
> #define SIZE_H265D_HW_PIC_T SIZE_H264D_HW_PIC_T
> #define SIZE_H265D_BSE_CMD_PER_BUF (16 * sizeof(u32))
> #define SIZE_H265D_VPP_CMD_PER_BUF 256
> @@ -1021,7 +1021,7 @@ static u32 h264d_persist1_size(void)
> static u32 h265d_persist1_size(void)
> {
> return ALIGN((SIZE_SLIST_BUF_H265 * NUM_SLIST_BUF_H265 + H265_NUM_TILE
> - * sizeof(u32)), HFI_DMA_ALIGNMENT);
> + * sizeof(u32) + NUM_HW_PIC_BUF * SIZE_SEI_USERDATA), HFI_DMA_ALIGNMENT);
> }
>
> static u32 vp8d_persist1_size(void)

If this is a real fix it need to be applied elsewhere

Please add a Fixes tag

Fixes: 3a75bf4e7925 ("media: venus: Add platform buffers for v6")

and

Cc: <[email protected]> # 5.14.x

---
bod

2022-12-02 20:12:52

by Nathan Hebert

[permalink] [raw]
Subject: Re: [PATCH 1/1] venus : Fix for H265 decoding failure.

On Thu, Dec 1, 2022 at 4:12 PM Nathan Hebert <[email protected]> wrote:
>
> On Tue, Nov 15, 2022 at 4:10 AM <[email protected]> wrote:
> >
> > From: Viswanath Boma <[email protected]>
> >
> > Aligned the mismatch of persist1 and scratch1 buffer calculation,
> > as per the firmware requirements .
> >
> > Signed-off-by: Vikash Garodia <[email protected]>
> > Signed-off-by: Viswanath Boma <[email protected]>
> > ---
> > drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> > index ea25c451222b..a9be31ec6927 100644
> > --- a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> > +++ b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> > @@ -93,7 +93,7 @@
> > #define LCU_MIN_SIZE_PELS 16
> > #define SIZE_SEI_USERDATA 4096
> >
> > -#define H265D_MAX_SLICE 600
> > +#define H265D_MAX_SLICE 3600
> > #define SIZE_H265D_HW_PIC_T SIZE_H264D_HW_PIC_T
> > #define SIZE_H265D_BSE_CMD_PER_BUF (16 * sizeof(u32))
> > #define SIZE_H265D_VPP_CMD_PER_BUF 256
> > @@ -1021,7 +1021,7 @@ static u32 h264d_persist1_size(void)
> > static u32 h265d_persist1_size(void)
> > {
> > return ALIGN((SIZE_SLIST_BUF_H265 * NUM_SLIST_BUF_H265 + H265_NUM_TILE
> > - * sizeof(u32)), HFI_DMA_ALIGNMENT);
> > + * sizeof(u32) + NUM_HW_PIC_BUF * SIZE_SEI_USERDATA), HFI_DMA_ALIGNMENT);
> > }
> >
> > static u32 vp8d_persist1_size(void)
> > --
> > 2.17.1
> >
> Hi Viswanath. I tested this patch on ChromiumOS's downstream
> 5.15-based fork. Using ITU-T HEVC test vectors [0] I am seeing
> firmware errors "qcom-venus-decoder aa00000.video-codec:video-decoder:
> VenusMed : event not sufficient resources". Does this change fix HEVC
> decoding for you?
>

Hi Viswanath. Thanks for looking at the logs offline. I re-tested
after adding Q08C (UBWC) support to my decoder client, and it fixed
the error that I was seeing. My mistake. Each of the main profile test
vectors now decodes correctly after applying your patch!

Tested-by: Nathan Hebert <[email protected]>

> [0]: https://www.itu.int/wftp3/av-arch/jctvc-site/bitstream_exchange/draft_conformance/HEVC_v1/
>
> Best regards,
> Nathan Hebert

2022-12-05 05:30:36

by Viswanath Boma (Temp)

[permalink] [raw]
Subject: RE: [PATCH 1/1] venus : Fix for H265 decoding failure.



-----Original Message-----
From: Nathan Hebert <[email protected]>
Sent: Saturday, December 3, 2022 1:19 AM
To: Viswanath Boma (Temp) (QUIC) <[email protected]>
Cc: [email protected]; Andy Gross <[email protected]>; [email protected]; Mauro Carvalho Chehab <[email protected]>; [email protected]; [email protected]; [email protected]; Vikash Garodia <[email protected]>
Subject: Re: [PATCH 1/1] venus : Fix for H265 decoding failure.

WARNING: This email originated from outside of Qualcomm. Please be wary of any links or attachments, and do not enable macros.

On Thu, Dec 1, 2022 at 4:12 PM Nathan Hebert <[email protected]> wrote:
>
> On Tue, Nov 15, 2022 at 4:10 AM <[email protected]> wrote:
> >
> > From: Viswanath Boma <[email protected]>
> >
> > Aligned the mismatch of persist1 and scratch1 buffer calculation, as
> > per the firmware requirements .
> >
> > Signed-off-by: Vikash Garodia <[email protected]>
> > Signed-off-by: Viswanath Boma <[email protected]>
> > ---
> > drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> > b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> > index ea25c451222b..a9be31ec6927 100644
> > --- a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> > +++ b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
> > @@ -93,7 +93,7 @@
> > #define LCU_MIN_SIZE_PELS 16
> > #define SIZE_SEI_USERDATA 4096
> >
> > -#define H265D_MAX_SLICE 600
> > +#define H265D_MAX_SLICE 3600
> > #define SIZE_H265D_HW_PIC_T SIZE_H264D_HW_PIC_T
> > #define SIZE_H265D_BSE_CMD_PER_BUF (16 * sizeof(u32))
> > #define SIZE_H265D_VPP_CMD_PER_BUF 256
> > @@ -1021,7 +1021,7 @@ static u32 h264d_persist1_size(void) static
> > u32 h265d_persist1_size(void) {
> > return ALIGN((SIZE_SLIST_BUF_H265 * NUM_SLIST_BUF_H265 + H265_NUM_TILE
> > - * sizeof(u32)), HFI_DMA_ALIGNMENT);
> > + * sizeof(u32) + NUM_HW_PIC_BUF *
> > + SIZE_SEI_USERDATA), HFI_DMA_ALIGNMENT);
> > }
> >
> > static u32 vp8d_persist1_size(void)
> > --
> > 2.17.1
> >
> Hi Viswanath. I tested this patch on ChromiumOS's downstream
> 5.15-based fork. Using ITU-T HEVC test vectors [0] I am seeing
> firmware errors "qcom-venus-decoder aa00000.video-codec:video-decoder:
> VenusMed : event not sufficient resources". Does this change fix HEVC
> decoding for you?
>

Hi Viswanath. Thanks for looking at the logs offline. I re-tested after adding Q08C (UBWC) support to my decoder client, and it fixed the error that I was seeing. My mistake. Each of the main profile test vectors now decodes correctly after applying your patch!
[vboma] Thank you Nathan for the update .

Tested-by: Nathan Hebert <[email protected]>

> [0]:
> https://www.itu.int/wftp3/av-arch/jctvc-site/bitstream_exchange/draft_
> conformance/HEVC_v1/
>
> Best regards,
> Nathan Hebert

2023-03-16 07:57:54

by Viswanath Boma

[permalink] [raw]
Subject: [[v1]PATCH 0/1] Fix for H265 decoding failure .

From: Viswanath Boma <[email protected]>

Fixed strict patch warnings and ensured rebase.

Fixed the buffer size calculation mismatch with firmware requirements.
Tested on v5.15 kernel.
For testing utilised the chrome utilities .


Viswanath Boma (1):
venus : Fix for H265 decoding failure.

drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--
2.17.1


2023-03-16 07:57:57

by Viswanath Boma

[permalink] [raw]
Subject: [PATCH] venus : Fix for H265 decoding failure.

From: Viswanath Boma <[email protected]>

Aligned the mismatch of persist1 and scratch1 buffer calculation,
as per the firmware requirements .

Signed-off-by: Vikash Garodia <[email protected]>
Signed-off-by: Viswanath Boma <[email protected]>
Tested-by: Nathan Hebert <[email protected]>
---
drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
index ea25c451222b..a9be31ec6927 100644
--- a/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
+++ b/drivers/media/platform/qcom/venus/hfi_plat_bufs_v6.c
@@ -93,7 +93,7 @@
#define LCU_MIN_SIZE_PELS 16
#define SIZE_SEI_USERDATA 4096

-#define H265D_MAX_SLICE 600
+#define H265D_MAX_SLICE 3600
#define SIZE_H265D_HW_PIC_T SIZE_H264D_HW_PIC_T
#define SIZE_H265D_BSE_CMD_PER_BUF (16 * sizeof(u32))
#define SIZE_H265D_VPP_CMD_PER_BUF 256
@@ -1021,7 +1021,7 @@ static u32 h264d_persist1_size(void)
static u32 h265d_persist1_size(void)
{
return ALIGN((SIZE_SLIST_BUF_H265 * NUM_SLIST_BUF_H265 + H265_NUM_TILE
- * sizeof(u32)), HFI_DMA_ALIGNMENT);
+ * sizeof(u32) + NUM_HW_PIC_BUF * SIZE_SEI_USERDATA), HFI_DMA_ALIGNMENT);
}

static u32 vp8d_persist1_size(void)
--
2.17.1