public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] media: venus: fix NV12 buffer sizing and incorrect capability alignment
@ 2026-03-31  4:37 Renjiang Han
  2026-03-31  4:37 ` [PATCH 1/3] media: qcom: venus: drop extra padding in NV12 raw size calculation Renjiang Han
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Renjiang Han @ 2026-03-31  4:37 UTC (permalink / raw)
  To: Vikash Garodia, Dikshita Agarwal, Bryan O'Donoghue,
	Mauro Carvalho Chehab, Alexandre Courbot, Stanimir Varbanov,
	Tomasz Figa, Hans Verkuil
  Cc: Mauro Carvalho Chehab, linux-media, linux-arm-msm, linux-kernel,
	Mauro Carvalho Chehab, Renjiang Han

The NV12 frame size calculation adds unnecessary 4K/8K padding, leading
to buffer overallocation. The redundant padding is removed while keeping
final 4K alignment. In addition, HFI platform capabilities advertise an
overly strict 16-pixel alignment for frame and blur dimensions, which
can reject valid userspace configurations. The alignment step is relaxed
to 1 without changing min/max limits.

Signed-off-by: Renjiang Han <renjiang.han@oss.qualcomm.com>
---
Renjiang Han (3):
      media: qcom: venus: drop extra padding in NV12 raw size calculation
      media: qcom: venus: relax encoder frame/blur dimension steps on v4
      media: qcom: venus: relax encoder frame/blur step size on v6

 drivers/media/platform/qcom/venus/helpers.c         |  4 ++--
 drivers/media/platform/qcom/venus/hfi_platform_v4.c | 20 ++++++++++----------
 drivers/media/platform/qcom/venus/hfi_platform_v6.c | 16 ++++++++--------
 3 files changed, 20 insertions(+), 20 deletions(-)
---
base-commit: 3b058d1aeeeff27a7289529c4944291613b364e9
change-id: 20260331-fix_venus_bug_issue-e92badece1fe

Best regards,
-- 
Renjiang Han <renjiang.han@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/3] media: qcom: venus: drop extra padding in NV12 raw size calculation
  2026-03-31  4:37 [PATCH 0/3] media: venus: fix NV12 buffer sizing and incorrect capability alignment Renjiang Han
@ 2026-03-31  4:37 ` Renjiang Han
  2026-04-06  6:00   ` Dikshita Agarwal
  2026-03-31  4:37 ` [PATCH 2/3] media: qcom: venus: relax encoder frame/blur dimension steps on v4 Renjiang Han
  2026-03-31  4:37 ` [PATCH 3/3] media: qcom: venus: relax encoder frame/blur step size on v6 Renjiang Han
  2 siblings, 1 reply; 7+ messages in thread
From: Renjiang Han @ 2026-03-31  4:37 UTC (permalink / raw)
  To: Vikash Garodia, Dikshita Agarwal, Bryan O'Donoghue,
	Mauro Carvalho Chehab, Alexandre Courbot, Stanimir Varbanov,
	Tomasz Figa, Hans Verkuil
  Cc: Mauro Carvalho Chehab, linux-media, linux-arm-msm, linux-kernel,
	Mauro Carvalho Chehab, Renjiang Han

get_framesize_raw_nv12() currently adds SZ_4K to the UV plane size and an
additional SZ_8K to the total buffer size. This inflates the calculated
sizeimage and leads userspace to over-allocate buffers without a clear
requirement.

Remove the extra SZ_4K/SZ_8K padding and compute the NV12 size as the sum
of Y and UV planes, keeping the final ALIGN(size, SZ_4K) intact.

Fixes: e1cb72de702ad ("media: venus: helpers: move frame size calculations on common place")
Signed-off-by: Renjiang Han <renjiang.han@oss.qualcomm.com>
---
 drivers/media/platform/qcom/venus/helpers.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/qcom/venus/helpers.c b/drivers/media/platform/qcom/venus/helpers.c
index 747c388fe25fa30770ac2e81d42f4daf83d74ddf..59eee3dd9e06c27165f29fc034d151eb13cd2349 100644
--- a/drivers/media/platform/qcom/venus/helpers.c
+++ b/drivers/media/platform/qcom/venus/helpers.c
@@ -954,8 +954,8 @@ static u32 get_framesize_raw_nv12(u32 width, u32 height)
 	uv_sclines = ALIGN(((height + 1) >> 1), 16);
 
 	y_plane = y_stride * y_sclines;
-	uv_plane = uv_stride * uv_sclines + SZ_4K;
-	size = y_plane + uv_plane + SZ_8K;
+	uv_plane = uv_stride * uv_sclines;
+	size = y_plane + uv_plane;
 
 	return ALIGN(size, SZ_4K);
 }

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/3] media: qcom: venus: relax encoder frame/blur dimension steps on v4
  2026-03-31  4:37 [PATCH 0/3] media: venus: fix NV12 buffer sizing and incorrect capability alignment Renjiang Han
  2026-03-31  4:37 ` [PATCH 1/3] media: qcom: venus: drop extra padding in NV12 raw size calculation Renjiang Han
