From patchwork Fri Oct 13 07:48:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naushir Patuck X-Patchwork-Id: 19124 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 97B6CBD808 for ; Fri, 13 Oct 2023 07:48:50 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 99F5062982; Fri, 13 Oct 2023 09:48:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1697183329; bh=6ymeCq7uqhldc5v4X/KkDkOFsqpKx7wqyl3uZVIgiZc=; h=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=nUwfHHG+D6KWYWd7zbYonTE+5LLAIHquy0PUTa89E2uaWchq5McrpGha4SzV1cVNq aV+649gGwGNEE69uv0b5oYn/DMrVvPcXcyHjT8GcLaGp4TyzcM8afpbSzT3qVpWRAi BZijilVH+LD89o1LVW+TQkiu3/TV+PUeSI2sqgs4DxfwNpJPLnKLS4dS4MvzOLQyKU q4iW2Bo5PUxUy1Aq5WqUmvQm2HaNfOhNsEA34PjPCJCsiKCZ/Rk/H6ZIASEMKJZa2l fTmF+ZP17aOGrZhRDWthwLzeohRTM9lp7uo2sVMUMzrpQqIw9znKODQGueM/ex9Qng s6FQfDr1F5+4A== Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 81B1A6295F for ; Fri, 13 Oct 2023 09:48:47 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="qM/IkybW"; dkim-atps=neutral Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-40535597f01so18641655e9.3 for ; Fri, 13 Oct 2023 00:48:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1697183327; x=1697788127; 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=d+dh4UHW175OF0nMVmogbshsJu9iP6l7I4FxhHmLUlU=; b=qM/IkybWMg9umDNI/bnzF6YN5BB8HCr91VAhjpYe1xHv877AD1ARIVK5HWhyOVdKoS 4ASAWsBvNVlNxhYH8xX17kJZYDLzmXp/ytOLAvG4zNv1VtUodOqpd5OWdYxYfKlgbS7W C5cTsxDXzzaxMNFfXPTjpZfV7w3SLbgp78fiqKm7R23AHPDkyqlZqFhWdvVAZgahPEcL Jq9Up/AOIdwuEY9mDkj4C/5SpePcwtMoXgcuv50woVQsAaN4T8z8DHHdK8bXAE53jgRQ 7RT5ygD4Md71rVpItcnyMO2UeR7yMR1Qcw20Hjdhwr3kvJbtTA0txFBgTB2G4zpbL13L KPmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697183327; x=1697788127; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=d+dh4UHW175OF0nMVmogbshsJu9iP6l7I4FxhHmLUlU=; b=VyfPYEK0Cn0KOEVNg4nc4PTawGEN7QcGDafZcHyDyFO3X+KEmCUgk2mEN53dB3Z3AQ +DCdiMGCg6K5fbJCRYmlJUDypHN+7BNwmsrqre8rrLKxK42TPUSLimmK7xXYYlyppSnH jmtjffKkqbY2ZS5fsutylFd/6Cr9QkAnFeAVMMcqz7BiVr/fjmELA4dbvRm2oWLa/pDG W7cYMX2Q5SUbCVQm0TzMNZ81JZqfFevwB2D9ih3owhRMlJmvgNvrMKyjgGE5QMSXSzW7 gRMtOBm/Nm1gBQSC9H0z80HDDYBLF5LKeOyxKIV1CmUrWpO6B98fMVQc2WBgmVK/OSkt GtdA== X-Gm-Message-State: AOJu0YwG4ZUecSRXqg8xHFuijx+Nb13bFrmyACZN2+7t1+O2PN0b/9AA FTHLB46w560zCPuH7LJNx+tdhdG5Ogfv0hWRzznfCw== X-Google-Smtp-Source: AGHT+IFcriZ67blmGcBKa4KeVDGl0Cg2cT1SdEtYafxchVhP5mHRsQZQoFD/mD2SQV631e/KNZbHDA== X-Received: by 2002:a05:600c:21d5:b0:3fe:5501:d284 with SMTP id x21-20020a05600c21d500b003fe5501d284mr23867012wmj.11.1697183326645; Fri, 13 Oct 2023 00:48:46 -0700 (PDT) Received: from localhost.localdomain ([93.93.133.154]) by smtp.gmail.com with ESMTPSA id m16-20020a7bca50000000b003fee6e170f9sm1791890wml.45.2023.10.13.00.48.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Oct 2023 00:48:46 -0700 (PDT) To: libcamera-devel@lists.libcamera.org Date: Fri, 13 Oct 2023 08:48:21 +0100 Message-Id: <20231013074841.16972-1-naush@raspberrypi.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 00/20] Raspberry Pi: Preliminary PiSP support 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: , X-Patchwork-Original-From: Naushir Patuck via libcamera-devel From: Naushir Patuck Reply-To: Naushir Patuck Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Hi, Version 2 of this series includes the following notable changes: - Patch 1/20: Remove unnecessary brackets around if() block. - Patch 3/20: Add some missing header includes and copy constructor. - Patch 13/20: Update commit message to further clarify the change. - Patch 14/20: Move the flip validation to before platformValidate(). Patches 11/13/14/18 need 1 further review, although I guess the IPA patches have the 1 Raspberry Pi review and should be ok. Many thanks, Naush David Plowman (4): ipa: rpi: agc: Add an AGC stable region ipa: rpi: contrast: Allow adaptive contrast enhancement to be disabled ipa: rpi: denoise: Support different denoise configurations ipa: rpi: agc: Avoid overwriting caller's statistics pointer Naushir Patuck (16): pipeline: rpi: Add RequiresMmap flag to RPi::Stream pipeline: rpi: Add Recurrent and Needs32bitConv flags to RPi::Stream pipeline: rpi: Add SharedMemObject class ipa: rpi: Add IpaBase::platformStart() member function mojom: pipeline: ipa: rpi: Add fields for PiSP objects ipa: rpi: Add try_lock() to RPiController::Metadata ipa: rpi: Add statsInline to the Controller hardware description ipa: rpi: Add PiSP definitions to the Controller hardware description ipa: rpi: Prepare ALSC for PiSP support ipa: rpi: Prepare AWB for PiSP support ipa: rpi: Add new algorithms for PiSP pipeline: rpi: Add SW downscale status to RPi::Stream build: ipa: Fix bug in building multiple IPA interfaces with the same mojom file pipeline: rpi: Move flip handling validation code pipeline: rpi: Make color space members in RPiCameraConfiguration public ipa: rpi: agc: When AGC channels are changed, start with the 1st channel include/libcamera/ipa/meson.build | 19 +- include/libcamera/ipa/raspberrypi.mojom | 6 +- src/ipa/rpi/common/ipa_base.cpp | 23 +- src/ipa/rpi/common/ipa_base.h | 1 + src/ipa/rpi/controller/agc_status.h | 3 + src/ipa/rpi/controller/cac_status.h | 16 ++ src/ipa/rpi/controller/contrast_algorithm.h | 2 + src/ipa/rpi/controller/controller.cpp | 18 +- src/ipa/rpi/controller/controller.h | 2 + src/ipa/rpi/controller/denoise_algorithm.h | 4 + src/ipa/rpi/controller/denoise_status.h | 19 ++ src/ipa/rpi/controller/hdr_algorithm.h | 25 ++ src/ipa/rpi/controller/hdr_status.h | 19 ++ src/ipa/rpi/controller/meson.build | 5 + src/ipa/rpi/controller/metadata.h | 1 + src/ipa/rpi/controller/rpi/agc.cpp | 6 +- src/ipa/rpi/controller/rpi/agc_channel.cpp | 7 + src/ipa/rpi/controller/rpi/agc_channel.h | 1 + src/ipa/rpi/controller/rpi/alsc.cpp | 16 +- src/ipa/rpi/controller/rpi/awb.cpp | 29 +- src/ipa/rpi/controller/rpi/cac.cpp | 81 ++++++ src/ipa/rpi/controller/rpi/cac.h | 38 +++ src/ipa/rpi/controller/rpi/contrast.cpp | 13 +- src/ipa/rpi/controller/rpi/contrast.h | 3 + src/ipa/rpi/controller/rpi/denoise.cpp | 198 +++++++++++++ src/ipa/rpi/controller/rpi/denoise.h | 59 ++++ src/ipa/rpi/controller/rpi/hdr.cpp | 270 ++++++++++++++++++ src/ipa/rpi/controller/rpi/hdr.h | 72 +++++ src/ipa/rpi/controller/rpi/saturation.cpp | 57 ++++ src/ipa/rpi/controller/rpi/saturation.h | 32 +++ src/ipa/rpi/controller/rpi/sdn.cpp | 2 + src/ipa/rpi/controller/rpi/tonemap.cpp | 61 ++++ src/ipa/rpi/controller/rpi/tonemap.h | 35 +++ src/ipa/rpi/controller/saturation_status.h | 13 + src/ipa/rpi/controller/stitch_status.h | 17 ++ src/ipa/rpi/controller/tonemap_status.h | 17 ++ src/ipa/rpi/vc4/vc4.cpp | 7 + .../pipeline/rpi/common/pipeline_base.cpp | 45 ++- .../pipeline/rpi/common/pipeline_base.h | 6 +- .../pipeline/rpi/common/rpi_stream.cpp | 63 +++- .../pipeline/rpi/common/rpi_stream.h | 54 +++- .../pipeline/rpi/common/shared_mem_object.h | 128 +++++++++ src/libcamera/pipeline/rpi/vc4/vc4.cpp | 25 +- 43 files changed, 1443 insertions(+), 75 deletions(-) create mode 100644 src/ipa/rpi/controller/cac_status.h create mode 100644 src/ipa/rpi/controller/hdr_algorithm.h create mode 100644 src/ipa/rpi/controller/hdr_status.h create mode 100644 src/ipa/rpi/controller/rpi/cac.cpp create mode 100644 src/ipa/rpi/controller/rpi/cac.h create mode 100644 src/ipa/rpi/controller/rpi/denoise.cpp create mode 100644 src/ipa/rpi/controller/rpi/denoise.h create mode 100644 src/ipa/rpi/controller/rpi/hdr.cpp create mode 100644 src/ipa/rpi/controller/rpi/hdr.h create mode 100644 src/ipa/rpi/controller/rpi/saturation.cpp create mode 100644 src/ipa/rpi/controller/rpi/saturation.h create mode 100644 src/ipa/rpi/controller/rpi/tonemap.cpp create mode 100644 src/ipa/rpi/controller/rpi/tonemap.h create mode 100644 src/ipa/rpi/controller/saturation_status.h create mode 100644 src/ipa/rpi/controller/stitch_status.h create mode 100644 src/ipa/rpi/controller/tonemap_status.h create mode 100644 src/libcamera/pipeline/rpi/common/shared_mem_object.h