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