From dcb3e7e2dfae021c7e21a0ed32697389bb8aca40 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niklas=20S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>
Date: Sat, 27 Jun 2020 00:28:04 +0200
Subject: libcamera: ipu3: Import instead of allocate statistic buffers
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Statistics buffers are not yet used by the IPU3 pipeline, they are never
queued to the statistics video device or in any other way consumed. The
kernel driver will however not allow video streaming to start if buffers
are not either allocated or imported on the statistics video device.
Instead of allocating the buffers wasting memory that is never used,
import buffers.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/libcamera/pipeline/ipu3/ipu3.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index fba45935..90721c2f 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -1135,11 +1135,13 @@ int ImgUDevice::allocateBuffers(IPU3CameraData *data, unsigned int bufferCount)
 	}
 
 	/*
-	 * Use for the stat's internal pool the same number of buffers as for
-	 * the input pool.
+	 * The kernel fails to start if buffers are not either imported or
+	 * allocated for the statistics video device. As statistics buffers are
+	 * not yet used by the pipeline import buffers to save memory.
+	 *
 	 * \todo To be revised when we'll actually use the stat node.
 	 */
-	ret = stat_.dev->allocateBuffers(bufferCount, &stat_.buffers);
+	ret = stat_.dev->importBuffers(bufferCount);
 	if (ret < 0) {
 		LOG(IPU3, Error) << "Failed to allocate ImgU stat buffers";
 		goto error;
-- 
cgit v1.2.1