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
This commit is contained in:
parent
33a86abe90
commit
749904dd49
14 changed files with 234 additions and 257 deletions
|
|
@ -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 <robert.mader@collabora.com>
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 <robert.mader@collabora.com>
|
||||
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 <iterator>
|
||||
#include <list>
|
||||
#include <map>
|
||||
@@ -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<MediaEntity *> sensors = locateSensors(media);
|
||||
if (sensors.empty()) {
|
||||
--
|
||||
2.46.1
|
||||
2.47.1
|
||||
|
||||
|
|
|
|||
|
|
@ -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 <robert.mader@collabora.com>
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 <robert.mader@collabora.com>
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -1,79 +0,0 @@
|
|||
From f74131fa00580e69776215a631217c8b20cc8189 Mon Sep 17 00:00:00 2001
|
||||
From: Milan Zamazal <mzamazal@redhat.com>
|
||||
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 <mzamazal@redhat.com>
|
||||
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
|
||||
---
|
||||
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
|
||||
|
||||
|
|
@ -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 <robert.mader@collabora.com>
|
||||
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
|
||||
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
From 36c6eb6e9b665830f11876c125780af08b6217d0 Mon Sep 17 00:00:00 2001
|
||||
From: Milan Zamazal <mzamazal@redhat.com>
|
||||
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 <mzamazal@redhat.com>
|
||||
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
|
||||
---
|
||||
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<std::unique_ptr<FrameBuffer>> conversionBuffers_;
|
||||
std::queue<std::map<const Stream *, FrameBuffer *>> conversionQueue_;
|
||||
bool useConversion_;
|
||||
+ void clearIncompleteRequests();
|
||||
|
||||
std::unique_ptr<Converter> converter_;
|
||||
std::unique_ptr<SoftwareIsp> 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
|
||||
|
||||
|
|
@ -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 <robert.mader@collabora.com>
|
||||
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 <robert.mader@collabora.com>
|
||||
|
|
@ -10,10 +10,10 @@ Signed-off-by: Robert Mader <robert.mader@collabora.com>
|
|||
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<V4L2VideoDevice> video;
|
||||
--
|
||||
2.47.0
|
||||
2.47.1
|
||||
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
From 95698af98be853e554938aaa8b98af563a3cfd7a Mon Sep 17 00:00:00 2001
|
||||
From: Robert Mader <robert.mader@collabora.com>
|
||||
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 <robert.mader@collabora.com>
|
||||
---
|
||||
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
|
||||
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
From 52d64173755a337938d3f7f3d1b4b05d395a4c7d Mon Sep 17 00:00:00 2001
|
||||
From: Robert Mader <robert.mader@collabora.com>
|
||||
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 <robert.mader@collabora.com>
|
||||
---
|
||||
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
|
||||
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
From 08a845788faeb8e38e54aca14ef739349771438e Mon Sep 17 00:00:00 2001
|
||||
From: Robert Mader <robert.mader@collabora.com>
|
||||
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 <robert.mader@collabora.com>
|
||||
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
|
||||
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
|
||||
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
|
||||
---
|
||||
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
|
||||
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
From 49ba0c5f835d4b8b43585fa50202b6014fb5fdbd Mon Sep 17 00:00:00 2001
|
||||
From: Robert Mader <robert.mader@collabora.com>
|
||||
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
|
||||
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
From 77902b4d27db1e1b9f4cd9c8c85745bfa444b741 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Mader <robert.mader@collabora.com>
|
||||
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
|
||||
|
||||
|
|
@ -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
|
||||
"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue