* [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