[libcamera-devel,v2,02/13] libcamera: ipu3: Import instead of allocate statistic buffers

Message ID 20200628001532.2685967-3-niklas.soderlund@ragnatech.se
State Accepted
Headers show
Series
  • libcamera: ipu3: Refactoring of ImgU
Related show

Commit Message

Niklas Söderlund June 28, 2020, 12:15 a.m. UTC
Statistics buffers are not yet used by the IPU3 pipeline, they are never
queued to the 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 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>
---
 src/libcamera/pipeline/ipu3/ipu3.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

Comments

Laurent Pinchart June 28, 2020, 6:55 a.m. UTC | #1
Hi Niklas,

Thank you for the patch.

On Sun, Jun 28, 2020 at 02:15:21AM +0200, Niklas Söderlund wrote:
> Statistics buffers are not yet used by the IPU3 pipeline, they are never
> queued to the 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 video device. Instead of

s/video device/statistics video device/

> allocating the buffers wasting memory that is never used import buffers.

s/used/used,/

> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
> ---
>  src/libcamera/pipeline/ipu3/ipu3.cpp | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index fba45935741e0e4e..405550b1302fb370 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 statisitcs video device. As statistics buffers are

s/statisitcs/statistics/

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> +	 * 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;

Patch

diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index fba45935741e0e4e..405550b1302fb370 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 statisitcs 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;