From nobody Fri Dec 19 14:24:46 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 765DD2BE652 for ; Thu, 6 Nov 2025 03:30:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399848; cv=none; b=fVjce6NZ7bTshD/E0rHLAYx/7I73Cc3lRYaIAD9KlBj7rMe5V/GAIQqGNgkYnAi3Ncv1Tv3B12WaBtSde29oEhCS5iNz6Y8uON4ZN8WQ1wu2Q+MuWDMdMNspBAY1mJ8GrMx3CxPAHQeDx5d/vfMc2GOCOOGGQKkUz/1hzARKcXk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399848; c=relaxed/simple; bh=thA6qmpbfU2WMMOPXi0eVnEW+mgjzoA7E14BdSZFLhM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=niJT5fc5vRrYo7qVWHpYjUwTkj7kYOHWVRSanCBlBW+e6Rd54iem0RWMAbCWJ/bUkpms9GZ6bUhYVFv+vryBecoYQjAh3Y6uJWILRriqoH4M/ZCJoDgnq36O5g9A9W2pC7jqWIlH+t7o6ZB1bxXgDOh5rHsANXHa5z/hTGnX9V0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=eBzy19CR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=K9NArQnL; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="eBzy19CR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="K9NArQnL" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5A5KFVll1785434 for ; Thu, 6 Nov 2025 03:30:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= xg/QfOBjMwyvyZvl+AHPeoKV3ZIzdwArDAMeG9l+vfI=; b=eBzy19CRV0IzBM76 xKtDgZNZManVBbsDWNryf5pfUTv1paX8how7v67mlNHm5Zyhh7M+qEd2dkqJjWlQ Su0jgkGTOp2fEv6aoXMW01vqVMfRnFMxpDLuTUEjdtwv3OV3mjOw70QLq75WuCGW C7e4UzoiktWlWGeNvnF7dMSY+SEsl5RzXMfzTRkZHHciiaWJqhfMYVRL9OYsWCFj PqGDCqbxgqgoU6H+bYGg5x2hx+xBShhvUjGn2E9zASMecgNL4DJARK5jrY5+MvIV bfJcgbrgY/+jWKHUaZtJQ4o3A4I62c4GCMWF0bmNMkYKIaVN+vZO4sEOqjeDU9rl Y/amMg== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4a8amx9m3w-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Nov 2025 03:30:45 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b5535902495so359321a12.0 for ; Wed, 05 Nov 2025 19:30:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762399845; x=1763004645; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=xg/QfOBjMwyvyZvl+AHPeoKV3ZIzdwArDAMeG9l+vfI=; b=K9NArQnLS59K02yVPmiIceXZwCbOal1ApIwjmPCZuMEbKz8lJcEzfoAhsi48s+T2BI MlMvjQUZ8jOrxz+Ft4TWchgJFLwHyxfjDkqWCY1pimw7FZdBc81M/uieYrmBmRZ1qKai MlGa/Gr8wy3yx7CaVktkEDw6UU71AiAqSXYyh4817ApUL9IJPN/Z2qaT0IQJmwQdk8tb kvEcHDqUVHZWfkjn1qFfsbEn+oKHG0LxJex0nhPvd6hHEBGT+mG9eLsePetDAdOpTLh0 +cVQK2Cd9pUao4q9wL5R25hVRJk8iUx7wiVmCICbQIOWns/WFvVOfUy5oR5IuCCqdN6H we1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762399845; x=1763004645; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xg/QfOBjMwyvyZvl+AHPeoKV3ZIzdwArDAMeG9l+vfI=; b=L7a3FvKzPLcfXjrImn+3/nKpo/OCZDx7fMX55aj0APjxy9uZIY44V6APZZNrTf2YFb Yg/HVGRHJAfohkEhB/SI7wmEIqb9oYUYeYzhz5b82XD7fZ1/ZEBq7qAnBuvg9zNPgPuN I8PBARzAZKMAAbFSZ9a3zbANAoUfyHUDRuk2aUuuqcXpT+rScCyTd0He7nBIDs26uijc s+zdTi/bIAbm6Nk3+akzCH/H7WE+8rqgtREJM59rdnhW19pFpLNZvWe+TV5eO+2aA/yr I7J7zgn6IcYiCHCbbNLRwC0CBJXzEWV73LdDoW1hq/qfH5WYPiXxGFYZAdlKzyIyJA6U Sweg== X-Forwarded-Encrypted: i=1; AJvYcCXPzQYXtvw96+lIzMatT8ZX+E268nhCQuwpK+/J7UKXGnVY2MSBqVXeXlDHL02AZHUYzkuI+MVDcdt9x8c=@vger.kernel.org X-Gm-Message-State: AOJu0Yx9LllzF/I2/po2GSqwitgjTd0ApcGxDLtCDtRqQu3oPx2xsHCW tRF+KY4h4fsvl/Luqe3I55byGW26sU6spXE1qa3gwbaPJm/Z5SNfvj643Hu0yFDy/ucenMCaYar p2ZrQ8vOuYZ4+Fy+ZcgRNYhaGjOfSW3BU4RINzJ0GnCD5SMAtDFfCV993Gy0uoA+ivCczEXBrQR OLdw== X-Gm-Gg: ASbGnctR6sqrjRt0gQ0kmwfIoCo+dAm4teV+fnOIpZTcMv/N2+5J7lgvT19Vlnd/vbw x37NcPnXWpGsyxeh3or8T4IsEMwtpXYLBpCl20fD8YoiCcff/3UeXD9APQ8bwj+mYKLULSltPVj K6DVnFCWWl9dUFEhlE46SiO3NVmH9fNy6n3Rfctn3hO62ppBbfvvwdyWNWtOT7Rhriq7IVUdX6o SjIOcFS8TdSkxkjaTCccs4AQ5sIeRIKk5b1vk6z5MjggV//Igv5bpN136j4Kr6FlYgNZcP0iX3/ 7HqJnnRDcC/Oz9ln0kr1CUJEwCMLcGOk+B8UgO7Qmrw64lLEeazNgNwQOuBwNgggiJVLxddgPps +LapKU/HuTtUw899L5w9AW8bUbcuqugo+nfyG92wN18rNYPWfKAHVryeGry4RfOEk/sBzEWnkOw == X-Received: by 2002:a17:903:1447:b0:295:4d97:8503 with SMTP id d9443c01a7336-2962ada67bcmr72245055ad.30.1762399844625; Wed, 05 Nov 2025 19:30:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IH1H1G4TG7zItxp58QWOZOBjrrVr5ew13L5mbBoqhJzxDXw0Ktt5pzyO+03XLcuEKSHlyhPZw== X-Received: by 2002:a17:903:1447:b0:295:4d97:8503 with SMTP id d9443c01a7336-2962ada67bcmr72244655ad.30.1762399844089; Wed, 05 Nov 2025 19:30:44 -0800 (PST) Received: from WANGAOW-LAB01.ap.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29651cd0060sm10361925ad.108.2025.11.05.19.30.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 19:30:43 -0800 (PST) From: Wangao Wang Date: Thu, 06 Nov 2025 11:30:33 +0800 Subject: [PATCH v4 1/6] media: qcom: iris: Improve format alignment for encoder Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251106-iris_encoder_enhancements-v4-1-5d6cff963f1b@oss.qualcomm.com> References: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> In-Reply-To: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang , Neil Armstrong , quic_qiweil@quicinc.com, quic_renjiang@quicinc.com X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762399836; l=3922; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=thA6qmpbfU2WMMOPXi0eVnEW+mgjzoA7E14BdSZFLhM=; b=geJGuuAnUGUrsDLs25MURCPSXOFKqxqoAIM5ajaua7qhOwbfOpUln+Ro+Cef/4WvuZIkiWIRG U2JEjCp2xY9ART+oBey0u5zI+ihehI+nXeMIipx2Ob711ZXt090744j X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Proofpoint-GUID: butdWQfSfXtg4HfNDXVOY48uTQ5B4V-L X-Authority-Analysis: v=2.4 cv=P443RyAu c=1 sm=1 tr=0 ts=690c1665 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=Ydk8v881x4eQe87C_TwA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTA2MDAyNiBTYWx0ZWRfX7maqExhxLCRa dRZC5D96f7U1OTS1me+A9+bw4azp5I02J72qhSkZWwyk7u2MjijiMbB9DcXazczEOCgPlql4wAL q4gJsmIufYVVjOU7oe3jdbt1rS823olQaAgHiEGRK9WYWYc36/hUpY7AkARC00CYw+aJUvs1OcY ILKRSx2DDtAbbjbRkNadJ858T+IdendeNaj7J59DfCh5wRPZJhwEGQYavCNMqP0GgP3uE0FSGq7 fDFUBzGw3Z1xXJQR+HejbVK2oMd2EWrVygOTzh+47EE8R/1BBU5+AeLcv2lEBGW3vufQsBiYK7B STR/56p9Yy8nsY2KcoJGy0CL3S+N1RuCgUwD35Bi4p16J4g66KTOwhi5ANOl5TG91siHLk3iA/X 2Sg3CStwB3JNyKkTYav7/D72f0+ekQ== X-Proofpoint-ORIG-GUID: butdWQfSfXtg4HfNDXVOY48uTQ5B4V-L X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-05_09,2025-11-03_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 adultscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 phishscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511060026 Add members enc_raw_width, enc_raw_height to the struct iris_inst to support codec alignment requirements. HFI_PROP_RAW_RESOLUTION needs to be set to the actual YUV resolution. Tested-by: Neil Armstrong # on SM8650-HDK Signed-off-by: Wangao Wang --- drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c | 7 +++---- drivers/media/platform/qcom/iris/iris_instance.h | 4 ++++ drivers/media/platform/qcom/iris/iris_venc.c | 6 ++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index 4ce71a14250832440099e4cf3835b4aedfb749e8..aaa79dfe2db281bb77be7274233= f093b0086b5d4 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -168,8 +168,7 @@ static int iris_hfi_gen2_session_set_property(struct ir= is_inst *inst, u32 packet =20 static int iris_hfi_gen2_set_raw_resolution(struct iris_inst *inst, u32 pl= ane) { - u32 resolution =3D inst->fmt_src->fmt.pix_mp.width << 16 | - inst->fmt_src->fmt.pix_mp.height; + u32 resolution =3D inst->enc_raw_width << 16 | inst->enc_raw_height; u32 port =3D iris_hfi_gen2_get_port(inst, plane); =20 return iris_hfi_gen2_session_set_property(inst, @@ -231,8 +230,8 @@ static int iris_hfi_gen2_set_crop_offsets(struct iris_i= nst *inst, u32 plane) top_offset =3D inst->compose.top; } } else { - bottom_offset =3D (inst->fmt_src->fmt.pix_mp.height - inst->crop.height); - right_offset =3D (inst->fmt_src->fmt.pix_mp.width - inst->crop.width); + bottom_offset =3D (inst->fmt_dst->fmt.pix_mp.height - inst->enc_raw_heig= ht); + right_offset =3D (inst->fmt_dst->fmt.pix_mp.width - inst->enc_raw_width); left_offset =3D inst->crop.left; top_offset =3D inst->crop.top; } diff --git a/drivers/media/platform/qcom/iris/iris_instance.h b/drivers/med= ia/platform/qcom/iris/iris_instance.h index 5982d7adefeab80905478b32cddba7bd4651a691..a9892988c10bc28e9b2d8c3b548= 2e99b5b9af623 100644 --- a/drivers/media/platform/qcom/iris/iris_instance.h +++ b/drivers/media/platform/qcom/iris/iris_instance.h @@ -64,6 +64,8 @@ struct iris_fmt { * @frame_rate: frame rate of current instance * @operating_rate: operating rate of current instance * @hfi_rc_type: rate control type + * @enc_raw_width: source image width for encoder instance + * @enc_raw_height: source image height for encoder instance */ =20 struct iris_inst { @@ -102,6 +104,8 @@ struct iris_inst { u32 frame_rate; u32 operating_rate; u32 hfi_rc_type; + u32 enc_raw_width; + u32 enc_raw_height; }; =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_venc.c b/drivers/media/p= latform/qcom/iris/iris_venc.c index 099bd5ed4ae0294725860305254c4cad1ec88d7e..50a3eb975a2523abf1c2df128a6= 6a762a1ed35c6 100644 --- a/drivers/media/platform/qcom/iris/iris_venc.c +++ b/drivers/media/platform/qcom/iris/iris_venc.c @@ -68,6 +68,9 @@ int iris_venc_inst_init(struct iris_inst *inst) inst->operating_rate =3D DEFAULT_FPS; inst->frame_rate =3D DEFAULT_FPS; =20 + inst->enc_raw_width =3D DEFAULT_WIDTH; + inst->enc_raw_height =3D DEFAULT_HEIGHT; + memcpy(&inst->fw_caps[0], &core->inst_fw_caps_enc[0], INST_FW_CAP_MAX * sizeof(struct platform_inst_fw_cap)); =20 @@ -249,6 +252,9 @@ static int iris_venc_s_fmt_input(struct iris_inst *inst= , struct v4l2_format *f) inst->buffers[BUF_INPUT].min_count =3D iris_vpu_buf_count(inst, BUF_INPUT= ); inst->buffers[BUF_INPUT].size =3D fmt->fmt.pix_mp.plane_fmt[0].sizeimage; =20 + inst->enc_raw_width =3D f->fmt.pix_mp.width; + inst->enc_raw_height =3D f->fmt.pix_mp.height; + if (f->fmt.pix_mp.width !=3D inst->crop.width || f->fmt.pix_mp.height !=3D inst->crop.height) { inst->crop.top =3D 0; --=20 2.43.0 From nobody Fri Dec 19 14:24:46 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B1E722C0F78 for ; Thu, 6 Nov 2025 03:30:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399851; cv=none; b=DBI3EBSocDgT9rLZJXi8DGYqlgWlIOJqqBvCXizFjLLD/1aIuhdPVvn+5CfP9a5jTJlgHrYKdrJYkOgtH76VNJu6OsECnaiWGqfxW8UXbLnQKmB9B9Tpl0vaXco0xQ+9cZGWm2dBauGTKGI8/lNAW701J9tlLYhnE+ycrXA+9HE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399851; c=relaxed/simple; bh=qJb7NKtP7BXOcePFVLUH4KlNlOEuEnolQugxAYnTO7c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GJFHNkQAnhwGH5IonR7yAPPlSQ1eM93LnGZHRqVkG2YwysBSC3Sq6NRE0B/dgsvHNd692PWzM1tjsi5eagxbSU+YUCBSoXV74MoWSlwp6wVPwrR0eDJg/GkKz1Nvjweq9+Uc+CT9+dEvIgAC6tHM/i02YhV2mvfr+Qfa5/gqxYo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ZsgkFQzV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=LVDzCZBC; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ZsgkFQzV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="LVDzCZBC" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5A5KFAR31656876 for ; Thu, 6 Nov 2025 03:30:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= OvPKp/XZNM2PzOQ7/u/SpcYLmO4fMzfvUCxKd6PJgI8=; b=ZsgkFQzVmth4pPMJ e3c4LOduI3mQbqUFCP9tQJ7VyplHKRGU4JaYzN40auyfTI4fvnj3dLschWW1rS6i DrCexryDJTJn2cZQRsGAmMYoo4GiGqXaorNIigMCqZqdW4LGkOZXIc/6S+KaaHMl snoP5+9Z5Se1wOI8BzZ/NS8hkeErR8Kfh1ORXBM5IogLaKQqFbWp2HuXBY0g5nAF Nk1pWxPtU/f7lbemtiGHVcUb+zN2IQ9IkmtV6K0qtyaLdk0XhjbYME7iHl6bt8EW RlvA0DmBumSC2hxDcj40Lg8q2ZoCTksUvoTMDQ9Mk6WaDfCOUwsv8QsGPXzOjtfZ I3R/5A== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4a8831a6se-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Nov 2025 03:30:48 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-29555415c09so6691065ad.0 for ; Wed, 05 Nov 2025 19:30:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762399848; x=1763004648; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=OvPKp/XZNM2PzOQ7/u/SpcYLmO4fMzfvUCxKd6PJgI8=; b=LVDzCZBC0gZPjcMAfxDDp+c3cKIGIW0u+hBESGAPlkawDXwPMopnylq8wqBsXZuluM vjJAbWGS3Je7iuYY6EGRoQDk7YE3RdT+o39H2CNYRRTOPBSgJyOfoD7iJxDZfiABud18 tYZVPQCNnh8vAzqNSGmCQQSeMSv7kjA/uG7xdEDslr8LSy4RCzzO7DKpa694mKmCiC3K +VUDJPKrwqTMxrXaqn8y9TndxNJaWJSOm/PLkyXGelhYpMZ4HVH6Ozwe60Txqpz+SBe4 6iNVqT8mpxWjUcZiERFzAfX0qg8va7nrcSYaVUe7MtUOkLglmVMWX9+/CncraVvwhzdf Pqng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762399848; x=1763004648; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OvPKp/XZNM2PzOQ7/u/SpcYLmO4fMzfvUCxKd6PJgI8=; b=uSlwqEE49KVre1rozpv4FzDsDHUhlsxyPTMcM4oOS9OraWGCyWondqnznrXVpf5jen OqOav6P9Rua8LYNAuCm0CNtuD5s9MwmQVAlXBIBi9TQztxJMtm3VNL57+hYO3mgrlFOs x7HcL7rYUO4nUF5kCFL4SoAeygGWIjLbnrLY2wOBnPDY0n7AbQJYTB7goQQFHI0p2Azk EsPeuBZ5mEe5GnWMcfq/T0PnUs+xlsFUqPZJplCnVl7Ht6cIwJxR78mGiRvn7Yp7Qzwf G786IveK2/Y22ls7kScvLdd3yrTnpp5rbRlL7Yi+cZwAjXco4RmPfzyZD2AzZZcfKHuS VJ3w== X-Forwarded-Encrypted: i=1; AJvYcCVDGdjDIZNrVhdMDt3QxRshR8NavXuuM/j0+cJoeot8iIKUiyA2M/fUYDXfv1A4P8SxlU0mjcwAVYXvWcs=@vger.kernel.org X-Gm-Message-State: AOJu0YxWxzuMmqjheBuP6T7TX+UCHK4ba3nARvMn+J+kEeid1mjXIYpP maXBWZdYeLMh+Le/0TVGUnUWWMCjmRoWflGZvvm5i/DMEDI7OGFcS7tK3WNu3JczpG2s1E2Fij6 7TTESS8CBko++dQKYWuqJ+sm3bYnHjbrNMkbxkqV5CfB8kXM6f2uGyzCFVqJLm3e6NOA= X-Gm-Gg: ASbGncthd+l2YusvTcqwYtiBel4u9zMqqiPsYuqjjrBobwHDreK2EndYFMqvhGfVauk V1d6IG3CdsYtK8hrfV5R8aKuDK/uUyE67JgjN3UHEnLkTE8X8OndT5UnC0hcThJ10tjWrJpxuV6 wrdpPGimBTnbr2b8qnEBHBnaxY59kYnBZ+EfKrv8SCLSNoNdoNYNqSncN8XC6Bhk1F2mR6+czmd 67Ai/vlAxZkCG3eN0m2GmdeFs/XPri5CaNWF2NSIMWUeGcjKQk8GJGD941u47jLjbYKpeAVzfVb JOJEsMO/bVzmPGU1gt41x+IVMFdFrGvpGv1mPDuG25yiQunv9LnC93nJDVHKyU9D6AtmMqPuTne t/brZTJuKxnRQaU5M9jNk8En1To5dgwz5+g7/X4xUvavhx021noLVTgTRhLhkuvwxIw5+WvN+7A == X-Received: by 2002:a17:903:1b6f:b0:295:5132:1aa5 with SMTP id d9443c01a7336-2962ae9ae81mr75418855ad.55.1762399848177; Wed, 05 Nov 2025 19:30:48 -0800 (PST) X-Google-Smtp-Source: AGHT+IEv2NP3ANxlqrvF/FIb5iVXRiT3DT25+JxcO10XbpL3VFfkhhp2sKCiW4RWCuurF5kPljO4oA== X-Received: by 2002:a17:903:1b6f:b0:295:5132:1aa5 with SMTP id d9443c01a7336-2962ae9ae81mr75418435ad.55.1762399847641; Wed, 05 Nov 2025 19:30:47 -0800 (PST) Received: from WANGAOW-LAB01.ap.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29651cd0060sm10361925ad.108.2025.11.05.19.30.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 19:30:47 -0800 (PST) From: Wangao Wang Date: Thu, 06 Nov 2025 11:30:34 +0800 Subject: [PATCH v4 2/6] media: qcom: iris: Improve crop_offset handling for encoder Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251106-iris_encoder_enhancements-v4-2-5d6cff963f1b@oss.qualcomm.com> References: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> In-Reply-To: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang , Neil Armstrong , quic_qiweil@quicinc.com, quic_renjiang@quicinc.com X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762399836; l=2880; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=qJb7NKtP7BXOcePFVLUH4KlNlOEuEnolQugxAYnTO7c=; b=2F6gp3sW6wOu+3Uds/IHQam6HdnLR0lRJdvIzRoHsFpQui/qgQ4rWcpsu89ySa/C81Irt0yKc GjmXJC+lqF8Dc7asip64hLvk+T4KewN78GMDVeXHsIlIk402wLffpIT X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Proofpoint-ORIG-GUID: vfA8pKTrIm1uvCrPaNxUy-kvm_4Y684O X-Proofpoint-GUID: vfA8pKTrIm1uvCrPaNxUy-kvm_4Y684O X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTA2MDAyNiBTYWx0ZWRfX+ncwFThIEXnJ ZHMnZ3ha5f8Bm0/wcxCvOrefm2cMoBcbu1nerbGq+oA29v7pNxejZIbB26hqgf3qfTqCdmlXXLw HSCsNwP2fh2nixUdyanQXaWt+k6HzJDWRBRiNn77B09zjTwlbEFBzj6Ai3ZUYbGk5qFY02lKPjC leaCFSNPWRw35U/GmtUPhDeOAJSPLLLvHPd0gF1h3EcTonZbEa+T87pF2fNgO0l1XAqalNvwWq+ fZ2LVzolS3knQtyMs5KirO/g5GtS6xODm1H8xigq/7ixyRw8If4roSlUKM37fQ58FKKPx4u+FBD cQH+D81TONMI/P1nds6g7x7Lwm7MjqcwG+9HWxXMYDUSQrCWMlThydSp4iPRyCxZ0dmsb9PPMM9 pnOjCls+OqoEzZNJnvfMv3vWqrE7YA== X-Authority-Analysis: v=2.4 cv=Mdhhep/f c=1 sm=1 tr=0 ts=690c1668 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=ZGEL9ByRZDbVprvkw1YA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-05_09,2025-11-03_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 suspectscore=0 spamscore=0 clxscore=1015 malwarescore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511060026 The setting of HFI_PROP_CROP_OFFSETS for the OUTPUT port is correct, but on the CAPTURE port it is used to inform the firmware about the ROI, so crop_offset needs to be handled accordingly. Signed-off-by: Wangao Wang --- .../media/platform/qcom/iris/iris_hfi_gen2_command.c | 18 ++++++++++++++= ---- drivers/media/platform/qcom/iris/iris_venc.c | 4 ++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index aaa79dfe2db281bb77be7274233f093b0086b5d4..69034e1ea8eb64440646776a40d= cc657453916db 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -215,8 +215,11 @@ static int iris_hfi_gen2_set_crop_offsets(struct iris_= inst *inst, u32 plane) u32 port =3D iris_hfi_gen2_get_port(inst, plane); u32 bottom_offset, right_offset; u32 left_offset, top_offset; + u32 codec_align; u32 payload[2]; =20 + codec_align =3D inst->codec =3D=3D V4L2_PIX_FMT_HEVC ? 32 : 16; + if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { bottom_offset =3D (inst->fmt_src->fmt.pix_mp.height - inst->crop.height= ); @@ -230,10 +233,17 @@ static int iris_hfi_gen2_set_crop_offsets(struct iris= _inst *inst, u32 plane) top_offset =3D inst->compose.top; } } else { - bottom_offset =3D (inst->fmt_dst->fmt.pix_mp.height - inst->enc_raw_heig= ht); - right_offset =3D (inst->fmt_dst->fmt.pix_mp.width - inst->enc_raw_width); - left_offset =3D inst->crop.left; - top_offset =3D inst->crop.top; + if (V4L2_TYPE_IS_OUTPUT(plane)) { + bottom_offset =3D (inst->enc_raw_height - inst->crop.height); + right_offset =3D (inst->enc_raw_width - inst->crop.width); + left_offset =3D inst->crop.left; + top_offset =3D inst->crop.top; + } else { + bottom_offset =3D (inst->fmt_dst->fmt.pix_mp.height - inst->enc_raw_hei= ght); + right_offset =3D (inst->fmt_dst->fmt.pix_mp.width - inst->enc_raw_width= ); + left_offset =3D 0; + top_offset =3D 0; + } } =20 payload[0] =3D FIELD_PREP(GENMASK(31, 16), left_offset) | top_offset; diff --git a/drivers/media/platform/qcom/iris/iris_venc.c b/drivers/media/p= latform/qcom/iris/iris_venc.c index 50a3eb975a2523abf1c2df128a66a762a1ed35c6..7ad747d2272f029e69a56572a18= 8a032f898a3fb 100644 --- a/drivers/media/platform/qcom/iris/iris_venc.c +++ b/drivers/media/platform/qcom/iris/iris_venc.c @@ -62,8 +62,8 @@ int iris_venc_inst_init(struct iris_inst *inst) =20 inst->crop.left =3D 0; inst->crop.top =3D 0; - inst->crop.width =3D f->fmt.pix_mp.width; - inst->crop.height =3D f->fmt.pix_mp.height; + inst->crop.width =3D DEFAULT_WIDTH; + inst->crop.height =3D DEFAULT_HEIGHT; =20 inst->operating_rate =3D DEFAULT_FPS; inst->frame_rate =3D DEFAULT_FPS; --=20 2.43.0 From nobody Fri Dec 19 14:24:46 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D1872C21F4 for ; Thu, 6 Nov 2025 03:30:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399856; cv=none; b=uNY+mGo+p0otV/coI4BO+lqSs00wabIF1ugGgP9bFgk+RmOI1RqKYhUMas4Y0Z8/UcWXd9cHo1VXSw6J5n/6LWaK9cVo11Q2slOpheZGYa4ggBupwyfiUSzOFHUpcPxx/QCHCHOKNu5wa34CF6AdO4R7zXDAAfy0v3KDpgM6Qiw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399856; c=relaxed/simple; bh=BpxahtdTfL5p/xIwFqdTHXv0tK55J86bKYgLYHC6cqg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iNWWT627I9ENIyHUsea3iKdC5yXRbGV8M5qXIRFu688NXus/vRCdsZVg2MStHMwTOhHHe4BCKvYA41260W7qHGtJBksDi+eNeHfoBF+z29wukE1YBNjpvEDJkGfYH3kVVtXvG78RhHEVcc2CG6ybj/5JdK7WDSbAUwv15a7Xbpg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Skes8fZc; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=NrLhBSOe; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Skes8fZc"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="NrLhBSOe" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5A5KF5U21688977 for ; Thu, 6 Nov 2025 03:30:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 8untyUp5XVd9oafzJRcBMx5+8dRuRoZCKUc8/GlPjfo=; b=Skes8fZc6ghFYmKB UrXCdUzKZ8wF3+iTIfow/TzhCDRYelQfAVjYYXdgPcX7e/GrktUKdl17iRfm8JNq 5fqEdFZv6PMV57f+Qazx7ebEHmu2qXcic5Zm220iKys0cEfqcWQUyFj+6RxSo/GL GSjUFXPRny0et8DNJ2ndlqFjZ6kQo0qHwklpGihHqg9TU19k7rFDoP5/bfegntw0 37cnEC2ohU5SCMsEGCHITjT72xpqete7tXnAZb8sKu5VdJxPXI0pIirRrkVIXOrC lU63ysDVQqVTrKeer4Llsv67kRhFCONmBkRaMBW1tvhAZZ8gp28Qc69Ur0HOx2GJ MQTGFA== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4a88pja3fb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Nov 2025 03:30:52 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-28bd8b3fa67so6738195ad.2 for ; Wed, 05 Nov 2025 19:30:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762399852; x=1763004652; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=8untyUp5XVd9oafzJRcBMx5+8dRuRoZCKUc8/GlPjfo=; b=NrLhBSOeUTcTuu+F7LXWDssq7gNnVA86JWlSD7nFcf58qPOTLgfhLsyJbKBY/tVT35 2TzTbxDYnDYTRQJwS8T1Z1uCuNtRPEwKrXMvjwbtsx8w+OGE3Zq4iFEXLaQsfALKwds8 st7sgrV3L73Q/zarcVu9bx2Oy8gayaIG0NdEHkahiEsmjfaV45fDBL8roKOJ97c0yWJ1 RxJSrjLOEQGx8sTQfYZaDDZ5PPGcpSRIG5N5xxVyb8bvpPoeeRC/pvJIthGhG7zYTTwt rKeBdEJixsr/eSDOAa/neMhGJISyNazvk6iL1sRiocwWhCB/UkoiyTbLa1qdUvUESmSS u5XA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762399852; x=1763004652; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8untyUp5XVd9oafzJRcBMx5+8dRuRoZCKUc8/GlPjfo=; b=foehSf0gi6fCha1jJmAqy8doEf4+Jr4YSKm22fBqhq5hctvH3Rjexse5LVIoX/BXsr nnRDklLrbgLvh1h9tLOPpOFLfmnNW/0uPaLmKuya+rIl9F1U56TtQI4xWw59cwHGLYTp FqeomHeMx2l503qt2kKdk0KJj4gIfsfxe9yLPg/LnGl0LlozPygMwim0hmFP2M2/YOh3 mnkv+HuTyR9e2Hcd8IddoplQAP+mpH6z+6NtW+Q19DvYoYiKl07Soqpsv6vna6AjJa52 LgUk2QAwamkKnmEAwxqjoMJ2IoKwOrapLWz9ne1vxLUkFsemknfbvpnoz3MSaBTVHJmp g2gA== X-Forwarded-Encrypted: i=1; AJvYcCWMcUf2FR6VO1NlPd/Zw86Jp0TdhElFIrE0Jl+8ivk5byjrwmcVh067zWyj/qihYiWOteJfw+Uj/taQIFA=@vger.kernel.org X-Gm-Message-State: AOJu0YzpPwvm3hDdatUC5VaUcXD8n2FhvhY6J/52qCb0yRkcrDkjttPX H//OxhwOrO9kmOIZGgTA2E3rkqWtXRRvAFAN+LqDyF6moU+AXF743LpBw/Iyxgv9gtCtoByAOPz W4F+PUTg9O65z2r566OV3CvP2NC6lMo3yiR1lf3IRrGBYQLlnbQdqBZAjjYlwwbA9qoA= X-Gm-Gg: ASbGnctoYTLYA91oJlUoGX3zhsahT/b8j/PzpeblMFaZmYJT/r8v3yIT7Q8uez8jm3J ONKXVow+wZ6gJSgmPKG1RCbtKmJ/3Wjmlwhy8cD8L5bE3EoPRRwdAtM//afUQEHJzBHHWC1XeTc MmaWt9cugDEGQANu22Pj8PT8/44IqF18cW03CtDERveVKctswCouYgvCwIkAmDpMdJG3j++RKSL dJZhZ1dYzUeYQimoBJxALQJC82raBf+k/S2L3+KCLnALfHY/ydeC4liE9rOkDm68DnEqNW2BjvX kaqiu/hRoviQ6B6tvVYItco+wNUfIbB0pvVgVSBbFhk2uE3FVP+J8cXKTIo3GR87iy1jK/DBfp8 EGCsKlzOHIzeUQiBs6Cse8ZZ+YZ6k3yUwbPPwG4WHDc5RUuDkwrUp9lsCa0wxGTMoRNOHoAF6Gw == X-Received: by 2002:a17:902:ec90:b0:295:68dd:4ebf with SMTP id d9443c01a7336-2962ad26752mr80759045ad.16.1762399851869; Wed, 05 Nov 2025 19:30:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IGQEt1tm9bbq/1JmTVa6+9G1gTrExHNXzMEjCM4CI/zvcuS9YM7pCKLOAqGzPRf1Uuz5/0q5A== X-Received: by 2002:a17:902:ec90:b0:295:68dd:4ebf with SMTP id d9443c01a7336-2962ad26752mr80758705ad.16.1762399851314; Wed, 05 Nov 2025 19:30:51 -0800 (PST) Received: from WANGAOW-LAB01.ap.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29651cd0060sm10361925ad.108.2025.11.05.19.30.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 19:30:50 -0800 (PST) From: Wangao Wang Date: Thu, 06 Nov 2025 11:30:35 +0800 Subject: [PATCH v4 3/6] media: qcom: iris: Add scale support for encoder Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251106-iris_encoder_enhancements-v4-3-5d6cff963f1b@oss.qualcomm.com> References: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> In-Reply-To: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang , Neil Armstrong , quic_qiweil@quicinc.com, quic_renjiang@quicinc.com X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762399836; l=9501; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=BpxahtdTfL5p/xIwFqdTHXv0tK55J86bKYgLYHC6cqg=; b=0Rzmx8hF2HjhyTw+OLVTJIEn9AR8f33d7sRBq3xY1spd1Y6+ZBstOWRQP7VARKEieApYKgTgt dUjlUKFl6qBCQ8s6K937Ynt/D2PC35rci1pa7ITmIYRPf1PP2TTtYfY X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Proofpoint-GUID: proRsGXqiDqLynU7r2L6bUxGeq4K8LXH X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTA2MDAyNiBTYWx0ZWRfX1emW70VTHp+y 4gfXPnF4F6vO127K9W/bjMeLjzkoUVuOcH36sLOdJwOiOs3Tty8prZFDMsDrjpP2/KeowQoKo6I WqnyD0YMtpFRg7W7s92WfVKVZLhn+qdc0Rk/3yzVowAi/J+Z13XDqTwaEcraL+7F/BiBIiKmlsm mW46OSx13Mq0+SrCPmKLMo25QYltFx4C2KdTdziUdrOlWL955tjNcx2Mf/8sWZLg3O5RXcyHc+N efPm4d2zFCEpdXFS4D//FT6BpoDjRDmzzmSgGnyttBh+fNkZ4cNPM+YvwcECz6tnt+VRLnKe2Ls 8U1EFZFQTN32dgv5yocoEW3V4FLdnw3kgqmervJersbv7RprmoL8LTHZYJsCm3P3utEBM76eGR4 UO6rM+d4ihLlalq96al1z4kweOfNlw== X-Proofpoint-ORIG-GUID: proRsGXqiDqLynU7r2L6bUxGeq4K8LXH X-Authority-Analysis: v=2.4 cv=ZODaWH7b c=1 sm=1 tr=0 ts=690c166c cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=Z8iH8PakIHK9AZBxCNEA:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-05_09,2025-11-03_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 suspectscore=0 phishscore=0 spamscore=0 clxscore=1015 impostorscore=0 malwarescore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511060026 Add members enc_scale_width, enc_scale_height to the struct iris_inst to support scale requirements. Add output width and height settings in iris_venc_s_fmt_output to enable scaling functionality. Add VPSS buffer to platform data, which the scale function requires. Tested-by: Neil Armstrong # on SM8650-HDK Signed-off-by: Wangao Wang --- .../platform/qcom/iris/iris_hfi_gen2_command.c | 10 ++++++---- .../platform/qcom/iris/iris_hfi_gen2_response.c | 2 ++ drivers/media/platform/qcom/iris/iris_instance.h | 4 ++++ .../media/platform/qcom/iris/iris_platform_gen2.c | 12 +++++++++++ drivers/media/platform/qcom/iris/iris_venc.c | 23 ++++++++++++++++++= +++- drivers/media/platform/qcom/iris/iris_vpu_buffer.c | 9 +++++---- 6 files changed, 51 insertions(+), 9 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index 69034e1ea8eb64440646776a40dcc657453916db..815e3e435fbc5a36efb633bc0cc= 330ff8e86ad47 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -194,8 +194,8 @@ static int iris_hfi_gen2_set_bitstream_resolution(struc= t iris_inst *inst, u32 pl payload_type =3D HFI_PAYLOAD_U32; } else { codec_align =3D inst->codec =3D=3D V4L2_PIX_FMT_HEVC ? 32 : 16; - resolution =3D ALIGN(inst->fmt_dst->fmt.pix_mp.width, codec_align) << 16= | - ALIGN(inst->fmt_dst->fmt.pix_mp.height, codec_align); + resolution =3D ALIGN(inst->enc_scale_width, codec_align) << 16 | + ALIGN(inst->enc_scale_height, codec_align); inst_hfi_gen2->dst_subcr_params.bitstream_resolution =3D resolution; payload_type =3D HFI_PAYLOAD_32_PACKED; } @@ -239,8 +239,10 @@ static int iris_hfi_gen2_set_crop_offsets(struct iris_= inst *inst, u32 plane) left_offset =3D inst->crop.left; top_offset =3D inst->crop.top; } else { - bottom_offset =3D (inst->fmt_dst->fmt.pix_mp.height - inst->enc_raw_hei= ght); - right_offset =3D (inst->fmt_dst->fmt.pix_mp.width - inst->enc_raw_width= ); + bottom_offset =3D (ALIGN(inst->enc_scale_height, codec_align) - + inst->enc_scale_height); + right_offset =3D (ALIGN(inst->enc_scale_width, codec_align) - + inst->enc_scale_width); left_offset =3D 0; top_offset =3D 0; } diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c b/dr= ivers/media/platform/qcom/iris/iris_hfi_gen2_response.c index 2f1f118eae4f6462ab1aa1d16844b34e6e699f1e..dc3e606b6ab429a1d15536fa831= 6afb1e384d674 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c @@ -54,6 +54,8 @@ static u32 iris_hfi_gen2_buf_type_to_driver(struct iris_i= nst *inst, return BUF_SCRATCH_2; case HFI_BUFFER_PERSIST: return BUF_PERSIST; + case HFI_BUFFER_VPSS: + return BUF_VPSS; default: return 0; } diff --git a/drivers/media/platform/qcom/iris/iris_instance.h b/drivers/med= ia/platform/qcom/iris/iris_instance.h index a9892988c10bc28e9b2d8c3b5482e99b5b9af623..0b36092fe4e7296da2f66aecf90= 83f7f1edc5459 100644 --- a/drivers/media/platform/qcom/iris/iris_instance.h +++ b/drivers/media/platform/qcom/iris/iris_instance.h @@ -66,6 +66,8 @@ struct iris_fmt { * @hfi_rc_type: rate control type * @enc_raw_width: source image width for encoder instance * @enc_raw_height: source image height for encoder instance + * @enc_scale_width: scale width for encoder instance + * @enc_scale_height: scale height for encoder instance */ =20 struct iris_inst { @@ -106,6 +108,8 @@ struct iris_inst { u32 hfi_rc_type; u32 enc_raw_width; u32 enc_raw_height; + u32 enc_scale_width; + u32 enc_scale_height; }; =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index 36d69cc73986b74534a2912524c8553970fd862e..d3306189d902a1f42666010468c= 9e4e4316a66e1 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -729,6 +729,10 @@ static const u32 sm8550_dec_op_int_buf_tbl[] =3D { BUF_DPB, }; =20 +static const u32 sm8550_enc_ip_int_buf_tbl[] =3D { + BUF_VPSS, +}; + static const u32 sm8550_enc_op_int_buf_tbl[] =3D { BUF_BIN, BUF_COMV, @@ -816,6 +820,8 @@ struct iris_platform_data sm8550_data =3D { .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), =20 + .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, + .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; @@ -908,6 +914,8 @@ struct iris_platform_data sm8650_data =3D { .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), =20 + .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, + .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; @@ -989,6 +997,8 @@ struct iris_platform_data sm8750_data =3D { .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), =20 + .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, + .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; @@ -1077,6 +1087,8 @@ struct iris_platform_data qcs8300_data =3D { .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), =20 + .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, + .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; diff --git a/drivers/media/platform/qcom/iris/iris_venc.c b/drivers/media/p= latform/qcom/iris/iris_venc.c index 7ad747d2272f029e69a56572a188a032f898a3fb..f573408a3fc66e1bbc7814a8fc7= 953158e043fce 100644 --- a/drivers/media/platform/qcom/iris/iris_venc.c +++ b/drivers/media/platform/qcom/iris/iris_venc.c @@ -70,6 +70,8 @@ int iris_venc_inst_init(struct iris_inst *inst) =20 inst->enc_raw_width =3D DEFAULT_WIDTH; inst->enc_raw_height =3D DEFAULT_HEIGHT; + inst->enc_scale_width =3D DEFAULT_WIDTH; + inst->enc_scale_height =3D DEFAULT_HEIGHT; =20 memcpy(&inst->fw_caps[0], &core->inst_fw_caps_enc[0], INST_FW_CAP_MAX * sizeof(struct platform_inst_fw_cap)); @@ -188,15 +190,32 @@ int iris_venc_try_fmt(struct iris_inst *inst, struct = v4l2_format *f) =20 static int iris_venc_s_fmt_output(struct iris_inst *inst, struct v4l2_form= at *f) { + const struct iris_fmt *venc_fmt; struct v4l2_format *fmt; + u32 codec_align; =20 iris_venc_try_fmt(inst, f); =20 - if (!(find_format(inst, f->fmt.pix_mp.pixelformat, f->type))) + venc_fmt =3D find_format(inst, f->fmt.pix_mp.pixelformat, f->type); + if (!venc_fmt) return -EINVAL; =20 + codec_align =3D venc_fmt->pixfmt =3D=3D V4L2_PIX_FMT_HEVC ? 32 : 16; + fmt =3D inst->fmt_dst; fmt->type =3D V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; + /* + * If output format size !=3D input format size, + * it is considered a scaling case, + * and the scaled size needs to be saved. + */ + if (f->fmt.pix_mp.width !=3D inst->fmt_src->fmt.pix_mp.width || + f->fmt.pix_mp.height !=3D inst->fmt_src->fmt.pix_mp.height) { + inst->enc_scale_width =3D f->fmt.pix_mp.width; + inst->enc_scale_height =3D f->fmt.pix_mp.height; + fmt->fmt.pix_mp.width =3D ALIGN(f->fmt.pix_mp.width, codec_align); + fmt->fmt.pix_mp.height =3D ALIGN(f->fmt.pix_mp.height, codec_align); + } fmt->fmt.pix_mp.num_planes =3D 1; fmt->fmt.pix_mp.plane_fmt[0].bytesperline =3D 0; fmt->fmt.pix_mp.plane_fmt[0].sizeimage =3D iris_get_buffer_size(inst, BUF= _OUTPUT); @@ -254,6 +273,8 @@ static int iris_venc_s_fmt_input(struct iris_inst *inst= , struct v4l2_format *f) =20 inst->enc_raw_width =3D f->fmt.pix_mp.width; inst->enc_raw_height =3D f->fmt.pix_mp.height; + inst->enc_scale_width =3D f->fmt.pix_mp.width; + inst->enc_scale_height =3D f->fmt.pix_mp.height; =20 if (f->fmt.pix_mp.width !=3D inst->crop.width || f->fmt.pix_mp.height !=3D inst->crop.height) { diff --git a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_buffer.c index 4463be05ce165adef6b152eb0c155d2e6a7b3c36..db5adadd1b39c06bc41ae6f1b3d= 2f924b3ebf150 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_buffer.c @@ -1131,10 +1131,11 @@ static u32 iris_vpu_enc_arp_size(struct iris_inst *= inst) =20 inline bool is_scaling_enabled(struct iris_inst *inst) { - return inst->crop.left !=3D inst->compose.left || - inst->crop.top !=3D inst->compose.top || - inst->crop.width !=3D inst->compose.width || - inst->crop.height !=3D inst->compose.height; + struct v4l2_pix_format_mplane *dst_fmt =3D &inst->fmt_dst->fmt.pix_mp; + struct v4l2_pix_format_mplane *src_fmt =3D &inst->fmt_src->fmt.pix_mp; + + return dst_fmt->width !=3D src_fmt->width || + dst_fmt->height !=3D src_fmt->height; } =20 static inline --=20 2.43.0 From nobody Fri Dec 19 14:24:46 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 56C29245021 for ; Thu, 6 Nov 2025 03:30:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399860; cv=none; b=K42+AK/tSyJDuGZQWGUUdqppNWb/qrYbCrqUKxQ2bOXDMk0FYybk2vyD8KsAHOFhaL9da33H59BAD5IHv7Kal93Bq52zgNxma+I1bSqqfH/hUH+6CcvdwZMby76cQAkhB8xbHUgvb6WY2IcMoJ4Eof3RbCoPa0J4JJA9tinsGKU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399860; c=relaxed/simple; bh=o9jgvd8ifbR3z9utxRdBFlJf/j37qH4/sIxqwnCFP8g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ELfpR/mN3lce4JM4zUQ3IBWEUmXoIB46ANf6lu/u+CJcin3oIyenyQv98LJkvWTjlIFMcLRfxqOOVDmPQY+aDcwv730C1XpY94krR9u8Ux+9QU5ZvIIPWbBYGU6HFK589DVwY17Zy/s0Pc7IfvqOYJ7UJTVk6VCSAqMnnnEcMlI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=noW29noD; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Ab54APEK; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="noW29noD"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Ab54APEK" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5A5KF5kJ1805103 for ; Thu, 6 Nov 2025 03:30:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= yY9n6nOoq1wNPf4SZLepDE9CcpFjRgyTx4OkTbZ6Lok=; b=noW29noDjmbKZkzc iHPLQbpOd6ghftXovgQeW8zlLVoh9rmRpOq9b0ExXwOs4GWqoCRqCCz6NfB2lywk RrHjh0Ls3dUwXrJ/WqbHD6CBSu+JMfNvZJYh4nEpHAmrGwuA5eSHEipsefCxq0Kj t8lGuIqnGtT5NAUC7oaF9BCq+abUmab27SKa6ppAyLwBoZwpHO4HtTkrXcAGLgxz 95QPwjGG6hj83ohr+kuJKd0DHkLnFHPu2EayvEUH6GvKJQ/0x8DiHcCWTPTUd3dI gVLlcsgTDj7dnlMQvTV5avcEQkA7o+DppsypI606Aq7ggrN3XrszhhFCXdw6RsIO jeJG9w== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4a8c8s992d-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Nov 2025 03:30:57 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-27c62320f16so7864065ad.1 for ; Wed, 05 Nov 2025 19:30:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762399856; x=1763004656; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=yY9n6nOoq1wNPf4SZLepDE9CcpFjRgyTx4OkTbZ6Lok=; b=Ab54APEKYZPrk3pjjZ7BARFUEUZt0jBSpERpgzqzz1LjfRKv2lLMVlFYdK+JQ/tIGZ BH4WrGjaTHTw8T3BQBMeKRo8o+Rl8LxF+Yiqw0+XIrZ1eMeu324nciR/ka5AgMzfBbgu 2F3sskMI/PHr/ojI4TrhXfhSfRTbdiIbLrQqo0aMc4qNAJbjZ86Q7aSHrzvY151T58bd dfsnghtkjtyQjoZGaQrN1lWrEqwJW5OnH9y8kLv8OUGAmhpcKUIVWJipTruGOgCbpX+/ SFX1OqQLums9IlQQxpvtwmWzPuYHW/MMy9EMQpqRH6u6Cticg9uweU1ArD6pemcAXlca JKUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762399856; x=1763004656; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yY9n6nOoq1wNPf4SZLepDE9CcpFjRgyTx4OkTbZ6Lok=; b=MVRjBWSwF6njUAu8dGSQqS2DB7HSvUNr89nmjO747Ug0H0/EC4/ZgaW4UBo+hPqP8p y7v0l/K3ysicB0/B5FzIaYsua8paEmAt31bg0ivZEmYKZYFKjWDtS/zZbZXmjW4ts6+N KxpcJdhxEkFnOstJqLaEFlRgUCI1blsnc8MEbRAwYSUKWgkyyzgfgnVcQfAncRHCZzFD FClYLMR6rLs0I9uvNo1uY2dICRkvJtjEwan3ngqL0BfKcIqYw3/NC2bm0QqPptsT5YYX jKfoltgrCVzwMwnpEg/cJ1+xvjlcgPsiGrEzgTH7QZhkkyVe+qlLM4kooQN1obMJviIQ SDHQ== X-Forwarded-Encrypted: i=1; AJvYcCUJ7L6vt8GxzjtalVQCGJEaWGs6ijkacyIkp96j+gR83JKMmpB4Ni9y6HKEJelb9jfjNSMia/Ahe81Db7c=@vger.kernel.org X-Gm-Message-State: AOJu0YyLW5IVGll8MlVTFk6smD1ahUS24J6wGQ6F3BaHf0kHyqEJFXYS UDoJH0lfvLOSFfrdi/qKjs2CJ8ttGUqaNUKllbL+2bUkqZEs+yeMDfN3w8/Mv2By1wMsw0DHjHi h03K1EZ3aRmLoKPRRGhvrTLiRGwOaByFevntHpDbPsyVekM8qJUhPesbk23m0vFxdFZg= X-Gm-Gg: ASbGnct1fndxLtl/Bnle1oMj35zQu1+FQchcAzSKUA3SNA7caqSwfmkpUtPysTAeKZU r+WKexWEW9x5LASOzT0VugX20OVV6eVmL376PmrCCivJzBuo+mADRCgGQhm8QKzfu6GWooxeo4e FPvApCjlmXBIDDFaVTp+1n6BO9U35nYNKxoKY3F2wWy7FYPCQIyEk92X/HMwM2AyxJaaqn6/U6O o06ESBR6uuQWCK6btsR/bgUzxE9V3Qd3GjEdGmnflQwg1uGLn5diuxy7Mcvp7YlvIUzuMR2k2gC IcG2AME/XWYtCKFJR2OdJA8smUS39vj9d/Mx3uPGh97nirrVsCKw/nLefvEiD5Pq2R9qDmuRTA8 xkrRJO+b95uikeCGQv3fMtxlr4lznWMqHJvaz+eqW38jZzCMbTFkUUUNpHI20vNt36zgSzOegsw == X-Received: by 2002:a17:903:3d0f:b0:272:c95c:866 with SMTP id d9443c01a7336-2962add9ff7mr78614775ad.20.1762399855976; Wed, 05 Nov 2025 19:30:55 -0800 (PST) X-Google-Smtp-Source: AGHT+IF9QTltPz9RRmPwDkcDQIOPYHfaIIJz6Spx26cH1ZGrR/KWzltXDw4loiZpEHpRNl258LBKLw== X-Received: by 2002:a17:903:3d0f:b0:272:c95c:866 with SMTP id d9443c01a7336-2962add9ff7mr78614225ad.20.1762399855352; Wed, 05 Nov 2025 19:30:55 -0800 (PST) Received: from WANGAOW-LAB01.ap.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29651cd0060sm10361925ad.108.2025.11.05.19.30.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 19:30:54 -0800 (PST) From: Wangao Wang Date: Thu, 06 Nov 2025 11:30:36 +0800 Subject: [PATCH v4 4/6] media: qcom: iris: Add rotation support for encoder Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251106-iris_encoder_enhancements-v4-4-5d6cff963f1b@oss.qualcomm.com> References: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> In-Reply-To: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang , Neil Armstrong , quic_qiweil@quicinc.com, quic_renjiang@quicinc.com X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762399836; l=14609; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=o9jgvd8ifbR3z9utxRdBFlJf/j37qH4/sIxqwnCFP8g=; b=RNvq9OuSHeE40yWjpKSiPSsrHRX3MJelKRepqEhEPIJoVaJTN0DDZ5fpAY+4XNrEaZ877Vu++ Tm3c4j7jAHaAMAACyokZ0sfzG2MNBkfjrDtIFw2Jt1khX1Ju7tmb4JD X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTA2MDAyNiBTYWx0ZWRfX9GvTrWLFv2/s FZo8jooqcL0bbWa48bQet/gDsfIY+GCaKz4hSpVTB1dtzkhFZ7qrC3EOaXsaslHaoioOHj+HVLD edrgxU4Imk2K5OaseHwFYcrj9kXj9M3KLOAs2lnotZr147KE73N49+RmRoxn6KNHjjisd7+0V7Y 6ytEiqiz8cUh/gyCJ7c1UqAWjFjw0aCbgYXZpwnM8somkrQhJ7ds9bZQIQJ7IKg65c/U8jxQTyy oIiUpqb4iIs2/7ujWQrtQkxt3FteYbRH6ZL2Q/N+RkHM1Ah8AKpfjgKjXbixa3XiA2R4iracbzl eQQj/vB3hsyfL3UxDln3l+C4vrm6jmfPy3H7ivPoS2lAyZGY1czXekYKfCc+rEWZU20Md9nDpcd EqdzrpVHI1VYZwS7nJef2Z65WsGdrQ== X-Authority-Analysis: v=2.4 cv=RLu+3oi+ c=1 sm=1 tr=0 ts=690c1671 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=0PQ7lrkXE1FeiLWnmyUA:9 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: vBp0Y_I3cDPxUFtIB8HqfL8cv067A80V X-Proofpoint-GUID: vBp0Y_I3cDPxUFtIB8HqfL8cv067A80V X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-05_09,2025-11-03_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 priorityscore=1501 clxscore=1015 impostorscore=0 phishscore=0 adultscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511060026 Add rotation control for encoder, enabling V4L2_CID_ROTATE and handling 90/180/270 degree rotation. Co-developed-by: Neil Armstrong Signed-off-by: Neil Armstrong Tested-by: Neil Armstrong # on SM8650-HDK Signed-off-by: Wangao Wang Reviewed-by: Dikshita Agarwal --- 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 | 51 +++++++++++++-----= ---- 9 files changed, 123 insertions(+), 31 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/= platform/qcom/iris/iris_ctrls.c index 754a5ad718bc37630bb861012301df7a2e7342a1..00949c207ddb0203e51df359214= bf23c3d8265d0 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.c +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c @@ -98,6 +98,8 @@ static enum platform_inst_fw_cap_type iris_get_cap_id(u32= id) return B_FRAME_QP_H264; case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP: return B_FRAME_QP_HEVC; + case V4L2_CID_ROTATE: + return ROTATION; default: return INST_FW_CAP_MAX; } @@ -185,6 +187,8 @@ static u32 iris_get_v4l2_id(enum platform_inst_fw_cap_t= ype cap_id) return V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP; case B_FRAME_QP_HEVC: return V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP; + case ROTATION: + return V4L2_CID_ROTATE; default: return 0; } @@ -883,6 +887,36 @@ int iris_set_qp_range(struct iris_inst *inst, enum pla= tform_inst_fw_cap_type cap &range, sizeof(range)); } =20 +int iris_set_rotation(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id) +{ + const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; + u32 hfi_val; + + switch (inst->fw_caps[cap_id].value) { + case 0: + hfi_val =3D HFI_ROTATION_NONE; + return 0; + case 90: + hfi_val =3D HFI_ROTATION_90; + break; + case 180: + hfi_val =3D HFI_ROTATION_180; + break; + case 270: + hfi_val =3D HFI_ROTATION_270; + break; + default: + return -EINVAL; + } + + return hfi_ops->session_set_property(inst, hfi_id, + HFI_HOST_FLAGS_NONE, + iris_get_port_info(inst, cap_id), + HFI_PAYLOAD_U32, + &hfi_val, sizeof(u32)); +} + int iris_set_properties(struct iris_inst *inst, u32 plane) { const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.h b/drivers/media/= platform/qcom/iris/iris_ctrls.h index 30af333cc4941e737eb1ae83a6944b4192896e23..3ea0a00c7587a516f19bb7307a0= eb9a60c856ab0 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.h +++ b/drivers/media/platform/qcom/iris/iris_ctrls.h @@ -32,6 +32,7 @@ int iris_set_min_qp(struct iris_inst *inst, enum platform= _inst_fw_cap_type cap_i int iris_set_max_qp(struct iris_inst *inst, enum platform_inst_fw_cap_type= cap_id); int iris_set_frame_qp(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); int iris_set_qp_range(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); +int iris_set_rotation(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); int iris_set_properties(struct iris_inst *inst, u32 plane); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index 815e3e435fbc5a36efb633bc0cc330ff8e86ad47..2f6a3c0e51134f0ef24336a66f3= 4b4b61882554b 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -180,22 +180,36 @@ static int iris_hfi_gen2_set_raw_resolution(struct ir= is_inst *inst, u32 plane) sizeof(u32)); } =20 +static inline u32 iris_hfi_get_aligned_resolution(struct iris_inst *inst, = u32 width, u32 height) +{ + u32 codec_align =3D inst->codec =3D=3D V4L2_PIX_FMT_HEVC ? 32 : 16; + + return (ALIGN(width, codec_align) << 16 | ALIGN(height, codec_align)); +} + static int iris_hfi_gen2_set_bitstream_resolution(struct iris_inst *inst, = u32 plane) { struct iris_inst_hfi_gen2 *inst_hfi_gen2 =3D to_iris_inst_hfi_gen2(inst); u32 port =3D iris_hfi_gen2_get_port(inst, plane); enum hfi_packet_payload_info payload_type; - u32 resolution, codec_align; + u32 width, height; + u32 resolution; =20 if (inst->domain =3D=3D DECODER) { - resolution =3D inst->fmt_src->fmt.pix_mp.width << 16 | - inst->fmt_src->fmt.pix_mp.height; + width =3D inst->fmt_src->fmt.pix_mp.width; + height =3D inst->fmt_src->fmt.pix_mp.height; + resolution =3D iris_hfi_get_aligned_resolution(inst, width, height); inst_hfi_gen2->src_subcr_params.bitstream_resolution =3D resolution; payload_type =3D HFI_PAYLOAD_U32; } else { - codec_align =3D inst->codec =3D=3D V4L2_PIX_FMT_HEVC ? 32 : 16; - resolution =3D ALIGN(inst->enc_scale_width, codec_align) << 16 | - ALIGN(inst->enc_scale_height, codec_align); + if (is_rotation_90_or_270(inst)) { + width =3D inst->enc_scale_height; + height =3D inst->enc_scale_width; + } else { + width =3D inst->enc_scale_width; + height =3D inst->enc_scale_height; + } + resolution =3D iris_hfi_get_aligned_resolution(inst, width, height); inst_hfi_gen2->dst_subcr_params.bitstream_resolution =3D resolution; payload_type =3D HFI_PAYLOAD_32_PACKED; } @@ -239,10 +253,17 @@ static int iris_hfi_gen2_set_crop_offsets(struct iris= _inst *inst, u32 plane) left_offset =3D inst->crop.left; top_offset =3D inst->crop.top; } else { - bottom_offset =3D (ALIGN(inst->enc_scale_height, codec_align) - - inst->enc_scale_height); - right_offset =3D (ALIGN(inst->enc_scale_width, codec_align) - - inst->enc_scale_width); + if (is_rotation_90_or_270(inst)) { + bottom_offset =3D (ALIGN(inst->enc_scale_width, codec_align) - + inst->enc_scale_width); + right_offset =3D (ALIGN(inst->enc_scale_height, codec_align) - + inst->enc_scale_height); + } else { + bottom_offset =3D (ALIGN(inst->enc_scale_height, codec_align) - + inst->enc_scale_height); + right_offset =3D (ALIGN(inst->enc_scale_width, codec_align) - + inst->enc_scale_width); + } left_offset =3D 0; top_offset =3D 0; } diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_defines.h index aa1f795f5626c1f76a32dd650302633877ce67be..4edcce7faf5e2f74bfecfdbf574= 391d5b1c9cca5 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h @@ -83,6 +83,15 @@ enum hfi_seq_header_mode { }; =20 #define HFI_PROP_SEQ_HEADER_MODE 0x03000149 + +enum hfi_rotation { + HFI_ROTATION_NONE =3D 0x00000000, + HFI_ROTATION_90 =3D 0x00000001, + HFI_ROTATION_180 =3D 0x00000002, + HFI_ROTATION_270 =3D 0x00000003, +}; + +#define HFI_PROP_ROTATION 0x0300014b #define HFI_PROP_SIGNAL_COLOR_INFO 0x03000155 #define HFI_PROP_PICTURE_TYPE 0x03000162 #define HFI_PROP_DEC_DEFAULT_HEADER 0x03000168 diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 58d05e0a112eed25faea027a34c719c89d6c3897..9a4232b1c64eea6ce909e1e3117= 69dd958b84c6e 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -140,6 +140,7 @@ enum platform_inst_fw_cap_type { P_FRAME_QP_HEVC, B_FRAME_QP_H264, B_FRAME_QP_HEVC, + ROTATION, INST_FW_CAP_MAX, }; =20 diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index d3306189d902a1f42666010468c9e4e4316a66e1..c1f83e179d441c45df8d6487dc8= 7e137e482fb63 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -588,6 +588,16 @@ static struct platform_inst_fw_cap inst_fw_cap_sm8550_= enc[] =3D { .flags =3D CAP_FLAG_OUTPUT_PORT, .set =3D iris_set_u32, }, + { + .cap_id =3D ROTATION, + .min =3D 0, + .max =3D 270, + .step_or_mask =3D 90, + .value =3D 0, + .hfi_id =3D HFI_PROP_ROTATION, + .flags =3D CAP_FLAG_OUTPUT_PORT, + .set =3D iris_set_rotation, + }, }; =20 static struct platform_inst_caps platform_inst_cap_sm8550 =3D { diff --git a/drivers/media/platform/qcom/iris/iris_utils.c b/drivers/media/= platform/qcom/iris/iris_utils.c index 85c70a62b1fd2c409fc18b28f64771cb0097a7fd..97465dfbdec1497b1111b9069fd= 56dff286b2d0e 100644 --- a/drivers/media/platform/qcom/iris/iris_utils.c +++ b/drivers/media/platform/qcom/iris/iris_utils.c @@ -124,3 +124,9 @@ int iris_check_core_mbps(struct iris_inst *inst) =20 return 0; } + +bool is_rotation_90_or_270(struct iris_inst *inst) +{ + return inst->fw_caps[ROTATION].value =3D=3D 90 || + inst->fw_caps[ROTATION].value =3D=3D 270; +} diff --git a/drivers/media/platform/qcom/iris/iris_utils.h b/drivers/media/= platform/qcom/iris/iris_utils.h index 75740181122f5bdf93d64d3f43b3a26a9fe97919..b5705d156431a5cf59d645ce988= bc3a3c9b9c5e2 100644 --- a/drivers/media/platform/qcom/iris/iris_utils.h +++ b/drivers/media/platform/qcom/iris/iris_utils.h @@ -51,5 +51,6 @@ void iris_helper_buffers_done(struct iris_inst *inst, uns= igned int type, int iris_wait_for_session_response(struct iris_inst *inst, bool is_flush); int iris_check_core_mbpf(struct iris_inst *inst); int iris_check_core_mbps(struct iris_inst *inst); +bool is_rotation_90_or_270(struct iris_inst *inst); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_buffer.c index db5adadd1b39c06bc41ae6f1b3d2f924b3ebf150..1e54ace966c74956208d88f0683= 7b97b1fd48e17 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_buffer.c @@ -556,6 +556,22 @@ static u32 iris_vpu_dec_scratch1_size(struct iris_inst= *inst) iris_vpu_dec_line_size(inst); } =20 +static inline u32 iris_vpu_enc_get_bitstream_width(struct iris_inst *inst) +{ + if (is_rotation_90_or_270(inst)) + return inst->fmt_dst->fmt.pix_mp.height; + else + return inst->fmt_dst->fmt.pix_mp.width; +} + +static inline u32 iris_vpu_enc_get_bitstream_height(struct iris_inst *inst) +{ + if (is_rotation_90_or_270(inst)) + return inst->fmt_dst->fmt.pix_mp.width; + else + return inst->fmt_dst->fmt.pix_mp.height; +} + static inline u32 size_bin_bitstream_enc(u32 width, u32 height, u32 rc_type) { @@ -638,10 +654,9 @@ static inline u32 hfi_buffer_bin_enc(u32 width, u32 he= ight, static u32 iris_vpu_enc_bin_size(struct iris_inst *inst) { u32 num_vpp_pipes =3D inst->core->iris_platform_data->num_vpp_pipe; + u32 height =3D iris_vpu_enc_get_bitstream_height(inst); + u32 width =3D iris_vpu_enc_get_bitstream_width(inst); u32 stage =3D inst->fw_caps[STAGE].value; - struct v4l2_format *f =3D inst->fmt_dst; - u32 height =3D f->fmt.pix_mp.height; - u32 width =3D f->fmt.pix_mp.width; u32 lcu_size; =20 if (inst->codec =3D=3D V4L2_PIX_FMT_HEVC) @@ -676,9 +691,8 @@ u32 hfi_buffer_comv_enc(u32 frame_width, u32 frame_heig= ht, u32 lcu_size, =20 static u32 iris_vpu_enc_comv_size(struct iris_inst *inst) { - struct v4l2_format *f =3D inst->fmt_dst; - u32 height =3D f->fmt.pix_mp.height; - u32 width =3D f->fmt.pix_mp.width; + u32 height =3D iris_vpu_enc_get_bitstream_height(inst); + u32 width =3D iris_vpu_enc_get_bitstream_width(inst); u32 num_recon =3D 1; u32 lcu_size =3D 16; =20 @@ -958,9 +972,8 @@ u32 hfi_buffer_non_comv_enc(u32 frame_width, u32 frame_= height, static u32 iris_vpu_enc_non_comv_size(struct iris_inst *inst) { u32 num_vpp_pipes =3D inst->core->iris_platform_data->num_vpp_pipe; - struct v4l2_format *f =3D inst->fmt_dst; - u32 height =3D f->fmt.pix_mp.height; - u32 width =3D f->fmt.pix_mp.width; + u32 height =3D iris_vpu_enc_get_bitstream_height(inst); + u32 width =3D iris_vpu_enc_get_bitstream_width(inst); u32 lcu_size =3D 16; =20 if (inst->codec =3D=3D V4L2_PIX_FMT_HEVC) { @@ -1051,9 +1064,8 @@ u32 hfi_buffer_line_enc_vpu33(u32 frame_width, u32 fr= ame_height, bool is_ten_bit static u32 iris_vpu_enc_line_size(struct iris_inst *inst) { u32 num_vpp_pipes =3D inst->core->iris_platform_data->num_vpp_pipe; - struct v4l2_format *f =3D inst->fmt_dst; - u32 height =3D f->fmt.pix_mp.height; - u32 width =3D f->fmt.pix_mp.width; + u32 height =3D iris_vpu_enc_get_bitstream_height(inst); + u32 width =3D iris_vpu_enc_get_bitstream_width(inst); u32 lcu_size =3D 16; =20 if (inst->codec =3D=3D V4L2_PIX_FMT_HEVC) { @@ -1069,9 +1081,8 @@ static u32 iris_vpu_enc_line_size(struct iris_inst *i= nst) static u32 iris_vpu33_enc_line_size(struct iris_inst *inst) { u32 num_vpp_pipes =3D inst->core->iris_platform_data->num_vpp_pipe; - struct v4l2_format *f =3D inst->fmt_dst; - u32 height =3D f->fmt.pix_mp.height; - u32 width =3D f->fmt.pix_mp.width; + u32 height =3D iris_vpu_enc_get_bitstream_height(inst); + u32 width =3D iris_vpu_enc_get_bitstream_width(inst); u32 lcu_size =3D 16; =20 if (inst->codec =3D=3D V4L2_PIX_FMT_HEVC) { @@ -1292,9 +1303,8 @@ static inline u32 hfi_buffer_scratch1_enc(u32 frame_w= idth, u32 frame_height, static u32 iris_vpu_enc_scratch1_size(struct iris_inst *inst) { u32 num_vpp_pipes =3D inst->core->iris_platform_data->num_vpp_pipe; - struct v4l2_format *f =3D inst->fmt_dst; - u32 frame_height =3D f->fmt.pix_mp.height; - u32 frame_width =3D f->fmt.pix_mp.width; + u32 frame_height =3D iris_vpu_enc_get_bitstream_height(inst); + u32 frame_width =3D iris_vpu_enc_get_bitstream_width(inst); u32 num_ref =3D 1; u32 lcu_size; bool is_h265; @@ -1390,9 +1400,8 @@ static inline u32 hfi_buffer_scratch2_enc(u32 frame_w= idth, u32 frame_height, =20 static u32 iris_vpu_enc_scratch2_size(struct iris_inst *inst) { - struct v4l2_format *f =3D inst->fmt_dst; - u32 frame_width =3D f->fmt.pix_mp.width; - u32 frame_height =3D f->fmt.pix_mp.height; + u32 frame_height =3D iris_vpu_enc_get_bitstream_height(inst); + u32 frame_width =3D iris_vpu_enc_get_bitstream_width(inst); u32 num_ref =3D 1; =20 return hfi_buffer_scratch2_enc(frame_width, frame_height, num_ref, --=20 2.43.0 From nobody Fri Dec 19 14:24:46 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 00C722D46D9 for ; Thu, 6 Nov 2025 03:31:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399863; cv=none; b=pWkHdU7q3eBKUwPY9WE8CDm9ARSq7UqUsEaLZ9RHsl7oZptN5tZt3FBFASFUyta8kS3ZIW9idO20zuiFf+8Y79VHCdH/9uyGf4yzeYfaVYC1J9V5cGgja9K/qO/B206gF5jrfek3cPjS0ihcapthfb5J8JVuZIrZm+WI17qU4c0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399863; c=relaxed/simple; bh=fJoAPc83wR1LgHrDfr408IQ1A/7ZxGfeFvE/M2rCaic=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=D10REHjp8md515n4VQ1hrGFQl9f2zy8SVsQS6IOsdL/A3vsLGOThDCW0t3Hi2yOdQniHnFf/j9sCNEBLRvQyUPDY5tWKmPcn2MOsnTWqT/ii+zuD95DFu4TiUQYSUrNgGXOHsWjeAFcatq075PDt3t+orGjouE3cDGGXI/O3iC8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=nzpdbmpw; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZcOg7ICK; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="nzpdbmpw"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZcOg7ICK" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5A5KEjU81938379 for ; Thu, 6 Nov 2025 03:31:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ovGBUB15DEWLk0DVrQSRCkCYrN6zQfyDDY5aUsiUaHo=; b=nzpdbmpwTf6c8P/z yy6nAF2sbpyZKDRQKw2Pj8+sebU3Mr1YaCcIh037GtKKR+imUPjWbHHVSjJm6Unm zicAzNp1TEyEpGMO3pwtdYSo6eQkfYOJ5IJXtfPu/DPVTHqaq/dYgkM5tmXeIejY onHuFHVFcwr/0ewss3EkK/+aw/AVTEizqYeff11UJ8jZB/CpMzfgLRx58xsTYWsK K7ptFWYcBhhm0VUlhqpw4d7p1QwtJuVXJ/XMxsmxD1OvOSO6LXr4jffYPXX7QJh4 /T1wVcYMHn2aL3+evBD+8fcRARC+DeyJhXuXku3wSzo7DqRxKZyukhBf8w3kNdYz ttbMnw== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4a8apgsk3y-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Nov 2025 03:31:00 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-28eb14e3cafso11474825ad.1 for ; Wed, 05 Nov 2025 19:31:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762399860; x=1763004660; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ovGBUB15DEWLk0DVrQSRCkCYrN6zQfyDDY5aUsiUaHo=; b=ZcOg7ICKva9OftrK7YOTQn6+pU9hahgtmsbpGAm/wFs+cVFV3YkTrOth6vod9VXAfN FDngENfhtxoB/ny85tSszahPD0yCXWXXhW27tCViqjW7/I9BDYcECozQV1Kwb0fNFd4b W52OAjDFbgkYxNJOUpz7KN2VGQ63NwvAZdt+rSMfanhLZcFh81eVDMSotq5kuxDEBj1F Ox5dVYFW3ZwuhyQA6ShzZy5JUU+quxP28837bDdAH5ajmHB5pgxPgspU4YSrGOh0/sQg YQ6qQXekGk+WhSCtqht4wcib4mMBAS06klua78YrgONktl+GoGg8JxgkBn3/WIGJZiGr ZViA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762399860; x=1763004660; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ovGBUB15DEWLk0DVrQSRCkCYrN6zQfyDDY5aUsiUaHo=; b=vgd0auv0FyC6hGJh2B+zwl+v2MkxV/x9SGZI37j6HxhtV8lE78QUMC1XsZbhmOWeSN bLoX/r8iY0L8TMlL+DbayqV5L5Q8CFbFNWr0l4bC15gauejAwd4trOZ/gzSQw0TMuMSP srrReqwcYs2Aky2qq5TYfeQ0VDkHrAAH/WhN+bbzkl5KmKm8CNpKXD6iM4P+J/wF1u28 Fqf2/Y0q+SVgSpqgHdHbBVuSVO9m8JCarybcDMCnCLvgAOIeMN2kZSPaInhQos5aglm2 PB6rH8oyrS9pZC755IbuS4VI8je4HhweK+oQ5QQ7/03VwU6k9jrr4viRMAtjg2Z0WY2J w3KA== X-Forwarded-Encrypted: i=1; AJvYcCXjOpDA55cES72imahYN06EWU5Uv5Vjpw0PowFPbIhSAQGaRc727hTl9u+zxREp2J9IX29ak7vt28FyDv4=@vger.kernel.org X-Gm-Message-State: AOJu0YxDOy4AAh0dxXM/MAjqmp5nZwA2OM6bQzQDsXC4tVfu4oNb8Fwv lpOr5pDK2s9+918oPqaTflgVprSXAOsdorDPEB1H/72uM1FIm6AyvcecYM4h4f3EaQskOZ5BaTu O34+gxpvGXj2OwNeQmnOkUHUlkZcOCMatqueF780UUzd99PV7xulUvxj5Xypjih/75zg= X-Gm-Gg: ASbGncsm/Mkl/HhqneL1sbcI1OnGSKA9SwNpHDzLswv+vu1FczLgAc5ycL7Idz4wMUv B+0EeM2qACciWVt5BRkcmI3wlGgmEYrkpZnttE9OwKSzYfyoHPHB2TwxJDNARm2rsLAL9Tq9R7P 7NUFpUO51ZDPEBsu+BSgD88ARVbnU+IOl0lw6OyCCffx72u+W4D/3rDAk6hrd/GOEGOYvaDRwJ7 Hh+rMXEeZyOZudheGPi4QrVbJJIT8D7fnwNtpOwHRBc2ulF99CYTSgQE4UXY6H8l+XgAcwtDS4G I2XlipIY0gtqirXAU+RMJ4ciUVrgm4ClBhwmKrUgwwGY1L3EFlT9w8GYd3pWV8n8TzxbtE8nCvX bqXF/zwOW+hyGvkHPPzmdWwkaQeNMwG8ONC/+VEijY7uIowhoPwRDx2UrmiPmk41I9fPBgrYUCw == X-Received: by 2002:a17:902:e891:b0:295:4d50:aab6 with SMTP id d9443c01a7336-2962ad1ef3cmr74204145ad.18.1762399859488; Wed, 05 Nov 2025 19:30:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IFa9wqU0TEXAeU7IUAuOLwc/rJpAYfELsDgUBzHCnlItiBEGyzp64/a6VsoXvnuBLzhXYS++Q== X-Received: by 2002:a17:902:e891:b0:295:4d50:aab6 with SMTP id d9443c01a7336-2962ad1ef3cmr74203685ad.18.1762399858916; Wed, 05 Nov 2025 19:30:58 -0800 (PST) Received: from WANGAOW-LAB01.ap.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29651cd0060sm10361925ad.108.2025.11.05.19.30.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 19:30:58 -0800 (PST) From: Wangao Wang Date: Thu, 06 Nov 2025 11:30:37 +0800 Subject: [PATCH v4 5/6] media: qcom: iris: Add flip support for encoder Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251106-iris_encoder_enhancements-v4-5-5d6cff963f1b@oss.qualcomm.com> References: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> In-Reply-To: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang , Neil Armstrong , quic_qiweil@quicinc.com, quic_renjiang@quicinc.com X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762399836; l=5542; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=fJoAPc83wR1LgHrDfr408IQ1A/7ZxGfeFvE/M2rCaic=; b=T0GaOjzE+e+efKO46QAWj0k4JjnTIovXMlV2adDExK0q8K/lsFCkWy7s7fyB4syllQBISVwyd BNwjxE4UVpMD6tTD+4YDr/ONSzzQVlJFMevJjtod9siLmuCxvvpIH0B X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTA2MDAyNiBTYWx0ZWRfX2/iTXcX6LtOU SYUK6op2NrH9WQkcyKRjyoDhmFZIsPiEqKrSUXqrVq6kd0CosSUazpQnLra52iemMyPa2rjyphh UWWXxRxRiHiDlynzleIs0luAW/IxCo/9yr4q4kut1IvQX5zsr3mWc+bkb15Fa5eDe0tMyvfdOk/ lPujw12Cyx/tC+7ZBx/JlgGkIUWoWKuYxpt9T2hvqaJ/MjcpO0BO3uma1R3mll/eHICN0OMaOuY cTQBnv0x0G0p/pvpw8g759egAqeW4IOWG6mJvZ+U2Pd0VEtKBFR4sBmiYJh1iMD/jaJo0gOEDcT lta0JcjfDmv3mHSvELEiPLEPfNcY7UIxgfILFKS26o6+oOaHPBfRgMckPTj+JdQnzlfN/Cxz3br k7BjGyS/yLD0vA9O3AtjzWrZRZdroQ== X-Authority-Analysis: v=2.4 cv=LoCfC3dc c=1 sm=1 tr=0 ts=690c1674 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=uxdc-9wEpbf47THqrzgA:9 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: 2O0PVpz5GW3pbIyiml175QRPpgdtYIx4 X-Proofpoint-ORIG-GUID: 2O0PVpz5GW3pbIyiml175QRPpgdtYIx4 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-05_09,2025-11-03_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 malwarescore=0 suspectscore=0 spamscore=0 phishscore=0 impostorscore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511060026 Add support for V4L2_CID_HFLIP and V4L2_CID_VFLIP controls in encoder. Tested-by: Neil Armstrong # on SM8650-HDK Signed-off-by: Wangao Wang Reviewed-by: Dikshita Agarwal --- drivers/media/platform/qcom/iris/iris_ctrls.c | 27 ++++++++++++++++++= ++++ drivers/media/platform/qcom/iris/iris_ctrls.h | 1 + .../platform/qcom/iris/iris_hfi_gen2_defines.h | 8 +++++++ .../platform/qcom/iris/iris_platform_common.h | 2 ++ .../media/platform/qcom/iris/iris_platform_gen2.c | 22 ++++++++++++++++++ 5 files changed, 60 insertions(+) diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/= platform/qcom/iris/iris_ctrls.c index 00949c207ddb0203e51df359214bf23c3d8265d0..8f74c12f2f41f23d75424819c70= 7aff61ea61b33 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.c +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c @@ -100,6 +100,10 @@ static enum platform_inst_fw_cap_type iris_get_cap_id(= u32 id) return B_FRAME_QP_HEVC; case V4L2_CID_ROTATE: return ROTATION; + case V4L2_CID_HFLIP: + return HFLIP; + case V4L2_CID_VFLIP: + return VFLIP; default: return INST_FW_CAP_MAX; } @@ -189,6 +193,10 @@ static u32 iris_get_v4l2_id(enum platform_inst_fw_cap_= type cap_id) return V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP; case ROTATION: return V4L2_CID_ROTATE; + case HFLIP: + return V4L2_CID_HFLIP; + case VFLIP: + return V4L2_CID_VFLIP; default: return 0; } @@ -917,6 +925,25 @@ int iris_set_rotation(struct iris_inst *inst, enum pla= tform_inst_fw_cap_type cap &hfi_val, sizeof(u32)); } =20 +int iris_set_flip(struct iris_inst *inst, enum platform_inst_fw_cap_type c= ap_id) +{ + const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; + u32 hfi_val =3D HFI_DISABLE_FLIP; + + if (inst->fw_caps[HFLIP].value) + hfi_val |=3D HFI_HORIZONTAL_FLIP; + + if (inst->fw_caps[VFLIP].value) + hfi_val |=3D HFI_VERTICAL_FLIP; + + return hfi_ops->session_set_property(inst, hfi_id, + HFI_HOST_FLAGS_NONE, + iris_get_port_info(inst, cap_id), + HFI_PAYLOAD_U32_ENUM, + &hfi_val, sizeof(u32)); +} + int iris_set_properties(struct iris_inst *inst, u32 plane) { const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.h b/drivers/media/= platform/qcom/iris/iris_ctrls.h index 3ea0a00c7587a516f19bb7307a0eb9a60c856ab0..355a592049f3fcc715a1b9df44b= 4d1398b052653 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.h +++ b/drivers/media/platform/qcom/iris/iris_ctrls.h @@ -33,6 +33,7 @@ int iris_set_max_qp(struct iris_inst *inst, enum platform= _inst_fw_cap_type cap_i int iris_set_frame_qp(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); int iris_set_qp_range(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); int iris_set_rotation(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); +int iris_set_flip(struct iris_inst *inst, enum platform_inst_fw_cap_type c= ap_id); int iris_set_properties(struct iris_inst *inst, u32 plane); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_defines.h index 4edcce7faf5e2f74bfecfdbf574391d5b1c9cca5..0f92468dca91cbb2ca9b451ebce= 255180066b3a4 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h @@ -92,6 +92,14 @@ enum hfi_rotation { }; =20 #define HFI_PROP_ROTATION 0x0300014b + +enum hfi_flip { + HFI_DISABLE_FLIP =3D 0x00000000, + HFI_HORIZONTAL_FLIP =3D 0x00000001, + HFI_VERTICAL_FLIP =3D 0x00000002, +}; + +#define HFI_PROP_FLIP 0x0300014c #define HFI_PROP_SIGNAL_COLOR_INFO 0x03000155 #define HFI_PROP_PICTURE_TYPE 0x03000162 #define HFI_PROP_DEC_DEFAULT_HEADER 0x03000168 diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 9a4232b1c64eea6ce909e1e311769dd958b84c6e..284d6bde6d6bcdf70016646d1c9= 2e6ae7f067efc 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -141,6 +141,8 @@ enum platform_inst_fw_cap_type { B_FRAME_QP_H264, B_FRAME_QP_HEVC, ROTATION, + HFLIP, + VFLIP, INST_FW_CAP_MAX, }; =20 diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index c1f83e179d441c45df8d6487dc87e137e482fb63..e74bdd00a4bb2f457ec9352e0ac= aebc820dae235 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -598,6 +598,28 @@ static struct platform_inst_fw_cap inst_fw_cap_sm8550_= enc[] =3D { .flags =3D CAP_FLAG_OUTPUT_PORT, .set =3D iris_set_rotation, }, + { + .cap_id =3D HFLIP, + .min =3D 0, + .max =3D 1, + .step_or_mask =3D 1, + .value =3D 0, + .hfi_id =3D HFI_PROP_FLIP, + .flags =3D CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | + CAP_FLAG_DYNAMIC_ALLOWED, + .set =3D iris_set_flip, + }, + { + .cap_id =3D VFLIP, + .min =3D 0, + .max =3D 1, + .step_or_mask =3D 1, + .value =3D 0, + .hfi_id =3D HFI_PROP_FLIP, + .flags =3D CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | + CAP_FLAG_DYNAMIC_ALLOWED, + .set =3D iris_set_flip, + }, }; =20 static struct platform_inst_caps platform_inst_cap_sm8550 =3D { --=20 2.43.0 From nobody Fri Dec 19 14:24:46 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 751F72D9499 for ; Thu, 6 Nov 2025 03:31:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399868; cv=none; b=MQe0livvc39fIMxlFmF4mUtNYg+oapKcwk0WWNRK0FY96YxILRumrtB1GrtEKgdCA5CS1eR8mT/pb+hruGRyfMZ6r9gFrOGdblHLUvB+J2aQ2v2jrD7ZNIEd3JWLtzjKfeS5N8cXjfXSqnINKzbQFK8fqhlLZyGpj2f1dopEP8s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762399868; c=relaxed/simple; bh=JQ5iyKLsbTvW1G+rebQp49wNfxcQrPn+UClBYzR7ixg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qLfY61ntf0OLbUdKWuDeN/KuCHah5+4zvJnifJXCBFmfy6135XB0MBZDPWFJTHVqd91MO0skdKKmbcEk4yBgip6nqvEVshOrq3pvBc4p380O2oZCaAw52DzD8C6GaJ3ZapooxACugW1Syi9Zf1px7mIIfsB2BgkADSSd5d7Nrl8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=lE15MsFJ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GC4lwx8Z; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="lE15MsFJ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GC4lwx8Z" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5A5N5RmH2148087 for ; Thu, 6 Nov 2025 03:31:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ugBW9Cv+1k8WLRXW2Hz0UY8b2KE1oQhBmaVaCghLSSQ=; b=lE15MsFJH0de2+tr dozC6uE9hzSyTIw17JCuh67gDjrzYK0JTxdYak7Haa56x5QDJ8a+q5Gyf09GEjvm LH7PrG26vUyJbp1jwrDGszkMlXSbg8G84a4EZ18lhf2t/V8HheJ43gV2N6JJuRB/ RWg7W6Ugvnr24uxQ7HOmYG0MUQ8WCp4d4bc1TU61InaX3MSitt1p1tI3vxGQHBV+ +UfM+RiQZTGavn/xjhK3Dsd8K2klWLFAzglVcOL92ytjR3O0WLOVdAuc8tFlMsjy hXSqhMUhlXU4oTh1jy5ADQC5BbCl7AFWYwl84tFcaWlZaRa3UdZVCuVhBMlfci9L bOoXBA== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4a8fxvrmaf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Nov 2025 03:31:05 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b522037281bso331038a12.3 for ; Wed, 05 Nov 2025 19:31:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762399863; x=1763004663; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ugBW9Cv+1k8WLRXW2Hz0UY8b2KE1oQhBmaVaCghLSSQ=; b=GC4lwx8ZcDTCYNk4INMLfJYHlzXel37W/sNH82QxGalHnoCCrOpmTKhenllEwrXd1g rmUr2OSVjmmOZMFs65GtsTroyNTR7lAT01dDxdfI6pTcp/BjnQzHlHM5oMpkVkMJyoR9 +vXva9N5UAaIpNhlstbLFMwtYohMFXXxnnna/dIFhANXDrTRCWis2ddRYi625RVjcocJ 33ya2D3iSQS6AEBd+SCbF+3PvG7yITB0QQu4bxjCmLnOKPO96SYrla4UE/CSGQkioWRX rKHVFBQ30VT8z3NFg1RzGfYpVcYPi6ZCOgk/MyOfmoG0wxP8LCRzmkpVwMDQh/HHJllq +m4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762399863; x=1763004663; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ugBW9Cv+1k8WLRXW2Hz0UY8b2KE1oQhBmaVaCghLSSQ=; b=mK+jIzxbUGh7Bc6VR7yJm6V7Sdam+9Klbev/opYGbWitGZ5+WYHcAAq5Cju4deYLaB q23bpYHGBMvNdWtY+3jI5+kS3YCR5wOC7P/2RZf0q0Nne21AYQzeg435GlilcdpU3dBT yi5mZMq7NkbmpRKt8JgV2dQQ2XHp0gioUQZ62kjULWweUL9y8DyI1byg6cCBYfn+gZqK YJwy8vbIcWy1ESVJrg5koCV1N4IJr2fe97vGDoogOa4v/r2M3e5BrkeIr9jEf42BnJYM h4i40WTPh2PuvwyHFNj9KTJfbHKe256DE5w0wSCYBekdVfM17q5PBmGdgDvIi7LLY9Gr yUhw== X-Forwarded-Encrypted: i=1; AJvYcCW36MC/Ceax25/RmYJMK0BQUeGKYS3p3n5pU/x3q744fBF8isPwxAucq+k1KW3ctzrUsqE0Zhdv1GyteAI=@vger.kernel.org X-Gm-Message-State: AOJu0YxHUrsyaAnOIIFlX/zOHDlTvi1DdoBFTvcFMrPY1asxkkvAc3Qy zgO3W2rWowmjCBDsoiWuFxHaKIsnYSjchtTzSVlLVfbFKwVNjHnelHTa/khxvp+F5/aerOToFdH +mh2/NPmXRKE1RkBqRR/GEcQFLmePvB+mo6SmZq9LvHd4gjw/+NKU9UBsDUwCzb1NtWk= X-Gm-Gg: ASbGncs3xWWczYUaZXucqu2CdHuqihQQMMcXxUTBTevow6nxwYWLMLfL0mQZTYmUD86 jDlEKf8+1gJh1Mf46e950ek0p88HBja9px14KOVFl49LW9ewDI5p+c8NE0hj3hvXKMvNR+dn4d6 JUmhWSvvtEixARjYFQAANOXaxeNEfJb7DhapXANLyi3V4MlDW9IrptLvVfzWg30leoqZBcvaVDS KzqeP4U2Up61U7/plz7t3mDaL5wC93RnfEhOMPeRVo/o+S4kkpx29cHDH7QnJjU12HN8StTux7o priUAvHBDTKr1bfmjxKs+ByZfnBs3lzgFjMxznyjSuOKOcBQZ4JRhJhKFNG4D20dCLyR72Vfsih lsDsUYlNf7q08UupJfsqZGWcJ7jd/g8ttZw2QS8tHGFw3DwYvi3w3HzNyjHsg6ZCCU9VzXNvTUA == X-Received: by 2002:a17:903:2286:b0:295:54cb:16ac with SMTP id d9443c01a7336-2962ad1bc4dmr75095485ad.18.1762399863482; Wed, 05 Nov 2025 19:31:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IG0ANBdoE+euT8S2x1s+JWx4g+Ehlkq6HJ9gp+SG6qkEmCDxZ8JU5K3mDejLGnk1hCVFvAxhQ== X-Received: by 2002:a17:903:2286:b0:295:54cb:16ac with SMTP id d9443c01a7336-2962ad1bc4dmr75094935ad.18.1762399862951; Wed, 05 Nov 2025 19:31:02 -0800 (PST) Received: from WANGAOW-LAB01.ap.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29651cd0060sm10361925ad.108.2025.11.05.19.30.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Nov 2025 19:31:02 -0800 (PST) From: Wangao Wang Date: Thu, 06 Nov 2025 11:30:38 +0800 Subject: [PATCH v4 6/6] media: qcom: iris: Add intra refresh support for encoder Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251106-iris_encoder_enhancements-v4-6-5d6cff963f1b@oss.qualcomm.com> References: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> In-Reply-To: <20251106-iris_encoder_enhancements-v4-0-5d6cff963f1b@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Wangao Wang , Neil Armstrong , quic_qiweil@quicinc.com, quic_renjiang@quicinc.com X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762399836; l=6329; i=wangao.wang@oss.qualcomm.com; s=20251021; h=from:subject:message-id; bh=JQ5iyKLsbTvW1G+rebQp49wNfxcQrPn+UClBYzR7ixg=; b=7vwksZhemnsCeknghGDmXoxZn/Ky4K1aWqGHAsIPT1HV2CAm7LDG6lS2b7v3UpdGpQBWO/JyH WDCodetoDFkBALBJUkXIsJInQsN/gbqb5VLD52X0i3iWr8lmSwzG21h X-Developer-Key: i=wangao.wang@oss.qualcomm.com; a=ed25519; pk=bUPgYblBUAsoPyGfssbNR7ZXUSGF8v1VF4FJzSO6/aA= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTA2MDAyNiBTYWx0ZWRfX2dfFzdDeHOed mXsNLaAQuhg5F3WNO3bchPtiEe6uSFmEEDs4PSwikhpbbcALpkYtFYCOh/ykcjvJpnuOvcWaIoD tO6U1vd8RM7AyUCSQp2XJL2dgChxfHYrDUZXEaTS2dDcnzKKh3APBzjerkVWMNBkwm6ct/sZAVs 3BsMtVlZgKdwY6ZSEforXawZvX0qW2LbLS7rRKdM4/fMzWb1DHWRPnNzt0qyhT9fRY6i0zY+LkN hC7h1lm7NuNFxQLbAFXLqyUB1FgrZMkCAKUJrpLEkaOBtJ2T9KiNHkSoVNlL+90PQic4TNtg2NZ wEY+OCpg6vaDpWuinIXBK9miwHWVuCzWEvBX1Z7EN2Cv1f1T0PpnoIgwofoB2A7fIwzgQkRt7y3 S3seO8osDU6kHp5M7utMOghRNxeoyg== X-Proofpoint-ORIG-GUID: iLoDrxwRIt9BkHC8ovWURNDJaEMzYDES X-Authority-Analysis: v=2.4 cv=OZSVzxTY c=1 sm=1 tr=0 ts=690c1679 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=-vM60OG-bLC5KXgFrusA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: iLoDrxwRIt9BkHC8ovWURNDJaEMzYDES X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-05_09,2025-11-03_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 adultscore=0 clxscore=1015 spamscore=0 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511060026 Add support for V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD and V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE controls. Tested-by: Neil Armstrong # on SM8650-HDK Signed-off-by: Wangao Wang Reviewed-by: Dikshita Agarwal --- drivers/media/platform/qcom/iris/iris_ctrls.c | 33 ++++++++++++++++++= ++++ drivers/media/platform/qcom/iris/iris_ctrls.h | 1 + .../platform/qcom/iris/iris_hfi_gen2_defines.h | 2 ++ .../platform/qcom/iris/iris_platform_common.h | 2 ++ .../media/platform/qcom/iris/iris_platform_gen2.c | 19 +++++++++++++ 5 files changed, 57 insertions(+) diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/= platform/qcom/iris/iris_ctrls.c index 8f74c12f2f41f23d75424819c707aff61ea61b33..14891569247318aaa7b2009b737= f077d1cb45095 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.c +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c @@ -104,6 +104,10 @@ static enum platform_inst_fw_cap_type iris_get_cap_id(= u32 id) return HFLIP; case V4L2_CID_VFLIP: return VFLIP; + case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE: + return IR_TYPE; + case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD: + return IR_PERIOD; default: return INST_FW_CAP_MAX; } @@ -197,6 +201,10 @@ static u32 iris_get_v4l2_id(enum platform_inst_fw_cap_= type cap_id) return V4L2_CID_HFLIP; case VFLIP: return V4L2_CID_VFLIP; + case IR_TYPE: + return V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE; + case IR_PERIOD: + return V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD; default: return 0; } @@ -944,6 +952,31 @@ int iris_set_flip(struct iris_inst *inst, enum platfor= m_inst_fw_cap_type cap_id) &hfi_val, sizeof(u32)); } =20 +int iris_set_ir_period(struct iris_inst *inst, enum platform_inst_fw_cap_t= ype cap_id) +{ + const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + struct vb2_queue *q =3D v4l2_m2m_get_dst_vq(inst->m2m_ctx); + u32 ir_period =3D inst->fw_caps[cap_id].value; + u32 ir_type =3D 0; + + if (inst->fw_caps[IR_TYPE].value =3D=3D + V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM) { + if (vb2_is_streaming(q)) + return 0; + ir_type =3D HFI_PROP_IR_RANDOM_PERIOD; + } else if (inst->fw_caps[IR_TYPE].value =3D=3D + V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC) { + ir_type =3D HFI_PROP_IR_CYCLIC_PERIOD; + } else + return -EINVAL; + + return hfi_ops->session_set_property(inst, ir_type, + HFI_HOST_FLAGS_NONE, + iris_get_port_info(inst, cap_id), + HFI_PAYLOAD_U32, + &ir_period, sizeof(u32)); +} + int iris_set_properties(struct iris_inst *inst, u32 plane) { const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.h b/drivers/media/= platform/qcom/iris/iris_ctrls.h index 355a592049f3fcc715a1b9df44b4d1398b052653..9518803577bc39f5c1339a49878= dd0c3e8f510ad 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.h +++ b/drivers/media/platform/qcom/iris/iris_ctrls.h @@ -34,6 +34,7 @@ int iris_set_frame_qp(struct iris_inst *inst, enum platfo= rm_inst_fw_cap_type cap int iris_set_qp_range(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); int iris_set_rotation(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); int iris_set_flip(struct iris_inst *inst, enum platform_inst_fw_cap_type c= ap_id); +int iris_set_ir_period(struct iris_inst *inst, enum platform_inst_fw_cap_t= ype cap_id); int iris_set_properties(struct iris_inst *inst, u32 plane); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_defines.h index 0f92468dca91cbb2ca9b451ebce255180066b3a4..9e8fdddf2aef439e7f133c9bb2f= afa6d95062b02 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h @@ -70,6 +70,7 @@ enum hfi_rate_control { #define HFI_PROP_QP_PACKED 0x0300012e #define HFI_PROP_MIN_QP_PACKED 0x0300012f #define HFI_PROP_MAX_QP_PACKED 0x03000130 +#define HFI_PROP_IR_RANDOM_PERIOD 0x03000131 #define HFI_PROP_TOTAL_BITRATE 0x0300013b #define HFI_PROP_MAX_GOP_FRAMES 0x03000146 #define HFI_PROP_MAX_B_FRAMES 0x03000147 @@ -108,6 +109,7 @@ enum hfi_flip { #define HFI_PROP_BUFFER_MARK 0x0300016c #define HFI_PROP_RAW_RESOLUTION 0x03000178 #define HFI_PROP_TOTAL_PEAK_BITRATE 0x0300017C +#define HFI_PROP_IR_CYCLIC_PERIOD 0x0300017E #define HFI_PROP_COMV_BUFFER_COUNT 0x03000193 #define HFI_PROP_END 0x03FFFFFF =20 diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 284d6bde6d6bcdf70016646d1c92e6ae7f067efc..30b98e769ad34c2b63dd63e7714= bfeaa5b4f162c 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -143,6 +143,8 @@ enum platform_inst_fw_cap_type { ROTATION, HFLIP, VFLIP, + IR_TYPE, + IR_PERIOD, INST_FW_CAP_MAX, }; =20 diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index e74bdd00a4bb2f457ec9352e0acaebc820dae235..ce54aac766e2bf76fa2de64c884= 724ca63f05dcb 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -620,6 +620,25 @@ static struct platform_inst_fw_cap inst_fw_cap_sm8550_= enc[] =3D { CAP_FLAG_DYNAMIC_ALLOWED, .set =3D iris_set_flip, }, + { + .cap_id =3D IR_TYPE, + .min =3D V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM, + .max =3D V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC, + .step_or_mask =3D BIT(V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RAND= OM) | + BIT(V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC), + .value =3D V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM, + .flags =3D CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, + }, + { + .cap_id =3D IR_PERIOD, + .min =3D 0, + .max =3D INT_MAX, + .step_or_mask =3D 1, + .value =3D 0, + .flags =3D CAP_FLAG_OUTPUT_PORT | + CAP_FLAG_DYNAMIC_ALLOWED, + .set =3D iris_set_ir_period, + }, }; =20 static struct platform_inst_caps platform_inst_cap_sm8550 =3D { --=20 2.43.0