[libcamera-devel] [PATCH 02/13] libcamera: ipu3: Import instead of allocate statistic buffers
Niklas Söderlund
niklas.soderlund at ragnatech.se
Sat Jun 27 12:27:30 CEST 2020
Hi Jacopo,
Thanks for your feedback.
On 2020-06-27 11:51:32 +0200, Jacopo Mondi wrote:
> Hi Niklas,
>
> On Sat, Jun 27, 2020 at 05:00:32AM +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
> > allocating the buffers wasting memory that is never used import buffers.
> >
> > Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> > ---
> > 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
> > + * not yet used by the pipeline import buffers to save memory.
> > + *
>
> Is this based on practical experience ? The IPU3 driver documentation
> is a bit confusing on which output is required to have buffes queued
> in order for operations to start...
Yes the documentation is not very helpful so this is all based on
experimentation and reading the code. See the cover letter for how I
verified it.
>
>
> > * \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;
> > --
> > 2.27.0
> >
> > _______________________________________________
> > libcamera-devel mailing list
> > libcamera-devel at lists.libcamera.org
> > https://lists.libcamera.org/listinfo/libcamera-devel
--
Regards,
Niklas Söderlund
More information about the libcamera-devel
mailing list