@ 2026-03-31  4:37 ` Renjiang Han
  2026-04-06  6:01   ` Dikshita Agarwal
  2026-03-31  4:37 ` [PATCH 3/3] media: qcom: venus: relax encoder frame/blur step size on v6 Renjiang Han
  2 siblings, 1 reply; 7+ messages in thread
From: Renjiang Han @ 2026-03-31  4:37 UTC (permalink / raw)
  To: Vikash Garodia, Dikshita Agarwal, Bryan O'Donoghue,
	Mauro Carvalho Chehab, Alexandre Courbot, Stanimir Varbanov,
	Tomasz Figa, Hans Verkuil
  Cc: Mauro Carvalho Chehab, linux-media, linux-arm-msm, linux-kernel,
	Mauro Carvalho Chehab, Renjiang Han

Encoder HFI capabilities on v4 advertise a 16-pixel step for frame and
blur dimensions. This is overly restrictive and can cause userspace caps
negotiation to fail even for valid resolutions.

Relax the advertised step size to 1 and keep alignment enforcement in
buffer layout and size calculations.

Fixes: 8b88cabef404e ("media: venus: hfi_plat_v4: Populate codecs and capabilities for v4")
Signed-off-by: Renjiang Han <renjiang.han@oss.qualcomm.com>
---
 drivers/media/platform/qcom/venus/hfi_platform_v4.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/media/platform/qcom/venus/hfi_platform_v4.c b/drivers/media/platform/qcom/venus/hfi_platform_v4.c
index cda888b56b5d4806f10d062371b9a4969e27d9b4..e0b3652bb44093111ce610fb09366c38db516966 100644
--- a/drivers/media/platform/qcom/venus/hfi_platform_v4.c
+++ b/drivers/media/platform/qcom/venus/hfi_platform_v4.c
@@ -136,8 +136,8 @@ static const struct hfi_plat_caps caps[] = {
 	.codec = HFI_VIDEO_CODEC_H264,
 	.domain = VIDC_SESSION_TYPE_ENC,
 	.cap_bufs_mode_dynamic = true,
-	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 16},
-	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 16},
+	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 1},
+	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 1},
 	.caps[2] = {HFI_CAPABILITY_MBS_PER_FRAME, 1, 36864, 1},
 	.caps[3] = {HFI_CAPABILITY_BITRATE, 1, 120000000, 1},
 	.caps[4] = {HFI_CAPABILITY_SCALE_X, 8192, 65536, 1},
@@ -173,8 +173,8 @@ static const struct hfi_plat_caps caps[] = {
 	.codec = HFI_VIDEO_CODEC_HEVC,
 	.domain = VIDC_SESSION_TYPE_ENC,
 	.cap_bufs_mode_dynamic = true,
-	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 16},
-	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 16},
+	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 1},
+	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 1},
 	.caps[2] = {HFI_CAPABILITY_MBS_PER_FRAME, 1, 36864, 1},
 	.caps[3] = {HFI_CAPABILITY_BITRATE, 1, 120000000, 1},
 	.caps[4] = {HFI_CAPABILITY_SCALE_X, 8192, 65536, 1},
@@ -195,8 +195,8 @@ static const struct hfi_plat_caps caps[] = {
 	.caps[19] = {HFI_CAPABILITY_RATE_CONTROL_MODES, 0x1000001, 0x1000005, 1},
 	.caps[20] = {HFI_CAPABILITY_COLOR_SPACE_CONVERSION, 0, 2, 1},
 	.caps[21] = {HFI_CAPABILITY_ROTATION, 1, 4, 90},
-	.caps[22] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 16},
-	.caps[23] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 16},
+	.caps[22] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 1},
+	.caps[23] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 1},
 	.num_caps = 24,
 	.pl[0] = {HFI_HEVC_PROFILE_MAIN, HFI_HEVC_LEVEL_6 | HFI_HEVC_TIER_HIGH0},
 	.pl[1] = {HFI_HEVC_PROFILE_MAIN10, HFI_HEVC_LEVEL_6 | HFI_HEVC_TIER_HIGH0},
@@ -210,8 +210,8 @@ static const struct hfi_plat_caps caps[] = {
 	.codec = HFI_VIDEO_CODEC_VP8,
 	.domain = VIDC_SESSION_TYPE_ENC,
 	.cap_bufs_mode_dynamic = true,
-	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 16},
-	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 16},
+	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 1},
+	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 1},
 	.caps[2] = {HFI_CAPABILITY_MBS_PER_FRAME, 1, 36864, 1},
 	.caps[3] = {HFI_CAPABILITY_BITRATE, 1, 120000000, 1},
 	.caps[4] = {HFI_CAPABILITY_SCALE_X, 8192, 65536, 1},
@@ -229,8 +229,8 @@ static const struct hfi_plat_caps caps[] = {
 	.caps[16] = {HFI_CAPABILITY_P_FRAME_QP, 0, 127, 1},
 	.caps[17] = {HFI_CAPABILITY_MAX_WORKMODES, 1, 2, 1},
 	.caps[18] = {HFI_CAPABILITY_RATE_CONTROL_MODES, 0x1000001, 0x1000005, 1},
-	.caps[19] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 16},
-	.caps[20] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 16},
+	.caps[19] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 1},
+	.caps[20] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 1},
 	.caps[21] = {HFI_CAPABILITY_COLOR_SPACE_CONVERSION, 0, 2, 1},
 	.caps[22] = {HFI_CAPABILITY_ROTATION, 1, 4, 90},
 	.num_caps = 23,

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/3] media: qcom: venus: relax encoder frame/blur step size on v6
  2026-03-31  4:37 [PATCH 0/3] media: venus: fix NV12 buffer sizing and incorrect capability alignment Renjiang Han
  2026-03-31  4:37 ` [PATCH 1/3] media: qcom: venus: drop extra padding in NV12 raw size calculation Renjiang Han
  2026-03-31  4:37 ` [PATCH 2/3] media: qcom: venus: relax encoder frame/blur dimension steps on v4 Renjiang Han
@ 2026-03-31  4:37 ` Renjiang Han
  2026-04-06  6:01   ` Dikshita Agarwal
  2 siblings, 1 reply; 7+ messages in thread
From: Renjiang Han @ 2026-03-31  4:37 UTC (permalink / raw)
  To: Vikash Garodia, Dikshita Agarwal, Bryan O'Donoghue,
	Mauro Carvalho Chehab, Alexandre Courbot, Stanimir Varbanov,
	Tomasz Figa, Hans Verkuil
  Cc: Mauro Carvalho Chehab, linux-media, linux-arm-msm, linux-kernel,
	Mauro Carvalho Chehab, Renjiang Han

Encoder HFI capabilities on v6 enforce a 16-pixel step for frame and blur
dimensions, which does not reflect actual hardware requirements and can
reject valid userspace configurations.

Relax the step size to 1 while leaving min/max limits unchanged.

Fixes: 869d77e706290 ("media: venus: hfi_plat_v6: Populate capabilities for v6")
Signed-off-by: Renjiang Han <renjiang.han@oss.qualcomm.com>
---
 drivers/media/platform/qcom/venus/hfi_platform_v6.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/qcom/venus/hfi_platform_v6.c b/drivers/media/platform/qcom/venus/hfi_platform_v6.c
index d8568c08cc3612a0024d36f65c741151a23459c3..fb8d10ab34043ee676bd7adcf9420d4274ce9d78 100644
--- a/drivers/media/platform/qcom/venus/hfi_platform_v6.c
+++ b/drivers/media/platform/qcom/venus/hfi_platform_v6.c
@@ -173,8 +173,8 @@ static const struct hfi_plat_caps caps[] = {
 	.codec = HFI_VIDEO_CODEC_HEVC,
 	.domain = VIDC_SESSION_TYPE_ENC,
 	.cap_bufs_mode_dynamic = true,
-	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 128, 8192, 16},
-	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 128, 8192, 16},
+	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 128, 8192, 1},
+	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 128, 8192, 1},
 	.caps[2] = {HFI_CAPABILITY_MBS_PER_FRAME, 64, 138240, 1},
 	.caps[3] = {HFI_CAPABILITY_BITRATE, 1, 160000000, 1},
 	.caps[4] = {HFI_CAPABILITY_SCALE_X, 8192, 65536, 1},
@@ -195,8 +195,8 @@ static const struct hfi_plat_caps caps[] = {
 	.caps[19] = {HFI_CAPABILITY_RATE_CONTROL_MODES, 0x1000001, 0x1000005, 1},
 	.caps[20] = {HFI_CAPABILITY_COLOR_SPACE_CONVERSION, 0, 2, 1},
 	.caps[21] = {HFI_CAPABILITY_ROTATION, 1, 4, 90},
-	.caps[22] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 16},
-	.caps[23] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 16},
+	.caps[22] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 1},
+	.caps[23] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 1},
 	.num_caps = 24,
 	.pl[0] = {HFI_HEVC_PROFILE_MAIN, HFI_HEVC_LEVEL_6 | HFI_HEVC_TIER_HIGH0},
 	.pl[1] = {HFI_HEVC_PROFILE_MAIN10, HFI_HEVC_LEVEL_6 | HFI_HEVC_TIER_HIGH0},
@@ -210,8 +210,8 @@ static const struct hfi_plat_caps caps[] = {
 	.codec = HFI_VIDEO_CODEC_VP8,
 	.domain = VIDC_SESSION_TYPE_ENC,
 	.cap_bufs_mode_dynamic = true,
-	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 128, 4096, 16},
-	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 128, 4096, 16},
+	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 128, 4096, 1},
+	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 128, 4096, 1},
 	.caps[2] = {HFI_CAPABILITY_MBS_PER_FRAME, 64, 36864, 1},
 	.caps[3] = {HFI_CAPABILITY_BITRATE, 1, 74000000, 1},
 	.caps[4] = {HFI_CAPABILITY_SCALE_X, 8192, 65536, 1},
@@ -229,8 +229,8 @@ static const struct hfi_plat_caps caps[] = {
 	.caps[16] = {HFI_CAPABILITY_P_FRAME_QP, 0, 127, 1},
 	.caps[17] = {HFI_CAPABILITY_MAX_WORKMODES, 1, 2, 1},
 	.caps[18] = {HFI_CAPABILITY_RATE_CONTROL_MODES, 0x1000001, 0x1000005, 1},
-	.caps[19] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 16},
-	.caps[20] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 16},
+	.caps[19] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 1},
+	.caps[20] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 1},
 	.caps[21] = {HFI_CAPABILITY_COLOR_SPACE_CONVERSION, 0, 2, 1},
 	.caps[22] = {HFI_CAPABILITY_ROTATION, 1, 4, 90},
 	.num_caps = 23,

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] media: qcom: venus: drop extra padding in NV12 raw size calculation
  2026-03-31  4:37 ` [PATCH 1/3] media: qcom: venus: drop extra padding in NV12 raw size calculation Renjiang Han
