<div dir="ltr">Gentle ping for review, or would this patch series be merged?</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, May 13, 2021 at 7:00 PM Jacopo Mondi <<a href="mailto:jacopo@jmondi.org">jacopo@jmondi.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Hiro,<br>
<br>
On Thu, May 13, 2021 at 11:29:46AM +0900, Hirokazu Honda wrote:<br>
> IPU3CameraData stores requests that have been failed due to a<br>
> buffer shortage. The requests should be retried once enough<br>
> buffers are available. This sets the retry function as signal to<br>
> CIO2Device and IPU3Frame, and invokes it from<br>
> CIO2Device::tryReturnBuffer() and IPU3Frame::remove().<br>
><br>
> Signed-off-by: Hirokazu Honda <<a href="mailto:hiroh@chromium.org" target="_blank">hiroh@chromium.org</a>><br>
> ---<br>
> src/libcamera/pipeline/ipu3/cio2.cpp | 2 ++<br>
> src/libcamera/pipeline/ipu3/cio2.h | 2 ++<br>
> src/libcamera/pipeline/ipu3/frames.cpp | 2 ++<br>
> src/libcamera/pipeline/ipu3/frames.h | 4 ++++<br>
> src/libcamera/pipeline/ipu3/ipu3.cpp | 4 ++++<br>
> 5 files changed, 14 insertions(+)<br>
><br>
> diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp<br>
> index 8bbef174..1be2cbcd 100644<br>
> --- a/src/libcamera/pipeline/ipu3/cio2.cpp<br>
> +++ b/src/libcamera/pipeline/ipu3/cio2.cpp<br>
> @@ -302,6 +302,8 @@ void CIO2Device::tryReturnBuffer(FrameBuffer *buffer)<br>
> break;<br>
> }<br>
> }<br>
> +<br>
> + bufferAvailable.emit();<br>
> }<br>
><br>
> void CIO2Device::freeBuffers()<br>
> diff --git a/src/libcamera/pipeline/ipu3/cio2.h b/src/libcamera/pipeline/ipu3/cio2.h<br>
> index 5ecc4f47..d8d4a181 100644<br>
> --- a/src/libcamera/pipeline/ipu3/cio2.h<br>
> +++ b/src/libcamera/pipeline/ipu3/cio2.h<br>
> @@ -56,6 +56,8 @@ public:<br>
> Signal<FrameBuffer *> &bufferReady() { return output_->bufferReady; }<br>
> Signal<uint32_t> &frameStart() { return csi2_->frameStart; }<br>
><br>
> + Signal<> bufferAvailable;<br>
> +<br>
> private:<br>
> void freeBuffers();<br>
><br>
> diff --git a/src/libcamera/pipeline/ipu3/frames.cpp b/src/libcamera/pipeline/ipu3/frames.cpp<br>
> index 29d9aafc..d9a2249b 100644<br>
> --- a/src/libcamera/pipeline/ipu3/frames.cpp<br>
> +++ b/src/libcamera/pipeline/ipu3/frames.cpp<br>
> @@ -103,6 +103,8 @@ bool IPU3Frames::tryComplete(IPU3Frames::Info *info)<br>
><br>
> remove(info);<br>
><br>
> + bufferAvailable.emit();<br>
> +<br>
> return true;<br>
> }<br>
><br>
> diff --git a/src/libcamera/pipeline/ipu3/frames.h b/src/libcamera/pipeline/ipu3/frames.h<br>
> index 4acdf48e..59e64e81 100644<br>
> --- a/src/libcamera/pipeline/ipu3/frames.h<br>
> +++ b/src/libcamera/pipeline/ipu3/frames.h<br>
> @@ -12,6 +12,8 @@<br>
> #include <queue><br>
> #include <vector><br>
><br>
> +#include <libcamera/signal.h><br>
> +<br>
> namespace libcamera {<br>
><br>
> class FrameBuffer;<br>
> @@ -49,6 +51,8 @@ public:<br>
> Info *find(unsigned int id);<br>
> Info *find(FrameBuffer *buffer);<br>
><br>
> + Signal<> bufferAvailable;<br>
> +<br>
> private:<br>
> std::queue<FrameBuffer *> availableParamBuffers_;<br>
> std::queue<FrameBuffer *> availableStatBuffers_;<br>
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp<br>
> index 6961d498..8ae47c6d 100644<br>
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp<br>
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp<br>
> @@ -701,6 +701,8 @@ int PipelineHandlerIPU3::allocateBuffers(Camera *camera)<br>
> data->ipa_->mapBuffers(ipaBuffers_);<br>
><br>
> data->frameInfos_.init(imgu->paramBuffers_, imgu->statBuffers_);<br>
> + data->frameInfos_.bufferAvailable.connect(<br>
> + data, &IPU3CameraData::queuePendingRequests);<br>
><br>
> return 0;<br>
> }<br>
> @@ -1147,6 +1149,8 @@ int PipelineHandlerIPU3::registerCameras()<br>
> */<br>
> data->cio2_.bufferReady().connect(data.get(),<br>
> &IPU3CameraData::cio2BufferReady);<br>
> + data->cio2_.bufferAvailable.connect(<br>
> + data.get(), &IPU3CameraData::queuePendingRequests);<br>
<br>
Looks good<br>
Reviewed-by: Jacopo Mondi <<a href="mailto:jacopo@jmondi.org" target="_blank">jacopo@jmondi.org</a>><br>
<br>
Thanks<br>
j<br>
<br>
> data->imgu_->input_->bufferReady.connect(&data->cio2_,<br>
> &CIO2Device::tryReturnBuffer);<br>
> data->imgu_->output_->bufferReady.connect(data.get(),<br>
> --<br>
> 2.31.1.607.g51e8a6a459-goog<br>
><br>
> _______________________________________________<br>
> libcamera-devel mailing list<br>
> <a href="mailto:libcamera-devel@lists.libcamera.org" target="_blank">libcamera-devel@lists.libcamera.org</a><br>
> <a href="https://lists.libcamera.org/listinfo/libcamera-devel" rel="noreferrer" target="_blank">https://lists.libcamera.org/listinfo/libcamera-devel</a><br>
</blockquote></div>