Message ID | 20240328093439.18712-2-benjamin.gaignard@collabora.com |
---|---|
State | Accepted |
Commit | 65e9f52ffdc8af9c8f68f720554c944b429f7e06 |
Headers | show |
Series | media: verisilicon: Fix auxiliary buffers allocation size | expand |
Hi, Le jeudi 28 mars 2024 à 10:34 +0100, Benjamin Gaignard a écrit : > Use v4l2_av1_tile_info->tile_cols to know the number of colons > in the frame. This made auxiliary buffers meory size computation > more accurate. Seems like this is potentially going to impact some conformance tests. Anything to report from fluster results ? Nicolas > > Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> > Fixes: 727a400686a2 ("media: verisilicon: Add Rockchip AV1 decoder") > --- > .../media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c > index cc4483857489..65e8f2d07400 100644 > --- a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c > +++ b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c > @@ -257,7 +257,8 @@ static int rockchip_vpu981_av1_dec_tiles_reallocate(struct hantro_ctx *ctx) > struct hantro_dev *vpu = ctx->dev; > struct hantro_av1_dec_hw_ctx *av1_dec = &ctx->av1_dec; > struct hantro_av1_dec_ctrls *ctrls = &av1_dec->ctrls; > - unsigned int num_tile_cols = 1 << ctrls->tile_group_entry->tile_col; > + const struct v4l2_av1_tile_info *tile_info = &ctrls->frame->tile_info; > + unsigned int num_tile_cols = tile_info->tile_cols; > unsigned int height = ALIGN(ctrls->frame->frame_height_minus_1 + 1, 64); > unsigned int height_in_sb = height / 64; > unsigned int stripe_num = ((height + 8) + 63) / 64;
Le 05/04/2024 à 10:13, Benjamin Gaignard a écrit : > > Le 04/04/2024 à 20:00, Nicolas Dufresne a écrit : >> Hi, >> >> Le jeudi 28 mars 2024 à 10:34 +0100, Benjamin Gaignard a écrit : >>> Use v4l2_av1_tile_info->tile_cols to know the number of colons >>> in the frame. This made auxiliary buffers meory size computation >>> more accurate. >> Seems like this is potentially going to impact some conformance >> tests. Anything >> to report from fluster results ? > > Flusters AV1 score is the same. > Maybe we have been lucky when allocating memory until now. > That said the test stream have 8 tile columns which is unusual but > admitted by AV1 specifications. Gentle ping, Regards, Benjamin > > Benjamin > >> >> Nicolas >> >>> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> >>> Fixes: 727a400686a2 ("media: verisilicon: Add Rockchip AV1 decoder") >>> --- >>> .../media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git >>> a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c >>> b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c >>> index cc4483857489..65e8f2d07400 100644 >>> --- a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c >>> +++ b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c >>> @@ -257,7 +257,8 @@ static int >>> rockchip_vpu981_av1_dec_tiles_reallocate(struct hantro_ctx *ctx) >>> struct hantro_dev *vpu = ctx->dev; >>> struct hantro_av1_dec_hw_ctx *av1_dec = &ctx->av1_dec; >>> struct hantro_av1_dec_ctrls *ctrls = &av1_dec->ctrls; >>> - unsigned int num_tile_cols = 1 << >>> ctrls->tile_group_entry->tile_col; >>> + const struct v4l2_av1_tile_info *tile_info = >>> &ctrls->frame->tile_info; >>> + unsigned int num_tile_cols = tile_info->tile_cols; >>> unsigned int height = ALIGN(ctrls->frame->frame_height_minus_1 >>> + 1, 64); >>> unsigned int height_in_sb = height / 64; >>> unsigned int stripe_num = ((height + 8) + 63) / 64; >>
Le jeudi 28 mars 2024 à 10:34 +0100, Benjamin Gaignard a écrit : > Use v4l2_av1_tile_info->tile_cols to know the number of colons > in the frame. This made auxiliary buffers meory size computation > more accurate. > > Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> > Fixes: 727a400686a2 ("media: verisilicon: Add Rockchip AV1 decoder") Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> > --- > .../media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c > index cc4483857489..65e8f2d07400 100644 > --- a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c > +++ b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c > @@ -257,7 +257,8 @@ static int rockchip_vpu981_av1_dec_tiles_reallocate(struct hantro_ctx *ctx) > struct hantro_dev *vpu = ctx->dev; > struct hantro_av1_dec_hw_ctx *av1_dec = &ctx->av1_dec; > struct hantro_av1_dec_ctrls *ctrls = &av1_dec->ctrls; > - unsigned int num_tile_cols = 1 << ctrls->tile_group_entry->tile_col; > + const struct v4l2_av1_tile_info *tile_info = &ctrls->frame->tile_info; > + unsigned int num_tile_cols = tile_info->tile_cols; > unsigned int height = ALIGN(ctrls->frame->frame_height_minus_1 + 1, 64); > unsigned int height_in_sb = height / 64; > unsigned int stripe_num = ((height + 8) + 63) / 64;
diff --git a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c index cc4483857489..65e8f2d07400 100644 --- a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c +++ b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c @@ -257,7 +257,8 @@ static int rockchip_vpu981_av1_dec_tiles_reallocate(struct hantro_ctx *ctx) struct hantro_dev *vpu = ctx->dev; struct hantro_av1_dec_hw_ctx *av1_dec = &ctx->av1_dec; struct hantro_av1_dec_ctrls *ctrls = &av1_dec->ctrls; - unsigned int num_tile_cols = 1 << ctrls->tile_group_entry->tile_col; + const struct v4l2_av1_tile_info *tile_info = &ctrls->frame->tile_info; + unsigned int num_tile_cols = tile_info->tile_cols; unsigned int height = ALIGN(ctrls->frame->frame_height_minus_1 + 1, 64); unsigned int height_in_sb = height / 64; unsigned int stripe_num = ((height + 8) + 63) / 64;
Use v4l2_av1_tile_info->tile_cols to know the number of colons in the frame. This made auxiliary buffers meory size computation more accurate. Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Fixes: 727a400686a2 ("media: verisilicon: Add Rockchip AV1 decoder") --- .../media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)