@ 2026-04-06  6:00   ` Dikshita Agarwal
  0 siblings, 0 replies; 7+ messages in thread
From: Dikshita Agarwal @ 2026-04-06  6:00 UTC (permalink / raw)
  To: Renjiang Han, Vikash Garodia, Bryan O'Donoghue,
	Mauro Carvalho Chehab, Alexandre Courbot, Stanimir Varbanov,
	Tomasz Figa, Hans Verkuil
  Cc: Mauro Carvalho Chehab, linux-media, linux-arm-msm, linux-kernel,
	Mauro Carvalho Chehab



On 3/31/2026 10:07 AM, Renjiang Han wrote:
> get_framesize_raw_nv12() currently adds SZ_4K to the UV plane size and an
> additional SZ_8K to the total buffer size. This inflates the calculated
> sizeimage and leads userspace to over-allocate buffers without a clear
> requirement.
> 
> Remove the extra SZ_4K/SZ_8K padding and compute the NV12 size as the sum
> of Y and UV planes, keeping the final ALIGN(size, SZ_4K) intact.
> 
> Fixes: e1cb72de702ad ("media: venus: helpers: move frame size calculations on common place")
> Signed-off-by: Renjiang Han <renjiang.han@oss.qualcomm.com>
> ---
>  drivers/media/platform/qcom/venus/helpers.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/platform/qcom/venus/helpers.c b/drivers/media/platform/qcom/venus/helpers.c
> index 747c388fe25fa30770ac2e81d42f4daf83d74ddf..59eee3dd9e06c27165f29fc034d151eb13cd2349 100644
> --- a/drivers/media/platform/qcom/venus/helpers.c
> +++ b/drivers/media/platform/qcom/venus/helpers.c
> @@ -954,8 +954,8 @@ static u32 get_framesize_raw_nv12(u32 width, u32 height)
>  	uv_sclines = ALIGN(((height + 1) >> 1), 16);
>  
>  	y_plane = y_stride * y_sclines;
> -	uv_plane = uv_stride * uv_sclines + SZ_4K;
> -	size = y_plane + uv_plane + SZ_8K;
> +	uv_plane = uv_stride * uv_sclines;
> +	size = y_plane + uv_plane;
>  
>  	return ALIGN(size, SZ_4K);
>  }
> 

Reviewed-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>

Thanks,
Dikshita

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/3] media: qcom: venus: relax encoder frame/blur dimension steps on v4
  2026-03-31  4:37 ` [PATCH 2/3] media: qcom: venus: relax encoder frame/blur dimension steps on v4 Renjiang Han
