lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <558d1cbf-1765-49b7-acbc-f38d448d0411@collabora.com>
Date: Tue, 27 Jan 2026 13:07:24 +0100
From: AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>
To: Kyrie Wu <kyrie.wu@...iatek.com>, Tiffany Lin <tiffany.lin@...iatek.com>,
 Andrew-CT Chen <andrew-ct.chen@...iatek.com>,
 Yunfei Dong <yunfei.dong@...iatek.com>,
 Mauro Carvalho Chehab <mchehab@...nel.org>, Rob Herring <robh@...nel.org>,
 Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley
 <conor+dt@...nel.org>, Matthias Brugger <matthias.bgg@...il.com>,
 Hans Verkuil <hverkuil@...all.nl>,
 Nicolas Dufresne <nicolas.dufresne@...labora.com>,
 Nathan Hebert <nhebert@...omium.org>, Arnd Bergmann <arnd@...db.de>,
 Irui Wang <irui.wang@...iatek.com>, George Sun <george.sun@...iatek.com>,
 linux-media@...r.kernel.org, devicetree@...r.kernel.org,
 linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
 linux-mediatek@...ts.infradead.org
Cc: Neil Armstrong <neil.armstrong@...aro.org>,
 Andrzej Pietrasiewicz <andrzejtp2010@...il.com>,
 Yilong Zhou <yilong.zhou@...iatek.com>
Subject: Re: [PATCH v7 06/10] media: mediatek: vcodec: Add VP9 Probability
 Size Configuration

Il 27/01/26 03:42, Kyrie Wu ha scritto:
> This commit introduces support for configuring the VP9 decoder
> probability buffer size. It removes hard-coded values and ensures
> chipset-specific buffer sizes are handled dynamically, improving
> maintainability and alignment.

Depending on how you see it, the buffer sizes are still static, as those are
defined in const structures and never change during the entire driver life.

Also, never start a commit description with "this commit" - as it's implicit
that you're describing ... this commit.

Moreover, the hardcoded values are not removed - they're just hardcoded in a
different way - as in, they are now hardcoded as a possibly different value
for each decoder.

A better description would be:


Introduce support for using different probability buffer sizes for different
stateless decoders: in particular, the VP9 decoder can use a different size
on different SoCs because of different hardware capabilities.

Move the hardcoded single probability buffer size value to decoder params,
introduce a new VP9_4K_PROB_BUF_SIZE and assign:
  - VP9_PROB_BUF_SIZE (2560 lines) to legacy SoCs; and
  - VP9_PROB_BUF_SIZE (3840 lines) to newer SoCs (MT8196, MT8189).


After which...
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>

