Re: [PATCH v2 3/5] media: qcom: iris: Add rotation support for encoder

From: Neil Armstrong

Date: Fri Oct 31 2025 - 07:30:33 EST


On 10/31/25 10:50, Wangao Wang wrote:
Add rotation control for encoder, enabling V4L2_CID_ROTATE and handling
90/180/270 degree rotation.

Signed-off-by: Wangao Wang <wangao.wang@xxxxxxxxxxxxxxxx>
---
drivers/media/platform/qcom/iris/iris_ctrls.c | 34 ++++++++++++++++
drivers/media/platform/qcom/iris/iris_ctrls.h | 1 +
.../platform/qcom/iris/iris_hfi_gen2_command.c | 41 ++++++++++++++-----
.../platform/qcom/iris/iris_hfi_gen2_defines.h | 9 +++++
.../platform/qcom/iris/iris_platform_common.h | 1 +
.../media/platform/qcom/iris/iris_platform_gen2.c | 10 +++++
drivers/media/platform/qcom/iris/iris_utils.c | 6 +++
drivers/media/platform/qcom/iris/iris_utils.h | 1 +
drivers/media/platform/qcom/iris/iris_vpu_buffer.c | 46 +++++++++++++---------
9 files changed, 121 insertions(+), 28 deletions(-)


<snip>

if (inst->codec == V4L2_PIX_FMT_HEVC) {
@@ -1051,9 +1064,8 @@ u32 hfi_buffer_line_enc_vpu33(u32 frame_width, u32 frame_height, bool is_ten_bit
static u32 iris_vpu_enc_line_size(struct iris_inst *inst)
{
u32 num_vpp_pipes = inst->core->iris_platform_data->num_vpp_pipe;
- struct v4l2_format *f = inst->fmt_dst;
- u32 height = f->fmt.pix_mp.height;
- u32 width = f->fmt.pix_mp.width;
+ u32 height = iris_vpu_enc_get_bitstream_height(inst);
+ u32 width = iris_vpu_enc_get_bitstream_width(inst);

I found the issue with SM8650, you did not update the vppu33 variant of iris_vpu_enc_line_size.

With this:
============================><=============================
diff --git a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c b/drivers/media/platform/qcom/iris/iris_vpu_buffer.c
index be8b8588a39f..4a4fbcbfdb46 100644
--- a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c
+++ b/drivers/media/platform/qcom/iris/iris_vpu_buffer.c
@@ -1082,8 +1082,8 @@ static u32 iris_vpu33_enc_line_size(struct iris_inst *inst)
{
u32 num_vpp_pipes = inst->core->iris_platform_data->num_vpp_pipe;
struct v4l2_format *f = inst->fmt_dst;
- u32 height = f->fmt.pix_mp.height;
- u32 width = f->fmt.pix_mp.width;
+ u32 height = iris_vpu_enc_get_bitstream_height(inst);
+ u32 width = iris_vpu_enc_get_bitstream_width(inst);
u32 lcu_size = 16;

if (inst->codec == V4L2_PIX_FMT_HEVC) {
============================><=============================

Tested-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx> # on SM8650-HDK

Neil


<snip>