@ 2026-04-06  6:01   ` Dikshita Agarwal
  0 siblings, 0 replies; 7+ messages in thread
From: Dikshita Agarwal @ 2026-04-06  6:01 UTC (permalink / raw)
  To: Renjiang Han, Vikash Garodia, Bryan O'Donoghue,
	Mauro Carvalho Chehab, Alexandre Courbot, Stanimir Varbanov,
	Tomasz Figa, Hans Verkuil
  Cc: Mauro Carvalho Chehab, linux-media, linux-arm-msm, linux-kernel,
	Mauro Carvalho Chehab



On 3/31/2026 10:07 AM, Renjiang Han wrote:
> Encoder HFI capabilities on v4 advertise a 16-pixel step for frame and
> blur dimensions. This is overly restrictive and can cause userspace caps
> negotiation to fail even for valid resolutions.
> 
> Relax the advertised step size to 1 and keep alignment enforcement in
> buffer layout and size calculations.
> 
> Fixes: 8b88cabef404e ("media: venus: hfi_plat_v4: Populate codecs and capabilities for v4")
> Signed-off-by: Renjiang Han <renjiang.han@oss.qualcomm.com>
> ---
>  drivers/media/platform/qcom/venus/hfi_platform_v4.c | 20 ++++++++++----------
>  1 file changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/media/platform/qcom/venus/hfi_platform_v4.c b/drivers/media/platform/qcom/venus/hfi_platform_v4.c
> index cda888b56b5d4806f10d062371b9a4969e27d9b4..e0b3652bb44093111ce610fb09366c38db516966 100644
> --- a/drivers/media/platform/qcom/venus/hfi_platform_v4.c
> +++ b/drivers/media/platform/qcom/venus/hfi_platform_v4.c
> @@ -136,8 +136,8 @@ static const struct hfi_plat_caps caps[] = {
>  	.codec = HFI_VIDEO_CODEC_H264,
>  	.domain = VIDC_SESSION_TYPE_ENC,
>  	.cap_bufs_mode_dynamic = true,
> -	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 16},
> -	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 16},
> +	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 1},
> +	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 1},
>  	.caps[2] = {HFI_CAPABILITY_MBS_PER_FRAME, 1, 36864, 1},
>  	.caps[3] = {HFI_CAPABILITY_BITRATE, 1, 120000000, 1},
>  	.caps[4] = {HFI_CAPABILITY_SCALE_X, 8192, 65536, 1},
> @@ -173,8 +173,8 @@ static const struct hfi_plat_caps caps[] = {
>  	.codec = HFI_VIDEO_CODEC_HEVC,
>  	.domain = VIDC_SESSION_TYPE_ENC,
>  	.cap_bufs_mode_dynamic = true,
> -	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 16},
> -	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 16},
> +	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 1},
> +	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 1},
>  	.caps[2] = {HFI_CAPABILITY_MBS_PER_FRAME, 1, 36864, 1},
>  	.caps[3] = {HFI_CAPABILITY_BITRATE, 1, 120000000, 1},
>  	.caps[4] = {HFI_CAPABILITY_SCALE_X, 8192, 65536, 1},
> @@ -195,8 +195,8 @@ static const struct hfi_plat_caps caps[] = {
>  	.caps[19] = {HFI_CAPABILITY_RATE_CONTROL_MODES, 0x1000001, 0x1000005, 1},
>  	.caps[20] = {HFI_CAPABILITY_COLOR_SPACE_CONVERSION, 0, 2, 1},
>  	.caps[21] = {HFI_CAPABILITY_ROTATION, 1, 4, 90},
> -	.caps[22] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 16},
> -	.caps[23] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 16},
> +	.caps[22] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 1},
> +	.caps[23] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 1},
>  	.num_caps = 24,
>  	.pl[0] = {HFI_HEVC_PROFILE_MAIN, HFI_HEVC_LEVEL_6 | HFI_HEVC_TIER_HIGH0},
>  	.pl[1] = {HFI_HEVC_PROFILE_MAIN10, HFI_HEVC_LEVEL_6 | HFI_HEVC_TIER_HIGH0},
> @@ -210,8 +210,8 @@ static const struct hfi_plat_caps caps[] = {
>  	.codec = HFI_VIDEO_CODEC_VP8,
>  	.domain = VIDC_SESSION_TYPE_ENC,
>  	.cap_bufs_mode_dynamic = true,
> -	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 16},
> -	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 16},
> +	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 96, 4096, 1},
> +	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 96, 4096, 1},
>  	.caps[2] = {HFI_CAPABILITY_MBS_PER_FRAME, 1, 36864, 1},
>  	.caps[3] = {HFI_CAPABILITY_BITRATE, 1, 120000000, 1},
>  	.caps[4] = {HFI_CAPABILITY_SCALE_X, 8192, 65536, 1},
> @@ -229,8 +229,8 @@ static const struct hfi_plat_caps caps[] = {
>  	.caps[16] = {HFI_CAPABILITY_P_FRAME_QP, 0, 127, 1},
>  	.caps[17] = {HFI_CAPABILITY_MAX_WORKMODES, 1, 2, 1},
>  	.caps[18] = {HFI_CAPABILITY_RATE_CONTROL_MODES, 0x1000001, 0x1000005, 1},
> -	.caps[19] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 16},
> -	.caps[20] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 16},
> +	.caps[19] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 1},
> +	.caps[20] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 1},
>  	.caps[21] = {HFI_CAPABILITY_COLOR_SPACE_CONVERSION, 0, 2, 1},
>  	.caps[22] = {HFI_CAPABILITY_ROTATION, 1, 4, 90},
>  	.num_caps = 23,
> 

Reviewed-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>

Thanks,
Dikshita

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] media: qcom: venus: relax encoder frame/blur step size on v6
  2026-03-31  4:37 ` [PATCH 3/3] media: qcom: venus: relax encoder frame/blur step size on v6 Renjiang Han