> 
> Signed-off-by: Kyrie Wu <kyrie.wu@...iatek.com>
> ---
>   .../mediatek/vcodec/decoder/mtk_vcodec_dec_drv.h       |  2 ++
>   .../mediatek/vcodec/decoder/mtk_vcodec_dec_stateful.c  |  1 +
>   .../mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c | 10 ++++++++++
>   .../mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c |  4 ++--
>   4 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.h b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.h
> index f38b5dc4bb74..08cc65054de5 100644
> --- a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.h
> +++ b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_drv.h
> @@ -80,10 +80,12 @@ struct vdec_pic_info {
>    * struct mtk_vcodec_dec_params - decoder supported parameters
>    * @level: decoder supported vcodec level
>    * @profile: decoder supported vcodec profile
> + * @prob_size: vp9 decoder probability size
>    */
>   struct mtk_vcodec_dec_params {
>   	s64 level;
>   	s64 profile;
> +	size_t prob_size;
>   };
>   
>   /**
> diff --git a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateful.c b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateful.c
> index a47906b9d717..99c252e0a2e1 100644
> --- a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateful.c
> +++ b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateful.c
> @@ -630,5 +630,6 @@ const struct mtk_vcodec_dec_pdata mtk_vdec_8173_pdata = {
>   	.vp9_params = {
>   		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_4_0,
>   		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_1,
> +		.prob_size = 2560,
>   	},
>   };
> diff --git a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c
> index b571c4ed3f79..ca39ae3571a3 100644
> --- a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c
> +++ b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c
> @@ -10,6 +10,9 @@
>   #include "mtk_vcodec_dec_pm.h"
>   #include "vdec_drv_if.h"
>   
> +#define VP9_PROB_BUF_SIZE 2560
> +#define VP9_4K_PROB_BUF_SIZE 3840
> +
>   /**
>    * struct mtk_stateless_control  - CID control type
>    * @cfg: control configuration
> @@ -841,6 +844,7 @@ const struct mtk_vcodec_dec_pdata mtk_vdec_8183_pdata = {
>   	.vp9_params = {
>   		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_4_0,
>   		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_1,
> +		.prob_size = VP9_PROB_BUF_SIZE,
>   	},
>   };
>   
> @@ -892,6 +896,7 @@ const struct mtk_vcodec_dec_pdata mtk_vdec_8188_pdata = {
>   	.vp9_params = {
>   		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_5_1,
>   		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_2,
> +		.prob_size = VP9_PROB_BUF_SIZE,
>   	},
>   };
>   
> @@ -910,6 +915,7 @@ const struct mtk_vcodec_dec_pdata mtk_vdec_8192_pdata = {
>   	.vp9_params = {
>   		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_5_1,
>   		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_1,
> +		.prob_size = VP9_PROB_BUF_SIZE,
>   	},
>   };
>   
> @@ -928,6 +934,7 @@ const struct mtk_vcodec_dec_pdata mtk_vdec_8195_pdata = {
>   	.vp9_params = {
>   		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_5_2,
>   		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_2,
> +		.prob_size = VP9_PROB_BUF_SIZE,
>   	},
>   };
>   
> @@ -946,6 +953,7 @@ const struct mtk_vcodec_dec_pdata mtk_vdec_8196_pdata = {
>   	.vp9_params = {
>   		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_5_2,
>   		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_2,
> +		.prob_size = VP9_4K_PROB_BUF_SIZE,
>   	},
>   };
>   
> @@ -981,6 +989,7 @@ const struct mtk_vcodec_dec_pdata mtk_vdec_8186_pdata = {
>   	.vp9_params = {
>   		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_4_1,
>   		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_1,
> +		.prob_size = VP9_PROB_BUF_SIZE,
>   	},
>   };
>   
> @@ -1011,5 +1020,6 @@ const struct mtk_vcodec_dec_pdata mtk_vdec_8189_pdata = {
>   	.vp9_params = {
>   		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_5_2,
>   		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_2,
> +		.prob_size = VP9_4K_PROB_BUF_SIZE,
>   	},
>   };
> diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
> index 82e257bd059f..e8ba99d31e74 100644
> --- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
> +++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
> @@ -22,7 +22,6 @@
>   #define VP9_RESET_FRAME_CONTEXT_ALL 3
>   
>   #define VP9_TILE_BUF_SIZE 4096
> -#define VP9_PROB_BUF_SIZE 2560
>   #define VP9_COUNTS_BUF_SIZE 16384
>   
>   #define HDR_FLAG(x) (!!((hdr)->flags & V4L2_VP9_FRAME_FLAG_##x))
> @@ -546,6 +545,7 @@ static int vdec_vp9_slice_alloc_working_buffer(struct vdec_vp9_slice_instance *i
>   					       struct vdec_vp9_slice_vsi *vsi)
>   {
>   	struct mtk_vcodec_dec_ctx *ctx = instance->ctx;
> +	struct mtk_vcodec_dec_dev *pdev = ctx->dev;
>   	enum vdec_vp9_slice_resolution_level level;
>   	/* super blocks */
>   	unsigned int max_sb_w;
> @@ -616,7 +616,7 @@ static int vdec_vp9_slice_alloc_working_buffer(struct vdec_vp9_slice_instance *i
>   	}
>   
>   	if (!instance->prob.va) {
> -		instance->prob.size = VP9_PROB_BUF_SIZE;
> +		instance->prob.size = pdev->vdec_pdata->vp9_params.prob_size;
>   		if (mtk_vcodec_mem_alloc(ctx, &instance->prob))
>   			goto err;
>   	}



Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