[libcamera-devel] [PATCH v2 09/11] libcamera: ipu3: Map buffers in IPA
Jacopo Mondi
jacopo at jmondi.org
Thu Jan 7 17:37:01 CET 2021
Hi Niklas,
On Tue, Dec 29, 2020 at 05:03:16PM +0100, Niklas Söderlund wrote:
> Map and unmap the parameters and statistic buffers in the IPA when the
> pipeline handler allocates and frees the buffers.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
> src/libcamera/pipeline/ipu3/ipu3.cpp | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index 95f1b75dc8be5d40..141066c528890c8e 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -138,6 +138,8 @@ private:
> ImgUDevice imgu1_;
> MediaDevice *cio2MediaDev_;
> MediaDevice *imguMediaDev_;
> +
> + std::vector<IPABuffer> ipaBuffers_;
> };
>
> IPU3CameraConfiguration::IPU3CameraConfiguration(IPU3CameraData *data)
> @@ -583,6 +585,23 @@ int PipelineHandlerIPU3::allocateBuffers(Camera *camera)
> if (ret < 0)
> return ret;
>
> + /* Map buffers to the IPA. */
> + unsigned int ipaBufferId = 1;
> +
> + for (const std::unique_ptr<FrameBuffer> &buffer : imgu->paramBuffers_) {
> + buffer->setCookie(ipaBufferId++);
> + ipaBuffers_.push_back({ .id = buffer->cookie(),
You can reserve space in ipaBuffers_
> + .planes = buffer->planes() });
> + }
> +
> + for (const std::unique_ptr<FrameBuffer> &buffer : imgu->statBuffers_) {
> + buffer->setCookie(ipaBufferId++);
> + ipaBuffers_.push_back({ .id = buffer->cookie(),
> + .planes = buffer->planes() });
> + }
> +
> + data->ipa_->mapBuffers(ipaBuffers_);
> +
> return 0;
> }
>
> @@ -590,6 +609,13 @@ int PipelineHandlerIPU3::freeBuffers(Camera *camera)
> {
> IPU3CameraData *data = cameraData(camera);
>
> + std::vector<unsigned int> ids;
You can reserve(ipaBuffers_.size())
> + for (IPABuffer &ipabuf : ipaBuffers_)
> + ids.push_back(ipabuf.id);
> +
> + data->ipa_->unmapBuffers(ids);
> + ipaBuffers_.clear();
> +
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Thanks
j
> data->imgu_->freeBuffers();
>
> return 0;
> --
> 2.29.2
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
More information about the libcamera-devel
mailing list