@ 2026-04-06  6:01   ` Dikshita Agarwal
  0 siblings, 0 replies; 7+ messages in thread
From: Dikshita Agarwal @ 2026-04-06  6:01 UTC (permalink / raw)
  To: Renjiang Han, Vikash Garodia, Bryan O'Donoghue,
	Mauro Carvalho Chehab, Alexandre Courbot, Tomasz Figa,
	Hans Verkuil
  Cc: Mauro Carvalho Chehab, linux-media, linux-arm-msm, linux-kernel,
	Mauro Carvalho Chehab



On 3/31/2026 10:07 AM, Renjiang Han wrote:
> Encoder HFI capabilities on v6 enforce a 16-pixel step for frame and blur
> dimensions, which does not reflect actual hardware requirements and can
> reject valid userspace configurations.
> 
> Relax the step size to 1 while leaving min/max limits unchanged.
> 
> Fixes: 869d77e706290 ("media: venus: hfi_plat_v6: Populate capabilities for v6")
> Signed-off-by: Renjiang Han <renjiang.han@oss.qualcomm.com>
> ---
>  drivers/media/platform/qcom/venus/hfi_platform_v6.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/media/platform/qcom/venus/hfi_platform_v6.c b/drivers/media/platform/qcom/venus/hfi_platform_v6.c
> index d8568c08cc3612a0024d36f65c741151a23459c3..fb8d10ab34043ee676bd7adcf9420d4274ce9d78 100644
> --- a/drivers/media/platform/qcom/venus/hfi_platform_v6.c
> +++ b/drivers/media/platform/qcom/venus/hfi_platform_v6.c
> @@ -173,8 +173,8 @@ static const struct hfi_plat_caps caps[] = {
>  	.codec = HFI_VIDEO_CODEC_HEVC,
>  	.domain = VIDC_SESSION_TYPE_ENC,
>  	.cap_bufs_mode_dynamic = true,
> -	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 128, 8192, 16},
> -	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 128, 8192, 16},
> +	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 128, 8192, 1},
> +	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 128, 8192, 1},
>  	.caps[2] = {HFI_CAPABILITY_MBS_PER_FRAME, 64, 138240, 1},
>  	.caps[3] = {HFI_CAPABILITY_BITRATE, 1, 160000000, 1},
>  	.caps[4] = {HFI_CAPABILITY_SCALE_X, 8192, 65536, 1},
> @@ -195,8 +195,8 @@ static const struct hfi_plat_caps caps[] = {
>  	.caps[19] = {HFI_CAPABILITY_RATE_CONTROL_MODES, 0x1000001, 0x1000005, 1},
>  	.caps[20] = {HFI_CAPABILITY_COLOR_SPACE_CONVERSION, 0, 2, 1},
>  	.caps[21] = {HFI_CAPABILITY_ROTATION, 1, 4, 90},
> -	.caps[22] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 16},
> -	.caps[23] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 16},
> +	.caps[22] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 1},
> +	.caps[23] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 1},
>  	.num_caps = 24,
>  	.pl[0] = {HFI_HEVC_PROFILE_MAIN, HFI_HEVC_LEVEL_6 | HFI_HEVC_TIER_HIGH0},
>  	.pl[1] = {HFI_HEVC_PROFILE_MAIN10, HFI_HEVC_LEVEL_6 | HFI_HEVC_TIER_HIGH0},
> @@ -210,8 +210,8 @@ static const struct hfi_plat_caps caps[] = {
>  	.codec = HFI_VIDEO_CODEC_VP8,
>  	.domain = VIDC_SESSION_TYPE_ENC,
>  	.cap_bufs_mode_dynamic = true,
> -	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 128, 4096, 16},
> -	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 128, 4096, 16},
> +	.caps[0] = {HFI_CAPABILITY_FRAME_WIDTH, 128, 4096, 1},
> +	.caps[1] = {HFI_CAPABILITY_FRAME_HEIGHT, 128, 4096, 1},
>  	.caps[2] = {HFI_CAPABILITY_MBS_PER_FRAME, 64, 36864, 1},
>  	.caps[3] = {HFI_CAPABILITY_BITRATE, 1, 74000000, 1},
>  	.caps[4] = {HFI_CAPABILITY_SCALE_X, 8192, 65536, 1},
> @@ -229,8 +229,8 @@ static const struct hfi_plat_caps caps[] = {
>  	.caps[16] = {HFI_CAPABILITY_P_FRAME_QP, 0, 127, 1},
>  	.caps[17] = {HFI_CAPABILITY_MAX_WORKMODES, 1, 2, 1},
>  	.caps[18] = {HFI_CAPABILITY_RATE_CONTROL_MODES, 0x1000001, 0x1000005, 1},
> -	.caps[19] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 16},
> -	.caps[20] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 16},
> +	.caps[19] = {HFI_CAPABILITY_BLUR_WIDTH, 96, 4096, 1},
> +	.caps[20] = {HFI_CAPABILITY_BLUR_HEIGHT, 96, 4096, 1},
>  	.caps[21] = {HFI_CAPABILITY_COLOR_SPACE_CONVERSION, 0, 2, 1},
>  	.caps[22] = {HFI_CAPABILITY_ROTATION, 1, 4, 90},
>  	.num_caps = 23,
> 

Reviewed-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>

Thanks,
Dikshita

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-04-06  6:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-31  4:37 [PATCH 0/3] media: venus: fix NV12 buffer sizing and incorrect capability alignment Renjiang Han
2026-03-31  4:37 ` [PATCH 1/3] media: qcom: venus: drop extra padding in NV12 raw size calculation Renjiang Han
2026-04-06  6:00   ` Dikshita Agarwal
2026-03-31  4:37 ` [PATCH 2/3] media: qcom: venus: relax encoder frame/blur dimension steps on v4 Renjiang Han
2026-04-06  6:01   ` Dikshita Agarwal
2026-03-31  4:37 ` [PATCH 3/3] media: qcom: venus: relax encoder frame/blur step size on v6 Renjiang Han
2026-04-06  6:01   ` Dikshita Agarwal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox