From 749904dd491ea53f80cffb69ad0977b9ec4e4edd Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Thu, 26 Dec 2024 14:21:24 +0100 Subject: [PATCH] temp/libcamera: upgrade to 0.4.0 (MR 5948) - drop some upstreamed patches - add some tuning files with black levels Release notes: https://gitlab.freedesktop.org/camera/libcamera/-/releases/v0.4.0 --- ...e-Enable-softwareISP-for-the-librem5.patch | 10 +-- ...-Force-disable-softwareISP-for-milli.patch | 10 +-- ...ple-Enable-softISP-for-the-Pinephone.patch | 10 +-- ...-Skip-hwISP-formats-if-swISP-is-acti.patch | 10 +-- ...peline_handler-Provide-cancelRequest.patch | 79 ------------------ ...onsider-output-sizes-when-choosing-.patch} | 10 +-- ...re_isp-Clean-up-pending-requests-on-.patch | 81 ------------------- ...ncrease-internal-buffer-count-to-fo.patch} | 10 +-- ...pa-simple-Add-tuning-file-for-IMX355.patch | 50 ++++++++++++ ...pa-simple-Add-tuning-file-for-IMX363.patch | 47 +++++++++++ ...simple-Increase-buffer-count-to-four.patch | 50 ------------ ...-simple-Add-tuning-file-for-s5k3l6xx.patch | 44 ++++++++++ ...ipa-simple-Add-tuning-file-for-hi846.patch | 44 ++++++++++ temp/libcamera/APKBUILD | 36 +++++---- 14 files changed, 234 insertions(+), 257 deletions(-) delete mode 100644 temp/libcamera/0005-libcamera-pipeline_handler-Provide-cancelRequest.patch rename temp/libcamera/{0007-pipeline-simple-Consider-output-sizes-when-choosing-.patch => 0005-pipeline-simple-Consider-output-sizes-when-choosing-.patch} (85%) delete mode 100644 temp/libcamera/0006-libcamera-software_isp-Clean-up-pending-requests-on-.patch rename temp/libcamera/{0009-pipeline-simple-Increase-internal-buffer-count-to-fo.patch => 0006-pipeline-simple-Increase-internal-buffer-count-to-fo.patch} (78%) create mode 100644 temp/libcamera/0007-ipa-simple-Add-tuning-file-for-IMX355.patch create mode 100644 temp/libcamera/0008-ipa-simple-Add-tuning-file-for-IMX363.patch delete mode 100644 temp/libcamera/0008-pipeline-simple-Increase-buffer-count-to-four.patch create mode 100644 temp/libcamera/0009-ipa-simple-Add-tuning-file-for-s5k3l6xx.patch create mode 100644 temp/libcamera/0010-ipa-simple-Add-tuning-file-for-hi846.patch diff --git a/temp/libcamera/0001-libcamera-simple-Enable-softwareISP-for-the-librem5.patch b/temp/libcamera/0001-libcamera-simple-Enable-softwareISP-for-the-librem5.patch index b89aba9da..5beff16ab 100644 --- a/temp/libcamera/0001-libcamera-simple-Enable-softwareISP-for-the-librem5.patch +++ b/temp/libcamera/0001-libcamera-simple-Enable-softwareISP-for-the-librem5.patch @@ -1,7 +1,7 @@ -From 17a054e8e60fa3f6298698aeb06fbe8196ab3dd2 Mon Sep 17 00:00:00 2001 +From 90b13c32a032ed92d991c785675d634964f2c292 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Mon, 22 Apr 2024 23:30:31 +0200 -Subject: [PATCH 1/4] libcamera: simple: Enable softwareISP for the librem5 +Subject: [PATCH 1/6] libcamera: simple: Enable softwareISP for the librem5 And - in theory - on similar devices. --- @@ -9,10 +9,10 @@ And - in theory - on similar devices. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp -index 81915573..8ce8baea 100644 +index 8ac24e6e..6ffb8d0a 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp -@@ -197,7 +197,7 @@ namespace { +@@ -200,7 +200,7 @@ namespace { static const SimplePipelineInfo supportedDevices[] = { { "dcmipp", {}, false }, @@ -22,5 +22,5 @@ index 81915573..8ce8baea 100644 { "j721e-csi2rx", {}, true }, { "mtk-seninf", { { "mtk-mdp", 3 } }, false }, -- -2.46.1 +2.47.1 diff --git a/temp/libcamera/0002-libcamera-simple-Force-disable-softwareISP-for-milli.patch b/temp/libcamera/0002-libcamera-simple-Force-disable-softwareISP-for-milli.patch index 08b07a47e..29ea52ee5 100644 --- a/temp/libcamera/0002-libcamera-simple-Force-disable-softwareISP-for-milli.patch +++ b/temp/libcamera/0002-libcamera-simple-Force-disable-softwareISP-for-milli.patch @@ -1,7 +1,7 @@ -From 5b5a0f92969ad1972c6a9fd7a46ac8f4fedb9389 Mon Sep 17 00:00:00 2001 +From ebcc673265db7d4d56c6ad5e80686b0e7b79fe73 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Thu, 9 May 2024 21:07:07 +0200 -Subject: [PATCH 2/4] libcamera: simple: Force-disable softwareISP for +Subject: [PATCH 2/6] libcamera: simple: Force-disable softwareISP for millipixels As the later uses libcamera and requires raw-streams to get passed @@ -12,7 +12,7 @@ swIsp - at the same time. 1 file changed, 9 insertions(+) diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp -index 8ce8baea..08755b80 100644 +index 6ffb8d0a..a5b848bd 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -7,6 +7,7 @@ @@ -23,7 +23,7 @@ index 8ce8baea..08755b80 100644 #include #include #include -@@ -1542,6 +1543,14 @@ bool SimplePipelineHandler::match(DeviceEnumerator *enumerator) +@@ -1575,6 +1576,14 @@ bool SimplePipelineHandler::match(DeviceEnumerator *enumerator) swIspEnabled_ = info->swIspEnabled; @@ -39,5 +39,5 @@ index 8ce8baea..08755b80 100644 std::vector sensors = locateSensors(media); if (sensors.empty()) { -- -2.46.1 +2.47.1 diff --git a/temp/libcamera/0003-libcamera-simple-Enable-softISP-for-the-Pinephone.patch b/temp/libcamera/0003-libcamera-simple-Enable-softISP-for-the-Pinephone.patch index c2f3d4ab9..a47f4a82d 100644 --- a/temp/libcamera/0003-libcamera-simple-Enable-softISP-for-the-Pinephone.patch +++ b/temp/libcamera/0003-libcamera-simple-Enable-softISP-for-the-Pinephone.patch @@ -1,7 +1,7 @@ -From d06e06fa7a050a32d326f6b800efaa5878c18f6c Mon Sep 17 00:00:00 2001 +From 3d3b59e97ca7180e51c105d64d4b87382748a649 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Wed, 1 May 2024 18:12:02 +0200 -Subject: [PATCH 3/4] libcamera: simple: Enable softISP for the Pinephone +Subject: [PATCH 3/6] libcamera: simple: Enable softISP for the Pinephone In theory the PP should be able to use the actual HW ISP, however in practice this does not work well yet - especially as the driver for the @@ -15,10 +15,10 @@ improves, this can be dropped again. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp -index 08755b80..ffa4f6d6 100644 +index a5b848bd..4efe0db5 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp -@@ -204,7 +204,7 @@ static const SimplePipelineInfo supportedDevices[] = { +@@ -207,7 +207,7 @@ static const SimplePipelineInfo supportedDevices[] = { { "mtk-seninf", { { "mtk-mdp", 3 } }, false }, { "mxc-isi", {}, false }, { "qcom-camss", {}, true }, @@ -28,5 +28,5 @@ index 08755b80..ffa4f6d6 100644 } /* namespace */ -- -2.46.1 +2.47.1 diff --git a/temp/libcamera/0004-libcamera-simple-Skip-hwISP-formats-if-swISP-is-acti.patch b/temp/libcamera/0004-libcamera-simple-Skip-hwISP-formats-if-swISP-is-acti.patch index 54480a603..10fe90a50 100644 --- a/temp/libcamera/0004-libcamera-simple-Skip-hwISP-formats-if-swISP-is-acti.patch +++ b/temp/libcamera/0004-libcamera-simple-Skip-hwISP-formats-if-swISP-is-acti.patch @@ -1,7 +1,7 @@ -From 545e8004a73b8606a01d4853fdccb7e20e0cc146 Mon Sep 17 00:00:00 2001 +From b30e16d5fec914986786116b97884fc9864189a1 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Mon, 6 May 2024 21:21:57 +0200 -Subject: [PATCH 4/4] libcamera: simple: Skip hwISP formats if swISP is active +Subject: [PATCH 4/6] libcamera: simple: Skip hwISP formats if swISP is active On devices like the Pinephone libcamera will advertise support for formats provided by the HW ISP and the SW ISP at the same time. The @@ -13,10 +13,10 @@ ISP when the SW ISP is enabled, to ensure we use the later. 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp -index ffa4f6d6..29320a26 100644 +index 4efe0db5..dd8d3eef 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp -@@ -651,9 +651,7 @@ void SimpleCameraData::tryPipeline(unsigned int code, const Size &size) +@@ -656,9 +656,7 @@ void SimpleCameraData::tryPipeline(unsigned int code, const Size &size) config.outputFormats = swIsp_->formats(pixelFormat); config.outputSizes = swIsp_->sizes(pixelFormat, format.size); if (config.outputFormats.empty()) { @@ -28,5 +28,5 @@ index ffa4f6d6..29320a26 100644 } else { config.outputFormats = { pixelFormat }; -- -2.46.1 +2.47.1 diff --git a/temp/libcamera/0005-libcamera-pipeline_handler-Provide-cancelRequest.patch b/temp/libcamera/0005-libcamera-pipeline_handler-Provide-cancelRequest.patch deleted file mode 100644 index ada51b23e..000000000 --- a/temp/libcamera/0005-libcamera-pipeline_handler-Provide-cancelRequest.patch +++ /dev/null @@ -1,79 +0,0 @@ -From f74131fa00580e69776215a631217c8b20cc8189 Mon Sep 17 00:00:00 2001 -From: Milan Zamazal -Date: Wed, 9 Oct 2024 19:21:07 +0200 -Subject: [PATCH 1/3] libcamera: pipeline_handler: Provide cancelRequest - -Let's extract the two occurrences of canceling a request to a common -helper. This is especially useful for the followup patch, which needs -to cancel a request from outside. - -Signed-off-by: Milan Zamazal -Reviewed-by: Kieran Bingham ---- - include/libcamera/internal/pipeline_handler.h | 1 + - src/libcamera/pipeline_handler.cpp | 23 +++++++++++++------ - 2 files changed, 17 insertions(+), 7 deletions(-) - -diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h -index 0d380803..fb28a18d 100644 ---- a/include/libcamera/internal/pipeline_handler.h -+++ b/include/libcamera/internal/pipeline_handler.h -@@ -60,6 +60,7 @@ public: - - bool completeBuffer(Request *request, FrameBuffer *buffer); - void completeRequest(Request *request); -+ void cancelRequest(Request *request); - - std::string configurationFile(const std::string &subdir, - const std::string &name) const; -diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp -index e5940469..c9cb11f0 100644 ---- a/src/libcamera/pipeline_handler.cpp -+++ b/src/libcamera/pipeline_handler.cpp -@@ -367,9 +367,7 @@ void PipelineHandler::stop(Camera *camera) - while (!waitingRequests_.empty()) { - Request *request = waitingRequests_.front(); - waitingRequests_.pop(); -- -- request->_d()->cancel(); -- completeRequest(request); -+ cancelRequest(request); - } - - /* Make sure no requests are pending. */ -@@ -470,10 +468,8 @@ void PipelineHandler::doQueueRequest(Request *request) - } - - int ret = queueRequestDevice(camera, request); -- if (ret) { -- request->_d()->cancel(); -- completeRequest(request); -- } -+ if (ret) -+ cancelRequest(request); - } - - /** -@@ -568,6 +564,19 @@ void PipelineHandler::completeRequest(Request *request) - } - } - -+/** -+ * \brief Cancel request and signal its completion -+ * \param[in] request The request to cancel -+ * -+ * This function cancels the request in addition to its completion. The same -+ * rules as for completeRequest() apply. -+ */ -+void PipelineHandler::cancelRequest(Request *request) -+{ -+ request->_d()->cancel(); -+ completeRequest(request); -+} -+ - /** - * \brief Retrieve the absolute path to a platform configuration file - * \param[in] subdir The pipeline handler specific subdirectory name --- -2.47.0 - diff --git a/temp/libcamera/0007-pipeline-simple-Consider-output-sizes-when-choosing-.patch b/temp/libcamera/0005-pipeline-simple-Consider-output-sizes-when-choosing-.patch similarity index 85% rename from temp/libcamera/0007-pipeline-simple-Consider-output-sizes-when-choosing-.patch rename to temp/libcamera/0005-pipeline-simple-Consider-output-sizes-when-choosing-.patch index 9e4858c59..a6d3636f5 100644 --- a/temp/libcamera/0007-pipeline-simple-Consider-output-sizes-when-choosing-.patch +++ b/temp/libcamera/0005-pipeline-simple-Consider-output-sizes-when-choosing-.patch @@ -1,7 +1,7 @@ -From d07972cc4188a38816c8686f6b66467fe5b9a45d Mon Sep 17 00:00:00 2001 +From 2210f0e547fde28af4ada5670766061f81191371 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Fri, 11 Oct 2024 20:13:24 +0200 -Subject: [PATCH 3/3] pipeline: simple: Consider output sizes when choosing +Subject: [PATCH 5/6] pipeline: simple: Consider output sizes when choosing pipe config In order to avoid having to adjust the size further down below which @@ -23,10 +23,10 @@ devices. 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp -index 5ee6a5c3..ffb59473 100644 +index dd8d3eef..f6442019 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp -@@ -1051,7 +1051,8 @@ CameraConfiguration::Status SimpleCameraConfiguration::validate() +@@ -1052,7 +1052,8 @@ CameraConfiguration::Status SimpleCameraConfiguration::validate() const Size &size = pipeConfig->captureSize; if (size.width >= maxStreamSize.width && @@ -37,5 +37,5 @@ index 5ee6a5c3..ffb59473 100644 pipeConfig_ = pipeConfig; } -- -2.47.0 +2.47.1 diff --git a/temp/libcamera/0006-libcamera-software_isp-Clean-up-pending-requests-on-.patch b/temp/libcamera/0006-libcamera-software_isp-Clean-up-pending-requests-on-.patch deleted file mode 100644 index 62203c423..000000000 --- a/temp/libcamera/0006-libcamera-software_isp-Clean-up-pending-requests-on-.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 36c6eb6e9b665830f11876c125780af08b6217d0 Mon Sep 17 00:00:00 2001 -From: Milan Zamazal -Date: Wed, 9 Oct 2024 19:21:08 +0200 -Subject: [PATCH 2/3] libcamera: software_isp: Clean up pending requests on - stop - -PipelineHandler::stop() calls stopDevice() method to perform pipeline -specific cleanup and then completes waiting requests. If any queued -requests remain, an assertion error is raised. - -Software ISP stores request buffers in -SimpleCameraData::conversionQueue_ and queues them as V4L2 signals -bufferReady. stopDevice() cleanup forgets to clean up the buffers and -their requests from conversionQueue_, possibly resulting in the -assertion error. This patch fixes the omission. - -The problem wasn't very visible when -SimplePipelineHandler::kNumInternalBuffers (the number of buffers -allocated in V4L2) was equal to the number of buffers exported from -software ISP. But when the number of the exported buffers was increased -by one in commit abe2ec64f9e4e97bbdfe3a50372611bd7b5315c2, the assertion -error started pop up in some environments. Increasing the number of the -buffers much more, e.g. to 9, makes the problem very reproducible. - -Each pipeline uses its own mechanism to track the requests to clean up -and it can't be excluded that similar omissions are present in other -places. But there is no obvious way to make a common cleanup for all -the pipelines (except for doing it instead of raising the assertion -error, which is probably undesirable, in order not to hide incomplete -pipeline specific cleanups). - -Bug: https://bugs.libcamera.org/show_bug.cgi?id=234 -Signed-off-by: Milan Zamazal -Reviewed-by: Kieran Bingham ---- - src/libcamera/pipeline/simple/simple.cpp | 15 +++++++++++++++ - 1 file changed, 15 insertions(+) - -diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp -index 29320a26..5ee6a5c3 100644 ---- a/src/libcamera/pipeline/simple/simple.cpp -+++ b/src/libcamera/pipeline/simple/simple.cpp -@@ -281,6 +281,7 @@ public: - std::vector> conversionBuffers_; - std::queue> conversionQueue_; - bool useConversion_; -+ void clearIncompleteRequests(); - - std::unique_ptr converter_; - std::unique_ptr swIsp_; -@@ -886,6 +887,19 @@ void SimpleCameraData::conversionOutputDone(FrameBuffer *buffer) - pipe->completeRequest(request); - } - -+void SimpleCameraData::clearIncompleteRequests() -+{ -+ while (!conversionQueue_.empty()) { -+ for (auto &item : conversionQueue_.front()) { -+ FrameBuffer *outputBuffer = item.second; -+ Request *request = outputBuffer->request(); -+ if (request->status() == Request::RequestPending) -+ pipe()->cancelRequest(request); -+ } -+ conversionQueue_.pop(); -+ } -+} -+ - void SimpleCameraData::ispStatsReady() - { - /* \todo Use the DelayedControls class */ -@@ -1382,6 +1396,7 @@ void SimplePipelineHandler::stopDevice(Camera *camera) - - video->bufferReady.disconnect(data, &SimpleCameraData::bufferReady); - -+ data->clearIncompleteRequests(); - data->conversionBuffers_.clear(); - - releasePipeline(data); --- -2.47.0 - diff --git a/temp/libcamera/0009-pipeline-simple-Increase-internal-buffer-count-to-fo.patch b/temp/libcamera/0006-pipeline-simple-Increase-internal-buffer-count-to-fo.patch similarity index 78% rename from temp/libcamera/0009-pipeline-simple-Increase-internal-buffer-count-to-fo.patch rename to temp/libcamera/0006-pipeline-simple-Increase-internal-buffer-count-to-fo.patch index 543d78481..0fb6eecea 100644 --- a/temp/libcamera/0009-pipeline-simple-Increase-internal-buffer-count-to-fo.patch +++ b/temp/libcamera/0006-pipeline-simple-Increase-internal-buffer-count-to-fo.patch @@ -1,7 +1,7 @@ -From e1ec2833fc7320eb9c6258fa17022cd920ba5cc1 Mon Sep 17 00:00:00 2001 +From fe95cf63979bed8000ff0794b015112fef0eaa66 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Sun, 13 Oct 2024 14:13:44 +0200 -Subject: [PATCH 2/2] pipeline: simple: Increase internal buffer count to four +Subject: [PATCH 6/6] pipeline: simple: Increase internal buffer count to four aswell Signed-off-by: Robert Mader @@ -10,10 +10,10 @@ Signed-off-by: Robert Mader 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp -index 931a3c7d..855a4de4 100644 +index f6442019..79d8b3cd 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp -@@ -352,7 +352,7 @@ protected: +@@ -361,7 +361,7 @@ protected: int queueRequestDevice(Camera *camera, Request *request) override; private: @@ -23,5 +23,5 @@ index 931a3c7d..855a4de4 100644 struct EntityData { std::unique_ptr video; -- -2.47.0 +2.47.1 diff --git a/temp/libcamera/0007-ipa-simple-Add-tuning-file-for-IMX355.patch b/temp/libcamera/0007-ipa-simple-Add-tuning-file-for-IMX355.patch new file mode 100644 index 000000000..451f2a05f --- /dev/null +++ b/temp/libcamera/0007-ipa-simple-Add-tuning-file-for-IMX355.patch @@ -0,0 +1,50 @@ +From 95698af98be853e554938aaa8b98af563a3cfd7a Mon Sep 17 00:00:00 2001 +From: Robert Mader +Date: Sat, 19 Oct 2024 00:25:03 +0200 +Subject: [PATCH 07/10] ipa/simple: Add tuning file for IMX355 + +64 at 10 bits. The value was guessed from known values for similar +sensors and testing - on a Google Pixel 3a - suggest it's correct. + +Adding this tuning file is partly motivated in order to serve as +example, as it's the first one for the simple IPA. + +Signed-off-by: Robert Mader +--- + src/ipa/simple/data/imx355.yaml | 11 +++++++++++ + src/ipa/simple/data/meson.build | 1 + + 2 files changed, 12 insertions(+) + create mode 100644 src/ipa/simple/data/imx355.yaml + +diff --git a/src/ipa/simple/data/imx355.yaml b/src/ipa/simple/data/imx355.yaml +new file mode 100644 +index 00000000..f7d01b73 +--- /dev/null ++++ b/src/ipa/simple/data/imx355.yaml +@@ -0,0 +1,11 @@ ++# SPDX-License-Identifier: CC0-1.0 ++%YAML 1.1 ++--- ++version: 1 ++algorithms: ++ - BlackLevel: ++ blackLevel: 4096 ++ - Awb: ++ - Lut: ++ - Agc: ++... +diff --git a/src/ipa/simple/data/meson.build b/src/ipa/simple/data/meson.build +index 92795ee4..6e690f82 100644 +--- a/src/ipa/simple/data/meson.build ++++ b/src/ipa/simple/data/meson.build +@@ -1,6 +1,7 @@ + # SPDX-License-Identifier: CC0-1.0 + + conf_files = files([ ++ 'imx355.yaml', + 'uncalibrated.yaml', + ]) + +-- +2.47.1 + diff --git a/temp/libcamera/0008-ipa-simple-Add-tuning-file-for-IMX363.patch b/temp/libcamera/0008-ipa-simple-Add-tuning-file-for-IMX363.patch new file mode 100644 index 000000000..7c1591701 --- /dev/null +++ b/temp/libcamera/0008-ipa-simple-Add-tuning-file-for-IMX363.patch @@ -0,0 +1,47 @@ +From 52d64173755a337938d3f7f3d1b4b05d395a4c7d Mon Sep 17 00:00:00 2001 +From: Robert Mader +Date: Sat, 19 Oct 2024 17:06:12 +0200 +Subject: [PATCH 08/10] ipa/simple: Add tuning file for IMX363 + +64 at 10 bits. The value was guessed from known values for similar +sensors and testing - on a Google Pixel 3a - suggest it's correct. + +Signed-off-by: Robert Mader +--- + src/ipa/simple/data/imx363.yaml | 11 +++++++++++ + src/ipa/simple/data/meson.build | 1 + + 2 files changed, 12 insertions(+) + create mode 100644 src/ipa/simple/data/imx363.yaml + +diff --git a/src/ipa/simple/data/imx363.yaml b/src/ipa/simple/data/imx363.yaml +new file mode 100644 +index 00000000..f7d01b73 +--- /dev/null ++++ b/src/ipa/simple/data/imx363.yaml +@@ -0,0 +1,11 @@ ++# SPDX-License-Identifier: CC0-1.0 ++%YAML 1.1 ++--- ++version: 1 ++algorithms: ++ - BlackLevel: ++ blackLevel: 4096 ++ - Awb: ++ - Lut: ++ - Agc: ++... +diff --git a/src/ipa/simple/data/meson.build b/src/ipa/simple/data/meson.build +index 6e690f82..7d07d567 100644 +--- a/src/ipa/simple/data/meson.build ++++ b/src/ipa/simple/data/meson.build +@@ -2,6 +2,7 @@ + + conf_files = files([ + 'imx355.yaml', ++ 'imx363.yaml', + 'uncalibrated.yaml', + ]) + +-- +2.47.1 + diff --git a/temp/libcamera/0008-pipeline-simple-Increase-buffer-count-to-four.patch b/temp/libcamera/0008-pipeline-simple-Increase-buffer-count-to-four.patch deleted file mode 100644 index c7badd04c..000000000 --- a/temp/libcamera/0008-pipeline-simple-Increase-buffer-count-to-four.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 08a845788faeb8e38e54aca14ef739349771438e Mon Sep 17 00:00:00 2001 -From: Robert Mader -Date: Thu, 26 Sep 2024 23:07:39 +0200 -Subject: [PATCH 1/2] pipeline: simple: Increase buffer count to four - -Which is not only what many other pipeline handlers use, but also a good -lower limit when dealing with DRM and similar APIs. Even Mesas EGL and -Vulkan WSI implementations use for the reason outlined in mesa commit -992a2dbba80aba35efe83202e1013bd6143f0dba: -> When the compositor is directly scanning out from the application's buffer it -> may end up holding on to three buffers. These are the one that is is currently -> scanning out from, one that has been given to DRM as the next buffer to flip -> to, and one that has been attached and will be given to DRM as soon as the -> previous flip completes. When we attach a fourth buffer to the compositor it -> should replace that third buffer so we should get a release event immediately -> after that. This patch therefore also changes the number of buffer slots to 4 -> so that we can accomodate that situation. - -Given the popularity of this buffer number the bump should be unlikely -to cause problems. At the same time it may help with performance or -even work around glitches. - -The previous number was introduced in commit -a8964c28c80fb520ee3c7b10143371081d41405a without mentioning a specific -reason against the change at hand. - -Signed-off-by: Robert Mader -Reviewed-by: Umang Jain -Reviewed-by: Kieran Bingham -Signed-off-by: Kieran Bingham ---- - src/libcamera/pipeline/simple/simple.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp -index ffb59473..931a3c7d 100644 ---- a/src/libcamera/pipeline/simple/simple.cpp -+++ b/src/libcamera/pipeline/simple/simple.cpp -@@ -1149,7 +1149,7 @@ CameraConfiguration::Status SimpleCameraConfiguration::validate() - cfg.frameSize = format.planes[0].size; - } - -- cfg.bufferCount = 3; -+ cfg.bufferCount = 4; - } - - return status; --- -2.47.0 - diff --git a/temp/libcamera/0009-ipa-simple-Add-tuning-file-for-s5k3l6xx.patch b/temp/libcamera/0009-ipa-simple-Add-tuning-file-for-s5k3l6xx.patch new file mode 100644 index 000000000..02fa74bd3 --- /dev/null +++ b/temp/libcamera/0009-ipa-simple-Add-tuning-file-for-s5k3l6xx.patch @@ -0,0 +1,44 @@ +From 49ba0c5f835d4b8b43585fa50202b6014fb5fdbd Mon Sep 17 00:00:00 2001 +From: Robert Mader +Date: Sun, 24 Nov 2024 18:20:37 +0100 +Subject: [PATCH 09/10] ipa/simple: Add tuning file for s5k3l6xx + +Used by the Librem5 +--- + src/ipa/simple/data/meson.build | 1 + + src/ipa/simple/data/s5k3l6xx.yaml | 11 +++++++++++ + 2 files changed, 12 insertions(+) + create mode 100644 src/ipa/simple/data/s5k3l6xx.yaml + +diff --git a/src/ipa/simple/data/meson.build b/src/ipa/simple/data/meson.build +index 7d07d567..a763edc4 100644 +--- a/src/ipa/simple/data/meson.build ++++ b/src/ipa/simple/data/meson.build +@@ -3,6 +3,7 @@ + conf_files = files([ + 'imx355.yaml', + 'imx363.yaml', ++ 's5k3l6xx.yaml', + 'uncalibrated.yaml', + ]) + +diff --git a/src/ipa/simple/data/s5k3l6xx.yaml b/src/ipa/simple/data/s5k3l6xx.yaml +new file mode 100644 +index 00000000..f7d01b73 +--- /dev/null ++++ b/src/ipa/simple/data/s5k3l6xx.yaml +@@ -0,0 +1,11 @@ ++# SPDX-License-Identifier: CC0-1.0 ++%YAML 1.1 ++--- ++version: 1 ++algorithms: ++ - BlackLevel: ++ blackLevel: 4096 ++ - Awb: ++ - Lut: ++ - Agc: ++... +-- +2.47.1 + diff --git a/temp/libcamera/0010-ipa-simple-Add-tuning-file-for-hi846.patch b/temp/libcamera/0010-ipa-simple-Add-tuning-file-for-hi846.patch new file mode 100644 index 000000000..141150695 --- /dev/null +++ b/temp/libcamera/0010-ipa-simple-Add-tuning-file-for-hi846.patch @@ -0,0 +1,44 @@ +From 77902b4d27db1e1b9f4cd9c8c85745bfa444b741 Mon Sep 17 00:00:00 2001 +From: Robert Mader +Date: Sun, 24 Nov 2024 18:21:52 +0100 +Subject: [PATCH 10/10] ipa/simple: Add tuning file for hi846 + +Used by the Librem5 +--- + src/ipa/simple/data/hi846.yaml | 11 +++++++++++ + src/ipa/simple/data/meson.build | 1 + + 2 files changed, 12 insertions(+) + create mode 100644 src/ipa/simple/data/hi846.yaml + +diff --git a/src/ipa/simple/data/hi846.yaml b/src/ipa/simple/data/hi846.yaml +new file mode 100644 +index 00000000..f7d01b73 +--- /dev/null ++++ b/src/ipa/simple/data/hi846.yaml +@@ -0,0 +1,11 @@ ++# SPDX-License-Identifier: CC0-1.0 ++%YAML 1.1 ++--- ++version: 1 ++algorithms: ++ - BlackLevel: ++ blackLevel: 4096 ++ - Awb: ++ - Lut: ++ - Agc: ++... +diff --git a/src/ipa/simple/data/meson.build b/src/ipa/simple/data/meson.build +index a763edc4..cae83a3d 100644 +--- a/src/ipa/simple/data/meson.build ++++ b/src/ipa/simple/data/meson.build +@@ -1,6 +1,7 @@ + # SPDX-License-Identifier: CC0-1.0 + + conf_files = files([ ++ 'hi846.yaml', + 'imx355.yaml', + 'imx363.yaml', + 's5k3l6xx.yaml', +-- +2.47.1 + diff --git a/temp/libcamera/APKBUILD b/temp/libcamera/APKBUILD index f15a97e44..ef6e009e5 100644 --- a/temp/libcamera/APKBUILD +++ b/temp/libcamera/APKBUILD @@ -2,8 +2,8 @@ pkgname=libcamera pkgver=9999 -_pkgver=0.3.2 -pkgrel=7 +_pkgver=0.4.0 +pkgrel=8 pkgdesc="Linux camera framework" url="https://libcamera.org/" arch="all" @@ -46,11 +46,12 @@ source="https://gitlab.freedesktop.org/camera/libcamera/-/archive/v$_pkgver/libc 0002-libcamera-simple-Force-disable-softwareISP-for-milli.patch 0003-libcamera-simple-Enable-softISP-for-the-Pinephone.patch 0004-libcamera-simple-Skip-hwISP-formats-if-swISP-is-acti.patch - 0005-libcamera-pipeline_handler-Provide-cancelRequest.patch - 0006-libcamera-software_isp-Clean-up-pending-requests-on-.patch - 0007-pipeline-simple-Consider-output-sizes-when-choosing-.patch - 0008-pipeline-simple-Increase-buffer-count-to-four.patch - 0009-pipeline-simple-Increase-internal-buffer-count-to-fo.patch + 0005-pipeline-simple-Consider-output-sizes-when-choosing-.patch + 0006-pipeline-simple-Increase-internal-buffer-count-to-fo.patch + 0007-ipa-simple-Add-tuning-file-for-IMX355.patch + 0008-ipa-simple-Add-tuning-file-for-IMX363.patch + 0009-ipa-simple-Add-tuning-file-for-s5k3l6xx.patch + 0010-ipa-simple-Add-tuning-file-for-hi846.patch qcam.desktop 90-libcamera.rules " @@ -150,16 +151,17 @@ tools() { } sha512sums=" -7c0fb86cf8f1c86496fac91cf75a689d0fd0cec08d2e2f86d096d984404c1e130b9bba19622cd67098ba09adff74178b39ebe94a19c9b25b0a12f7e30e506823 libcamera-v0.3.2.tar.gz -ac7df3e4509ae874199810057f4d8416da71720c15534578cc352608a8ae228dfa4814f9eb995d55422124e542b68819625c8dfe18121a3888d9b2238a5923ef 0001-libcamera-simple-Enable-softwareISP-for-the-librem5.patch -9b6da8bd11ff9d8400ed721fbbeb960ac8753c078fdd971d786a446a9f96fea19dfc55be2705dc44a152e11de996f88139c1d24637bffc257da5083d19fe80c9 0002-libcamera-simple-Force-disable-softwareISP-for-milli.patch -0fc6a1108c4e905d2d422a664622dc25ec459f13765b5711ad009d4df0fd0cceda8cd067a18e5e54eb2346b292481952161e72deb03d416ba80b300256c25e40 0003-libcamera-simple-Enable-softISP-for-the-Pinephone.patch -35c74746453f4c2e24a2185331afabcf64e3af01bec2462ec09940518cda0e91c4a1f33853b4b009e1f8352af3c606fbd4b4d3791ffbba0f610f19538380c4c8 0004-libcamera-simple-Skip-hwISP-formats-if-swISP-is-acti.patch -d8460cb16ad7787f90450bd8bc85b18af14ec5b9add09b246ffd8737275b4681e670e5ce98e2151ba9343f51ecf10e3100846ca480e75654ba2989c28498e702 0005-libcamera-pipeline_handler-Provide-cancelRequest.patch -caa441737da9dc1e9eaa2e27d23ae8d02a16b412deb4b75e144c75dd57ae2bb73b22e2062c593a247ade38a38992945e406679b7a69b7885a109b396808fb37f 0006-libcamera-software_isp-Clean-up-pending-requests-on-.patch -3a969bb728c4d73f1bc99d97b749ae657ef5e4ff5f1e5f0ec73a470ec362b9d9039070a9eac52ccfcf0bf0a000b4149055fc3053d3bb4bbcc1633a373c041de1 0007-pipeline-simple-Consider-output-sizes-when-choosing-.patch -396f741d6cbec8ba316f4651a912d45eb3b4ee8be79f653d2eab24be8dbb0b08e59d4b603d418cb9cc86251d22c151aef5cc5658a012c9b8d7c83862ae232cb1 0008-pipeline-simple-Increase-buffer-count-to-four.patch -dbdaf5fdcd250d6591ce7981256cce3c1dc901b395b797b785602ceef5e3f0bf110ca2ec7edba6abdb6f6b434b8ff376c1121cf6f5c8d204d6eb4369684be627 0009-pipeline-simple-Increase-internal-buffer-count-to-fo.patch +8a8e769239901b7af1099fa9c4c11419f722f12505311b3f3b97bac6a0cfd36275da98bf9bcdaedfffb9f414f904fc6e3cf649903178713ec269d8585b40fe20 libcamera-v0.4.0.tar.gz +0a93293b141f47ea9296f87bcd596e3625f4d609ea4c6c8f0381ef30230f5ded0f92d3bb7ec18406cca4b7c437a44628375d8d65b4761d78ddf3c5245e166467 0001-libcamera-simple-Enable-softwareISP-for-the-librem5.patch +e024d325ec088b89b22033e10090b6a9c895e212660f5c71c774d2833a1873bf8594285aaf7ce3277cc51bf03a7493be29b657d1e7c9a299c864be9b64933d0b 0002-libcamera-simple-Force-disable-softwareISP-for-milli.patch +add6bd7e641dc085921133bba7302740b1cf71c18a26f13e2c2c7bbbfb830cdee92e7e4603141cd720bac4e49d9b04874f262d36a764e79d4e2f4f38c3b6ec92 0003-libcamera-simple-Enable-softISP-for-the-Pinephone.patch +37aa7c96c04267240171f5a137baa9d41993428b1adead068cc7c7a3ed693824447a7cfa9aa2b6b591aa60b302a47e89499fed46f99ee2128c2d6e0540b52f8f 0004-libcamera-simple-Skip-hwISP-formats-if-swISP-is-acti.patch +3728068b572793db6342e105f6745d3a042818502883f10f44d2f2741498ec0bd431608c531f9e515b62adaa1f50d6354829d64ef31121b71774f3095b36d63f 0005-pipeline-simple-Consider-output-sizes-when-choosing-.patch +8d517419183e63b689422ba04bc4d5f6f59c7a05db67ff2548e7195169891f876bda7f15e5274765e0730f62abd3a1ab278fad27ff7669683e8e40164d2a5788 0006-pipeline-simple-Increase-internal-buffer-count-to-fo.patch +4242a4c4934edcb14a7c23020be3c5ea9596f241eb4c44910388489113102931d6d36c1ba9a3eb4676c0981b641e227087709eda3bf831b3b127add35b87fdd6 0007-ipa-simple-Add-tuning-file-for-IMX355.patch +a803793ed16eca2563bbbae84713dab6a5f3090ae6ae5f755393c0b2203bf4471f4f37b6fc69991894ced60a8607d671262a51a49f02730931e43c6a4a3e9635 0008-ipa-simple-Add-tuning-file-for-IMX363.patch +374366eeb471f2034319caa02df182d363187e4f1a0a8ec1dedfe39b3765cc19602c62df7881b99005b004395314e3f737c67a494d44a305e4afb2d0f0085115 0009-ipa-simple-Add-tuning-file-for-s5k3l6xx.patch +6ac1989989fbc7d560948d66f59f62a4f28c8b398398d204cf4323c5db5f1eb45d5caa0f287f4f95956a1346e1346d5e1cf2d3577d46c2588b38a15bdcdb3b76 0010-ipa-simple-Add-tuning-file-for-hi846.patch 22167a4eceb6d1b40b0b7c45fdf116c71684f5340de7f767535cb8e160ad9d2ae0f00cb3d461f73a344520a48a4641cf46226841d78bee06bfbfd2a91337f754 qcam.desktop cb4eb19eec766f1b8667a8b7c9d5f7d44a2dce79fddfdf3b6e3d1849066cebe79f82566bdcf6659c7ddf4faaf233d5adac10cda636935785e5305e2b7e9b34a9 90-libcamera.rules "