Message ID | 20221115121004.28197-2-quic_vboma@quicinc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix for H265 decoding failure . | expand |
On Tue, Nov 15, 2022 at 4:10 AM <quic_vboma@quicinc.com> wrote: > > From: Viswanath Boma <quic_vboma@quicinc.com> > > Aligned the mismatch of persist1 and scratch1 buffer calculation, > as per the firmware requirements . > > Signed-off-by: Vikash Garodia <vgarodia@qti.qualcomm.com> > Signed-off-by: Viswanath Boma <quic_vboma@quicinc.com> > --- > 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
On 15/11/2022 12:10, quic_vboma@quicinc.com wrote: > From: Viswanath Boma <quic_vboma@quicinc.com> > > Aligned the mismatch of persist1 and scratch1 buffer calculation, > as per the firmware requirements . > > Signed-off-by: Vikash Garodia <vgarodia@qti.qualcomm.com> > Signed-off-by: Viswanath Boma <quic_vboma@quicinc.com> > --- > 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: <stable@vger.kernel.org> # 5.14.x --- bod
On Thu, Dec 1, 2022 at 4:12 PM Nathan Hebert <nhebert@chromium.org> wrote: > > On Tue, Nov 15, 2022 at 4:10 AM <quic_vboma@quicinc.com> wrote: > > > > From: Viswanath Boma <quic_vboma@quicinc.com> > > > > Aligned the mismatch of persist1 and scratch1 buffer calculation, > > as per the firmware requirements . > > > > Signed-off-by: Vikash Garodia <vgarodia@qti.qualcomm.com> > > Signed-off-by: Viswanath Boma <quic_vboma@quicinc.com> > > --- > > 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 <nhebert@chromium.org> > [0]: https://www.itu.int/wftp3/av-arch/jctvc-site/bitstream_exchange/draft_conformance/HEVC_v1/ > > Best regards, > Nathan Hebert
-----Original Message----- From: Nathan Hebert <nhebert@chromium.org> Sent: Saturday, December 3, 2022 1:19 AM To: Viswanath Boma (Temp) (QUIC) <quic_vboma@quicinc.com> Cc: stanimir.varbanov@linaro.org; Andy Gross <agross@kernel.org>; bjorn.andersson@linaro.org; Mauro Carvalho Chehab <mchehab@kernel.org>; linux-media@vger.kernel.org; linux-arm-msm@vger.kernel.org; linux-kernel@vger.kernel.org; Vikash Garodia <vgarodia@qti.qualcomm.com> 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 <nhebert@chromium.org> wrote: > > On Tue, Nov 15, 2022 at 4:10 AM <quic_vboma@quicinc.com> wrote: > > > > From: Viswanath Boma <quic_vboma@quicinc.com> > > > > Aligned the mismatch of persist1 and scratch1 buffer calculation, as > > per the firmware requirements . > > > > Signed-off-by: Vikash Garodia <vgarodia@qti.qualcomm.com> > > Signed-off-by: Viswanath Boma <quic_vboma@quicinc.com> > > --- > > 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 <nhebert@chromium.org> > [0]: > https://www.itu.int/wftp3/av-arch/jctvc-site/bitstream_exchange/draft_ > conformance/HEVC_v1/ > > Best regards, > Nathan Hebert
From: Viswanath Boma <quic_vboma@quicinc.com>
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(-)
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)