From patchwork Wed Apr 8 11:56:42 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 26511 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 3F280BDCBD for ; Wed, 8 Apr 2026 11:56:53 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id E7B2B62E38; Wed, 8 Apr 2026 13:56:52 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="b4r9qBMu"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="EQkn+Zvh"; dkim-atps=neutral Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id E0C6362E11 for ; Wed, 8 Apr 2026 13:56:50 +0200 (CEST) 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 6389N2e62412291 for ; Wed, 8 Apr 2026 11:56:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=qcppdkim1; bh=xg+kLbC0klakdHpUxYGbChYimVu3asdAwIY uq1ni7aI=; b=b4r9qBMuTH0971+phVby0bCSRkr0LJRk/bIOO6VFshCZIvVDlPt hMDS9gBsdPQ3uIY1Em1Gyc/PRKqiGV9osLrsDlZAu/2oKF9V2ePt2VlZmCm2EgAF p/c54qUQJh5coHWGDKsQqIhFQ3HGSvK2bIgJ980nhbhpFHFmyBBIU1MhypPT63Vp 8gsekvwwCyNvIyhFmkvLGbwVH2x0OL04d9UPB/vUd0apvaakFX69fPAMHpv6Wt5C N4C/j1KOgk3sT5X7iQNafEtpwi88cZsrzIcLSSFax3ufVRLNpoRJCSC2CjBrHIcF 2wjIwRLofvudzswJXCi+qzASbOSbkkx7I2Q== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dd61vbmxv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 11:56:49 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-50d6bf346adso103591791cf.1 for ; Wed, 08 Apr 2026 04:56:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775649408; x=1776254208; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=xg+kLbC0klakdHpUxYGbChYimVu3asdAwIYuq1ni7aI=; b=EQkn+ZvhFtbpMjJscMyUZZ4etBP12P/MS1RgOakO9W+R6n/1erXZs+s+j0WjXFIKmH sD/yCythrG6iiv3CpZzFlm8cxySGpr77qhLVH0yVE9uIma+rJkwv/WkhR+t75m0zL77U 0xdBsFGt3+QSbkwy1utkHpVjIrV4tSLdfvuSgIM5i0qnAGyCiNhZV1gCzjXZGJ8ykQ4c M1QQp6RNzImqQGxHeqAyVAWVvPSsVZQJiFTEAyTyQqHqh9A83MA/GVNRBtirG+Q7mZK7 nco3fKXqkoR+TcvuT9Bgrj6UO8kq3J1YYXh1ytfDGForCPR9O5epFgjKjEGC6PdbPbfU Lc3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775649408; x=1776254208; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=xg+kLbC0klakdHpUxYGbChYimVu3asdAwIYuq1ni7aI=; b=j9RTgrJulcL2EDHcANv7Y656GnMdZi66LYPuFOWTB7frHtj6E67aoxPmOfhbmi9Nne Kn+ajbtuRv4cr967vQFb6UB39tncYM4kmiCCQWadXgyVQTBIiurDjaylweZfcSd2u7YR QeA4iMiDAYLaDfVTaKSPoFXC0ivTL/LcIYJkgWlJJ/cMVPP2H9O8tO6Y+arKKTg+Mr/j gGx13Fy4ZIMjGDCaZ65YmUcew3OQGfGdiyTu/t0JGUeWvKXYBzxvYvUNMETxHelu/KTj DP/Y0WsiKLAOA3llHLsdZSD7XMre1Ted9cO2Fgmc+blyWJ50XyQPb7iimpcRO3gxzGIz +GCg== X-Gm-Message-State: AOJu0YxF9iiHjS/f6BaHWo6HVIgswC36EVt4TUBTrKf1URSKBFLrenTL WmQL3ex7Wcur5RLuQuAkLtIGGaKbkFMdyvc5nNo82eENJ0EnGx6eYay5wyj9z6w1Ms7Kv1qUN8u XljLcDjRGX9ULx32pGrEHRSogZjNda18HCsJASnYTiCzGwtyOvXH1eyiOcjYM09rGYdu2K0vfLY DFavlwUF5I X-Gm-Gg: AeBDietglv+197JsZ7lQK4BueHr7ZFhsW76878wR0uVT2xrsRTlneJPiaXz0eYvvG8M ut/Q/Fl9wsUpDEJZ/Ls2KDmkSsyie/UCYknXI0NQm1HBgsp4IPS23lIIxSETd9nCZHpVz4njmZy zCsJ9JZfl5hC8coUm0/mrnP1r6lSpNorGYhPoFPkyLbAiOUad3SL4jwJhd03eBQaG/lx7ynLBJm X4abQiFvm22TIQCX7NaxtfGcPUWcpEeoeAcPCq4K447ZXUcarO39CU6mhGW8UE/jtElpIyUnSQc rNdhsa99CMzv3W97z0XersiDvCpf/iQSzHZaMrkEZ5dmvmUgwoiL8jj6KiebYye7oD9qWWwj5pa X4cbLUAtlhWOT7IWwO08FaMDWG+TfmBVy7JA8cM7p4N2ugqx7S+K3LqVZeS5X77wNajzwABZZC2 4RkYmDQCRfp/vK2ZxNXT94L1ypatjpF3IT X-Received: by 2002:a05:622a:148e:b0:509:348f:bc1a with SMTP id d75a77b69052e-50d629beccemr306681141cf.26.1775649407842; Wed, 08 Apr 2026 04:56:47 -0700 (PDT) X-Received: by 2002:a05:622a:148e:b0:509:348f:bc1a with SMTP id d75a77b69052e-50d629beccemr306680861cf.26.1775649407467; Wed, 08 Apr 2026 04:56:47 -0700 (PDT) Received: from t14s (2001-1c00-0c32-7800-07d4-cca3-ec08-7ac7.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:7d4:cca3:ec08:7ac7]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-66e7b5ffa64sm3158932a12.21.2026.04.08.04.56.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 04:56:46 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Loic Poulain , Hans de Goede Subject: [RFC 0/3] camss: Add CAMSS pipeline handler Date: Wed, 8 Apr 2026 13:56:42 +0200 Message-ID: <20260408115645.12487-1-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 MIME-Version: 1.0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDExMCBTYWx0ZWRfX22EmvpggWzkl 8hNbE/IuA+F1npz+4HuIN3B4WbxvIt67a8LmTLNuulOf63AIu1IqEPzxf2TMcxh49UpYGZerqaa C3OVXQyhzKgabyzlkAGNuaKdqcHPbKM994mngYHVZ9A0w4KQpgR04t+P4IgdABHQFYLUmWC6+Qm 2NL1bxRXIZFeU0LUnC6ADzqqgvOY9f53c32wBzR6goQ0obtoKjUBkVnAgr9lYToC8aSWJ93Pb5s eFGi3fCWyXO2Mpzy0Iy7RiWg7uQn2HT/asieLFNbYoYrv1WvPmHhEkwkCzwDubXhxv3aOTQ2Dha /BCdgdOMBxNN2clG/7rqqb0Mff8BZAf36HHDDGAoaAMReg4WlgQM14O3r1Hjjf17LmaQiciXaVe XIzjVZEVcSMQ+OBW2ys+XpWvhB6mUDNzjyVFRAcgzNK5Wo8bfc9H9NiDSROf3p3/sqBvsK6jL7y Ssk3yBbbx/+kwnYIXHQ== X-Authority-Analysis: v=2.4 cv=FecHAp+6 c=1 sm=1 tr=0 ts=69d64281 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=Zf9XQ7h-q98dPmF7Kd0A:9 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: oGBcFNxNDK-T0ql-AG9zw0sKeME_OfRh X-Proofpoint-GUID: oGBcFNxNDK-T0ql-AG9zw0sKeME_OfRh X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1143, Hydra:6.1.51, FMLib:17.12.100.49 definitions=2026-04-08_03,2026-04-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 clxscore=1015 impostorscore=0 bulkscore=0 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080110 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Hi All, Add a CAMSS pipeline handler. This initial version basically replaces the simple pipeline handler camss support. This has been modelled after the IPU3 pipeline handler since that also supports an offline ISP. This uses a CamssIsp virtual base class with the default/fallback implementation of that class using the software ISP. The 3th patch in the series adds a second CamssIsp implementation for the RFC OPE M2M kernel driver posted upstream recently. This uses the M2M Convertor class and the moment is purely a convertor without any 3A support. The current OPE support will likely be completely rewritten to match the next version of the OPE kernel patch which is expected to implement a more typical V4L2 HWISP driver with parameter buffer support. This has been tested on A ThinkPad T14s Gen 6 with Snapdragon X1E processor and on a Arduino UNO Q board with the media-carrier with 2 imx219 camera modules attached. Since this will replace the simple pipeline handler support more testing on other platforms with different camera setups, e.g. various phones would be appreciated to avoid e.g. postmarketOS camera support regressing when this lands. Regards, Hans Hans de Goede (3): camss: Add CAMSS pipeline handler camss: Use finer grained locking / disableLinks() camss: Add Offline Processing Engine ISP support meson.build | 1 + meson_options.txt | 1 + src/ipa/meson.build | 1 + .../converter/converter_v4l2_m2m.cpp | 1 + src/libcamera/pipeline/camss/camss.cpp | 724 ++++++++++++++++++ src/libcamera/pipeline/camss/camss_csi.cpp | 553 +++++++++++++ src/libcamera/pipeline/camss/camss_csi.h | 128 ++++ src/libcamera/pipeline/camss/camss_frames.cpp | 106 +++ src/libcamera/pipeline/camss/camss_frames.h | 59 ++ src/libcamera/pipeline/camss/camss_isp.cpp | 26 + src/libcamera/pipeline/camss/camss_isp.h | 59 ++ .../pipeline/camss/camss_isp_ope.cpp | 229 ++++++ src/libcamera/pipeline/camss/camss_isp_ope.h | 59 ++ .../pipeline/camss/camss_isp_soft.cpp | 203 +++++ src/libcamera/pipeline/camss/camss_isp_soft.h | 50 ++ src/libcamera/pipeline/camss/meson.build | 10 + src/libcamera/pipeline/simple/simple.cpp | 2 +- 17 files changed, 2211 insertions(+), 1 deletion(-) create mode 100644 src/libcamera/pipeline/camss/camss.cpp create mode 100644 src/libcamera/pipeline/camss/camss_csi.cpp create mode 100644 src/libcamera/pipeline/camss/camss_csi.h create mode 100644 src/libcamera/pipeline/camss/camss_frames.cpp create mode 100644 src/libcamera/pipeline/camss/camss_frames.h create mode 100644 src/libcamera/pipeline/camss/camss_isp.cpp create mode 100644 src/libcamera/pipeline/camss/camss_isp.h create mode 100644 src/libcamera/pipeline/camss/camss_isp_ope.cpp create mode 100644 src/libcamera/pipeline/camss/camss_isp_ope.h create mode 100644 src/libcamera/pipeline/camss/camss_isp_soft.cpp create mode 100644 src/libcamera/pipeline/camss/camss_isp_soft.h create mode 100644 src/libcamera/pipeline/camss/meson.build