[PATCH v2 0/2] media: qcom: iris: add multi slice support

From: Sachin Kumar Garg

Date: Fri Jul 17 2026 - 02:57:15 EST


This series adds support for multi-slice encoding in the Qualcomm Iris
driver.

Multi-slice mode allows encoding a single frame into multiple slices,
which can improve error resilience and enable parallel processing.
The feature supports two slice modes:
- MAX_MB mode: slices are created based on macroblock count, controlled
via V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB
- MAX_BYTES mode: slices are created based on byte size, controlled via
V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES

Clients can enable slice mode using the V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE
control.

Patch 1 is a prerequisite fix: iris_set_stage() currently always selects
STAGE_2 work mode for encoder sessions, but CBR rate control requires
STAGE_1. This is fixed by forcing STAGE_1 when BITRATE_MODE is set to
CBR.

Patch 2 adds the multi-slice support itself for Iris HFI Gen2 based
targets (qcs8300, sm8550 and other SM8550-derived targets).
Support for HFI Gen1 targets will be added in a follow-up series.

This series has been verified with GST level testing.
Command used:
gst-launch-1.0 -v videotestsrc ! video/x-raw,format=NV12, \
width=1280,height=720,framerate=30/1 ! v4l2h264enc output-io-mode=4 |
capture-io-mode=4 extra-controls="controls,video_bitrate_mode=1, \
slice_partitioning_method=1,number_of_mbs_in_a_slice=460;" \
! filesink location=/opt/test_enc.h264

Changes in v2:
- Added a prerequisite patch to force STAGE_1 work mode for CBR rate
control on the encoder, required for multi-slice encoding to work
correctly.
- Addressed review comments on the multi-slice patch (updated commit
subject and description).

Signed-off-by: Sachin Kumar Garg <sachin.garg@xxxxxxxxxxxxxxxx>
---
Sachin Kumar Garg (2):
media: iris: force stage 1 work mode for CBR RC on encoder
media: iris: add support for multi_slice in iris encoder

drivers/media/platform/qcom/iris/iris_ctrls.c | 84 ++++++++++++++++++++++
drivers/media/platform/qcom/iris/iris_ctrls.h | 1 +
drivers/media/platform/qcom/iris/iris_hfi_gen2.c | 33 ++++++++-
.../platform/qcom/iris/iris_hfi_gen2_defines.h | 2 +
.../platform/qcom/iris/iris_platform_common.h | 12 ++++
.../platform/qcom/iris/iris_platform_qcs8300.h | 9 +++
.../platform/qcom/iris/iris_platform_sm8550.h | 9 +++
.../media/platform/qcom/iris/iris_platform_vpu2.c | 9 +++
8 files changed, 158 insertions(+), 1 deletion(-)
---
base-commit: 42f83a32259a82c4481d3cccf560c3bfeb32c892
change-id: 20260716-iris_multi_slice-5647287a9563

Best regards,
--
Sachin Kumar Garg <sachin.garg@xxxxxxxxxxxxxxxx>