[{"id":16933,"web_url":"https://patchwork.libcamera.org/comment/16933/","msgid":"<20210513100142.qtu4bohieydfvmpz@uno.localdomain>","date":"2021-05-13T10:01:42","subject":"Re: [libcamera-devel] [PATCH v5 2/2] libcamera: ipu3: Try queuing\n\tpending requests if a buffer is available","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Hiro,\n\nOn Thu, May 13, 2021 at 11:29:46AM +0900, Hirokazu Honda wrote:\n> IPU3CameraData stores requests that have been failed due to a\n> buffer shortage. The requests should be retried once enough\n> buffers are available. This sets the retry function as signal to\n> CIO2Device and IPU3Frame, and invokes it from\n> CIO2Device::tryReturnBuffer() and IPU3Frame::remove().\n>\n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> ---\n>  src/libcamera/pipeline/ipu3/cio2.cpp   | 2 ++\n>  src/libcamera/pipeline/ipu3/cio2.h     | 2 ++\n>  src/libcamera/pipeline/ipu3/frames.cpp | 2 ++\n>  src/libcamera/pipeline/ipu3/frames.h   | 4 ++++\n>  src/libcamera/pipeline/ipu3/ipu3.cpp   | 4 ++++\n>  5 files changed, 14 insertions(+)\n>\n> diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp\n> index 8bbef174..1be2cbcd 100644\n> --- a/src/libcamera/pipeline/ipu3/cio2.cpp\n> +++ b/src/libcamera/pipeline/ipu3/cio2.cpp\n> @@ -302,6 +302,8 @@ void CIO2Device::tryReturnBuffer(FrameBuffer *buffer)\n>  \t\t\tbreak;\n>  \t\t}\n>  \t}\n> +\n> +\tbufferAvailable.emit();\n>  }\n>\n>  void CIO2Device::freeBuffers()\n> diff --git a/src/libcamera/pipeline/ipu3/cio2.h b/src/libcamera/pipeline/ipu3/cio2.h\n> index 5ecc4f47..d8d4a181 100644\n> --- a/src/libcamera/pipeline/ipu3/cio2.h\n> +++ b/src/libcamera/pipeline/ipu3/cio2.h\n> @@ -56,6 +56,8 @@ public:\n>  \tSignal<FrameBuffer *> &bufferReady() { return output_->bufferReady; }\n>  \tSignal<uint32_t> &frameStart() { return csi2_->frameStart; }\n>\n> +\tSignal<> bufferAvailable;\n> +\n>  private:\n>  \tvoid freeBuffers();\n>\n> diff --git a/src/libcamera/pipeline/ipu3/frames.cpp b/src/libcamera/pipeline/ipu3/frames.cpp\n> index 29d9aafc..d9a2249b 100644\n> --- a/src/libcamera/pipeline/ipu3/frames.cpp\n> +++ b/src/libcamera/pipeline/ipu3/frames.cpp\n> @@ -103,6 +103,8 @@ bool IPU3Frames::tryComplete(IPU3Frames::Info *info)\n>\n>  \tremove(info);\n>\n> +\tbufferAvailable.emit();\n> +\n>  \treturn true;\n>  }\n>\n> diff --git a/src/libcamera/pipeline/ipu3/frames.h b/src/libcamera/pipeline/ipu3/frames.h\n> index 4acdf48e..59e64e81 100644\n> --- a/src/libcamera/pipeline/ipu3/frames.h\n> +++ b/src/libcamera/pipeline/ipu3/frames.h\n> @@ -12,6 +12,8 @@\n>  #include <queue>\n>  #include <vector>\n>\n> +#include <libcamera/signal.h>\n> +\n>  namespace libcamera {\n>\n>  class FrameBuffer;\n> @@ -49,6 +51,8 @@ public:\n>  \tInfo *find(unsigned int id);\n>  \tInfo *find(FrameBuffer *buffer);\n>\n> +\tSignal<> bufferAvailable;\n> +\n>  private:\n>  \tstd::queue<FrameBuffer *> availableParamBuffers_;\n>  \tstd::queue<FrameBuffer *> availableStatBuffers_;\n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index 6961d498..8ae47c6d 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -701,6 +701,8 @@ int PipelineHandlerIPU3::allocateBuffers(Camera *camera)\n>  \tdata->ipa_->mapBuffers(ipaBuffers_);\n>\n>  \tdata->frameInfos_.init(imgu->paramBuffers_, imgu->statBuffers_);\n> +\tdata->frameInfos_.bufferAvailable.connect(\n> +\t\tdata, &IPU3CameraData::queuePendingRequests);\n>\n>  \treturn 0;\n>  }\n> @@ -1147,6 +1149,8 @@ int PipelineHandlerIPU3::registerCameras()\n>  \t\t */\n>  \t\tdata->cio2_.bufferReady().connect(data.get(),\n>  \t\t\t\t\t&IPU3CameraData::cio2BufferReady);\n> +\t\tdata->cio2_.bufferAvailable.connect(\n> +\t\t\tdata.get(), &IPU3CameraData::queuePendingRequests);\n\nLooks good\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n  j\n\n>  \t\tdata->imgu_->input_->bufferReady.connect(&data->cio2_,\n>  \t\t\t\t\t&CIO2Device::tryReturnBuffer);\n>  \t\tdata->imgu_->output_->bufferReady.connect(data.get(),\n> --\n> 2.31.1.607.g51e8a6a459-goog\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id DF2ACC31EB\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 13 May 2021 10:00:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8D68F68909;\n\tThu, 13 May 2021 12:00:59 +0200 (CEST)","from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net\n\t[217.70.183.193])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A11316153C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 13 May 2021 12:00:58 +0200 (CEST)","from uno.localdomain (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay1-d.mail.gandi.net (Postfix) with ESMTPSA id 2EA7B240008;\n\tThu, 13 May 2021 10:00:57 +0000 (UTC)"],"Date":"Thu, 13 May 2021 12:01:42 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<20210513100142.qtu4bohieydfvmpz@uno.localdomain>","References":"<20210513022946.2194341-1-hiroh@chromium.org>\n\t<20210513022946.2194341-2-hiroh@chromium.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210513022946.2194341-2-hiroh@chromium.org>","Subject":"Re: [libcamera-devel] [PATCH v5 2/2] libcamera: ipu3: Try queuing\n\tpending requests if a buffer is available","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":17046,"web_url":"https://patchwork.libcamera.org/comment/17046/","msgid":"<CAO5uPHMrF5EaW59F8QbBq+cfXom_-7E8Ywrpddrq32w2JRsMpg@mail.gmail.com>","date":"2021-05-20T09:02:05","subject":"Re: [libcamera-devel] [PATCH v5 2/2] libcamera: ipu3: Try queuing\n\tpending requests if a buffer is available","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Gentle ping for review, or would this patch series be merged?\n\nOn Thu, May 13, 2021 at 7:00 PM Jacopo Mondi <jacopo@jmondi.org> wrote:\n\n> Hi Hiro,\n>\n> On Thu, May 13, 2021 at 11:29:46AM +0900, Hirokazu Honda wrote:\n> > IPU3CameraData stores requests that have been failed due to a\n> > buffer shortage. The requests should be retried once enough\n> > buffers are available. This sets the retry function as signal to\n> > CIO2Device and IPU3Frame, and invokes it from\n> > CIO2Device::tryReturnBuffer() and IPU3Frame::remove().\n> >\n> > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> > ---\n> >  src/libcamera/pipeline/ipu3/cio2.cpp   | 2 ++\n> >  src/libcamera/pipeline/ipu3/cio2.h     | 2 ++\n> >  src/libcamera/pipeline/ipu3/frames.cpp | 2 ++\n> >  src/libcamera/pipeline/ipu3/frames.h   | 4 ++++\n> >  src/libcamera/pipeline/ipu3/ipu3.cpp   | 4 ++++\n> >  5 files changed, 14 insertions(+)\n> >\n> > diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp\n> b/src/libcamera/pipeline/ipu3/cio2.cpp\n> > index 8bbef174..1be2cbcd 100644\n> > --- a/src/libcamera/pipeline/ipu3/cio2.cpp\n> > +++ b/src/libcamera/pipeline/ipu3/cio2.cpp\n> > @@ -302,6 +302,8 @@ void CIO2Device::tryReturnBuffer(FrameBuffer *buffer)\n> >                       break;\n> >               }\n> >       }\n> > +\n> > +     bufferAvailable.emit();\n> >  }\n> >\n> >  void CIO2Device::freeBuffers()\n> > diff --git a/src/libcamera/pipeline/ipu3/cio2.h\n> b/src/libcamera/pipeline/ipu3/cio2.h\n> > index 5ecc4f47..d8d4a181 100644\n> > --- a/src/libcamera/pipeline/ipu3/cio2.h\n> > +++ b/src/libcamera/pipeline/ipu3/cio2.h\n> > @@ -56,6 +56,8 @@ public:\n> >       Signal<FrameBuffer *> &bufferReady() { return\n> output_->bufferReady; }\n> >       Signal<uint32_t> &frameStart() { return csi2_->frameStart; }\n> >\n> > +     Signal<> bufferAvailable;\n> > +\n> >  private:\n> >       void freeBuffers();\n> >\n> > diff --git a/src/libcamera/pipeline/ipu3/frames.cpp\n> b/src/libcamera/pipeline/ipu3/frames.cpp\n> > index 29d9aafc..d9a2249b 100644\n> > --- a/src/libcamera/pipeline/ipu3/frames.cpp\n> > +++ b/src/libcamera/pipeline/ipu3/frames.cpp\n> > @@ -103,6 +103,8 @@ bool IPU3Frames::tryComplete(IPU3Frames::Info *info)\n> >\n> >       remove(info);\n> >\n> > +     bufferAvailable.emit();\n> > +\n> >       return true;\n> >  }\n> >\n> > diff --git a/src/libcamera/pipeline/ipu3/frames.h\n> b/src/libcamera/pipeline/ipu3/frames.h\n> > index 4acdf48e..59e64e81 100644\n> > --- a/src/libcamera/pipeline/ipu3/frames.h\n> > +++ b/src/libcamera/pipeline/ipu3/frames.h\n> > @@ -12,6 +12,8 @@\n> >  #include <queue>\n> >  #include <vector>\n> >\n> > +#include <libcamera/signal.h>\n> > +\n> >  namespace libcamera {\n> >\n> >  class FrameBuffer;\n> > @@ -49,6 +51,8 @@ public:\n> >       Info *find(unsigned int id);\n> >       Info *find(FrameBuffer *buffer);\n> >\n> > +     Signal<> bufferAvailable;\n> > +\n> >  private:\n> >       std::queue<FrameBuffer *> availableParamBuffers_;\n> >       std::queue<FrameBuffer *> availableStatBuffers_;\n> > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > index 6961d498..8ae47c6d 100644\n> > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > @@ -701,6 +701,8 @@ int PipelineHandlerIPU3::allocateBuffers(Camera\n> *camera)\n> >       data->ipa_->mapBuffers(ipaBuffers_);\n> >\n> >       data->frameInfos_.init(imgu->paramBuffers_, imgu->statBuffers_);\n> > +     data->frameInfos_.bufferAvailable.connect(\n> > +             data, &IPU3CameraData::queuePendingRequests);\n> >\n> >       return 0;\n> >  }\n> > @@ -1147,6 +1149,8 @@ int PipelineHandlerIPU3::registerCameras()\n> >                */\n> >               data->cio2_.bufferReady().connect(data.get(),\n> >                                       &IPU3CameraData::cio2BufferReady);\n> > +             data->cio2_.bufferAvailable.connect(\n> > +                     data.get(), &IPU3CameraData::queuePendingRequests);\n>\n> Looks good\n> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n>\n> Thanks\n>   j\n>\n> >               data->imgu_->input_->bufferReady.connect(&data->cio2_,\n> >                                       &CIO2Device::tryReturnBuffer);\n> >               data->imgu_->output_->bufferReady.connect(data.get(),\n> > --\n> > 2.31.1.607.g51e8a6a459-goog\n> >\n> > _______________________________________________\n> > libcamera-devel mailing list\n> > libcamera-devel@lists.libcamera.org\n> > https://lists.libcamera.org/listinfo/libcamera-devel\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 0DA3FC31FF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 20 May 2021 09:02:19 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6622168920;\n\tThu, 20 May 2021 11:02:18 +0200 (CEST)","from mail-ej1-x634.google.com (mail-ej1-x634.google.com\n\t[IPv6:2a00:1450:4864:20::634])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E0C2668919\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 20 May 2021 11:02:17 +0200 (CEST)","by mail-ej1-x634.google.com with SMTP id lz27so24045021ejb.11\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 20 May 2021 02:02:17 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"BwJbK+WJ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=H+p2CoZVQiUiqB/YwpEXG+yEBxVDjbLUg3MfNy+B+sA=;\n\tb=BwJbK+WJ3lYmM/OVYJtSrDXWpm5o0LhSfrl3WVb5quWbYf1c4nRXAS2Wau+NC+fTpb\n\t/OItiTpx1hBzhzW2LFjbLcIF9zVxXxHT9PTb55QG7pq28mL6zpdkcvGEoF63DUz9Wz85\n\tUOjuh0zvpFMkfrgFFbzr9sjcsw7bkWKXmA2SQ=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=H+p2CoZVQiUiqB/YwpEXG+yEBxVDjbLUg3MfNy+B+sA=;\n\tb=AMg+PCE1BiCv8MZipURF73DQQSEKHmNoAJRnbdvpGco8urAEfFdtgr7jQzuApPk+OU\n\tgNRVZbcjdGaeG/+1pzsZ+uTnnvTX9zQE8WNeaqGx8iDEgmhZKQMfYufv/ywHK4bSEZvO\n\t2kWPBSapfv8HoxRtJzo7iaxRE6veOM5j21dELyG9d7KsZsAYcEek1y10mAq1s9STv2LL\n\tJVi1uG60ebhhg6Ld6c1NrLQuNrQQeDCQ2k3LxjIvGA7JJttK/Ups+mSCmyY7s3bFYdjR\n\t27gBN6VZsN10cbERmGKjz7VGRlTgooneTOtZC2isVgaJFVhz9cCY1dAm8zWcRm44zKN4\n\t2Lvw==","X-Gm-Message-State":"AOAM531uHS0a6Ct0CLN3IZpKG/wt7dARd6lLWz/Mm2XmpOB/veAqusMM\n\tBwOZSjwv7z+o2vyjbcpP9bGVFeVtZdztRDH5yTOTgQ==","X-Google-Smtp-Source":"ABdhPJyweTux1EkV+WNMMbVWVvvJ+xvAVirMiYLZsraFyOhBlAyyE7zNF6EHhdN646F1NJ254ee9CSQnO1naJ6TBRnA=","X-Received":"by 2002:a17:907:3ea0:: with SMTP id\n\ths32mr3593186ejc.475.1621501337218; \n\tThu, 20 May 2021 02:02:17 -0700 (PDT)","MIME-Version":"1.0","References":"<20210513022946.2194341-1-hiroh@chromium.org>\n\t<20210513022946.2194341-2-hiroh@chromium.org>\n\t<20210513100142.qtu4bohieydfvmpz@uno.localdomain>","In-Reply-To":"<20210513100142.qtu4bohieydfvmpz@uno.localdomain>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Thu, 20 May 2021 18:02:05 +0900","Message-ID":"<CAO5uPHMrF5EaW59F8QbBq+cfXom_-7E8Ywrpddrq32w2JRsMpg@mail.gmail.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Content-Type":"multipart/alternative; boundary=\"000000000000354b5805c2bf331f\"","Subject":"Re: [libcamera-devel] [PATCH v5 2/2] libcamera: ipu3: Try queuing\n\tpending requests if a buffer is available","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":17157,"web_url":"https://patchwork.libcamera.org/comment/17157/","msgid":"<YKsVbwUFBs6yOuaQ@pendragon.ideasonboard.com>","date":"2021-05-24T02:54:39","subject":"Re: [libcamera-devel] [PATCH v5 2/2] libcamera: ipu3: Try queuing\n\tpending requests if a buffer is available","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Hiro,\n\nThank you for the patch.\n\nOn Thu, May 13, 2021 at 11:29:46AM +0900, Hirokazu Honda wrote:\n> IPU3CameraData stores requests that have been failed due to a\n> buffer shortage. The requests should be retried once enough\n> buffers are available. This sets the retry function as signal to\n> CIO2Device and IPU3Frame, and invokes it from\n> CIO2Device::tryReturnBuffer() and IPU3Frame::remove().\n> \n> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/libcamera/pipeline/ipu3/cio2.cpp   | 2 ++\n>  src/libcamera/pipeline/ipu3/cio2.h     | 2 ++\n>  src/libcamera/pipeline/ipu3/frames.cpp | 2 ++\n>  src/libcamera/pipeline/ipu3/frames.h   | 4 ++++\n>  src/libcamera/pipeline/ipu3/ipu3.cpp   | 4 ++++\n>  5 files changed, 14 insertions(+)\n> \n> diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp\n> index 8bbef174..1be2cbcd 100644\n> --- a/src/libcamera/pipeline/ipu3/cio2.cpp\n> +++ b/src/libcamera/pipeline/ipu3/cio2.cpp\n> @@ -302,6 +302,8 @@ void CIO2Device::tryReturnBuffer(FrameBuffer *buffer)\n>  \t\t\tbreak;\n>  \t\t}\n>  \t}\n> +\n> +\tbufferAvailable.emit();\n>  }\n>  \n>  void CIO2Device::freeBuffers()\n> diff --git a/src/libcamera/pipeline/ipu3/cio2.h b/src/libcamera/pipeline/ipu3/cio2.h\n> index 5ecc4f47..d8d4a181 100644\n> --- a/src/libcamera/pipeline/ipu3/cio2.h\n> +++ b/src/libcamera/pipeline/ipu3/cio2.h\n> @@ -56,6 +56,8 @@ public:\n>  \tSignal<FrameBuffer *> &bufferReady() { return output_->bufferReady; }\n>  \tSignal<uint32_t> &frameStart() { return csi2_->frameStart; }\n>  \n> +\tSignal<> bufferAvailable;\n> +\n>  private:\n>  \tvoid freeBuffers();\n>  \n> diff --git a/src/libcamera/pipeline/ipu3/frames.cpp b/src/libcamera/pipeline/ipu3/frames.cpp\n> index 29d9aafc..d9a2249b 100644\n> --- a/src/libcamera/pipeline/ipu3/frames.cpp\n> +++ b/src/libcamera/pipeline/ipu3/frames.cpp\n> @@ -103,6 +103,8 @@ bool IPU3Frames::tryComplete(IPU3Frames::Info *info)\n>  \n>  \tremove(info);\n>  \n> +\tbufferAvailable.emit();\n> +\n>  \treturn true;\n>  }\n>  \n> diff --git a/src/libcamera/pipeline/ipu3/frames.h b/src/libcamera/pipeline/ipu3/frames.h\n> index 4acdf48e..59e64e81 100644\n> --- a/src/libcamera/pipeline/ipu3/frames.h\n> +++ b/src/libcamera/pipeline/ipu3/frames.h\n> @@ -12,6 +12,8 @@\n>  #include <queue>\n>  #include <vector>\n>  \n> +#include <libcamera/signal.h>\n> +\n>  namespace libcamera {\n>  \n>  class FrameBuffer;\n> @@ -49,6 +51,8 @@ public:\n>  \tInfo *find(unsigned int id);\n>  \tInfo *find(FrameBuffer *buffer);\n>  \n> +\tSignal<> bufferAvailable;\n> +\n>  private:\n>  \tstd::queue<FrameBuffer *> availableParamBuffers_;\n>  \tstd::queue<FrameBuffer *> availableStatBuffers_;\n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index 6961d498..8ae47c6d 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -701,6 +701,8 @@ int PipelineHandlerIPU3::allocateBuffers(Camera *camera)\n>  \tdata->ipa_->mapBuffers(ipaBuffers_);\n>  \n>  \tdata->frameInfos_.init(imgu->paramBuffers_, imgu->statBuffers_);\n> +\tdata->frameInfos_.bufferAvailable.connect(\n> +\t\tdata, &IPU3CameraData::queuePendingRequests);\n>  \n>  \treturn 0;\n>  }\n> @@ -1147,6 +1149,8 @@ int PipelineHandlerIPU3::registerCameras()\n>  \t\t */\n>  \t\tdata->cio2_.bufferReady().connect(data.get(),\n>  \t\t\t\t\t&IPU3CameraData::cio2BufferReady);\n> +\t\tdata->cio2_.bufferAvailable.connect(\n> +\t\t\tdata.get(), &IPU3CameraData::queuePendingRequests);\n>  \t\tdata->imgu_->input_->bufferReady.connect(&data->cio2_,\n>  \t\t\t\t\t&CIO2Device::tryReturnBuffer);\n>  \t\tdata->imgu_->output_->bufferReady.connect(data.get(),","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 8EED4C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 24 May 2021 02:54:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E7D636891B;\n\tMon, 24 May 2021 04:54:44 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3FF38602AD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 24 May 2021 04:54:43 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id AEBFC476;\n\tMon, 24 May 2021 04:54:42 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Fp9uc9hp\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1621824882;\n\tbh=5/Mp6OXd6WykfnqvqwDu1GhPhczzf/qlim2tpm2Ydsc=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Fp9uc9hp6KGBP+6OtiNhBashUGd05Mv+3ok3X0yrkcBxQXwlRnSiXbkMsY1NH+Xio\n\tDfsKUBp0Rqsev6gRBB17chxNE5Wvr3Lpq/zPcTDpPIYeLFpmZSkuq80dtn3uFbjWIU\n\tDv9TCuUCRQnKIB44k3SUJImfsBnPvBdeKZgBDNRU=","Date":"Mon, 24 May 2021 05:54:39 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<YKsVbwUFBs6yOuaQ@pendragon.ideasonboard.com>","References":"<20210513022946.2194341-1-hiroh@chromium.org>\n\t<20210513022946.2194341-2-hiroh@chromium.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210513022946.2194341-2-hiroh@chromium.org>","Subject":"Re: [libcamera-devel] [PATCH v5 2/2] libcamera: ipu3: Try queuing\n\tpending requests if a buffer is available","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":17159,"web_url":"https://patchwork.libcamera.org/comment/17159/","msgid":"<YKsWpEymrUcht7VW@pendragon.ideasonboard.com>","date":"2021-05-24T02:59:48","subject":"Re: [libcamera-devel] [PATCH v5 2/2] libcamera: ipu3: Try queuing\n\tpending requests if a buffer is available","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Hiro,\n\nOn Thu, May 20, 2021 at 06:02:05PM +0900, Hirokazu Honda wrote:\n> Gentle ping for review, or would this patch series be merged?\n\nIt all looks good. I've applied the series to my tree, it's undergoing\ntesting and I'll merge it shortly. Sorry for the delay.\n\n> On Thu, May 13, 2021 at 7:00 PM Jacopo Mondi wrote:\n> > On Thu, May 13, 2021 at 11:29:46AM +0900, Hirokazu Honda wrote:\n> > > IPU3CameraData stores requests that have been failed due to a\n> > > buffer shortage. The requests should be retried once enough\n> > > buffers are available. This sets the retry function as signal to\n> > > CIO2Device and IPU3Frame, and invokes it from\n> > > CIO2Device::tryReturnBuffer() and IPU3Frame::remove().\n> > >\n> > > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> > > ---\n> > >  src/libcamera/pipeline/ipu3/cio2.cpp   | 2 ++\n> > >  src/libcamera/pipeline/ipu3/cio2.h     | 2 ++\n> > >  src/libcamera/pipeline/ipu3/frames.cpp | 2 ++\n> > >  src/libcamera/pipeline/ipu3/frames.h   | 4 ++++\n> > >  src/libcamera/pipeline/ipu3/ipu3.cpp   | 4 ++++\n> > >  5 files changed, 14 insertions(+)\n> > >\n> > > diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp\n> > > index 8bbef174..1be2cbcd 100644\n> > > --- a/src/libcamera/pipeline/ipu3/cio2.cpp\n> > > +++ b/src/libcamera/pipeline/ipu3/cio2.cpp\n> > > @@ -302,6 +302,8 @@ void CIO2Device::tryReturnBuffer(FrameBuffer *buffer)\n> > >                       break;\n> > >               }\n> > >       }\n> > > +\n> > > +     bufferAvailable.emit();\n> > >  }\n> > >\n> > >  void CIO2Device::freeBuffers()\n> > > diff --git a/src/libcamera/pipeline/ipu3/cio2.h b/src/libcamera/pipeline/ipu3/cio2.h\n> > > index 5ecc4f47..d8d4a181 100644\n> > > --- a/src/libcamera/pipeline/ipu3/cio2.h\n> > > +++ b/src/libcamera/pipeline/ipu3/cio2.h\n> > > @@ -56,6 +56,8 @@ public:\n> > >       Signal<FrameBuffer *> &bufferReady() { return output_->bufferReady; }\n> > >       Signal<uint32_t> &frameStart() { return csi2_->frameStart; }\n> > >\n> > > +     Signal<> bufferAvailable;\n> > > +\n> > >  private:\n> > >       void freeBuffers();\n> > >\n> > > diff --git a/src/libcamera/pipeline/ipu3/frames.cpp b/src/libcamera/pipeline/ipu3/frames.cpp\n> > > index 29d9aafc..d9a2249b 100644\n> > > --- a/src/libcamera/pipeline/ipu3/frames.cpp\n> > > +++ b/src/libcamera/pipeline/ipu3/frames.cpp\n> > > @@ -103,6 +103,8 @@ bool IPU3Frames::tryComplete(IPU3Frames::Info *info)\n> > >\n> > >       remove(info);\n> > >\n> > > +     bufferAvailable.emit();\n> > > +\n> > >       return true;\n> > >  }\n> > >\n> > > diff --git a/src/libcamera/pipeline/ipu3/frames.h b/src/libcamera/pipeline/ipu3/frames.h\n> > > index 4acdf48e..59e64e81 100644\n> > > --- a/src/libcamera/pipeline/ipu3/frames.h\n> > > +++ b/src/libcamera/pipeline/ipu3/frames.h\n> > > @@ -12,6 +12,8 @@\n> > >  #include <queue>\n> > >  #include <vector>\n> > >\n> > > +#include <libcamera/signal.h>\n> > > +\n> > >  namespace libcamera {\n> > >\n> > >  class FrameBuffer;\n> > > @@ -49,6 +51,8 @@ public:\n> > >       Info *find(unsigned int id);\n> > >       Info *find(FrameBuffer *buffer);\n> > >\n> > > +     Signal<> bufferAvailable;\n> > > +\n> > >  private:\n> > >       std::queue<FrameBuffer *> availableParamBuffers_;\n> > >       std::queue<FrameBuffer *> availableStatBuffers_;\n> > > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > > index 6961d498..8ae47c6d 100644\n> > > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > > @@ -701,6 +701,8 @@ int PipelineHandlerIPU3::allocateBuffers(Camera *camera)\n> > >       data->ipa_->mapBuffers(ipaBuffers_);\n> > >\n> > >       data->frameInfos_.init(imgu->paramBuffers_, imgu->statBuffers_);\n> > > +     data->frameInfos_.bufferAvailable.connect(\n> > > +             data, &IPU3CameraData::queuePendingRequests);\n> > >\n> > >       return 0;\n> > >  }\n> > > @@ -1147,6 +1149,8 @@ int PipelineHandlerIPU3::registerCameras()\n> > >                */\n> > >               data->cio2_.bufferReady().connect(data.get(),\n> > >                                       &IPU3CameraData::cio2BufferReady);\n> > > +             data->cio2_.bufferAvailable.connect(\n> > > +                     data.get(), &IPU3CameraData::queuePendingRequests);\n> >\n> > Looks good\n> > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> >\n> > >               data->imgu_->input_->bufferReady.connect(&data->cio2_,\n> > >                                       &CIO2Device::tryReturnBuffer);\n> > >               data->imgu_->output_->bufferReady.connect(data.get(),","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 04902C3201\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 24 May 2021 02:59:54 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BAC146891B;\n\tMon, 24 May 2021 04:59:53 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8B168602AD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 24 May 2021 04:59:52 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 1255F476;\n\tMon, 24 May 2021 04:59:52 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"XX901kqN\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1621825192;\n\tbh=VYSGGMe0TjpewXbSba9i8s4PePF87nCW9pF4MsbLLWw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=XX901kqNK1TrvWn0p1XrcybYQfD6EUQxf6clj10gYcjnnFfPKWkw6BKdnKNeBVaCX\n\thZLNVqwEjbxphHb9Ks0Lm9CjskuI7AyhvE+bjyk73dwVdhcbKNjluPgZNc4fwSx2yE\n\tamv/eO4x5rSLwo9y8ywH7+02mnKBaanTMr7xMMuU=","Date":"Mon, 24 May 2021 05:59:48 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<YKsWpEymrUcht7VW@pendragon.ideasonboard.com>","References":"<20210513022946.2194341-1-hiroh@chromium.org>\n\t<20210513022946.2194341-2-hiroh@chromium.org>\n\t<20210513100142.qtu4bohieydfvmpz@uno.localdomain>\n\t<CAO5uPHMrF5EaW59F8QbBq+cfXom_-7E8Ywrpddrq32w2JRsMpg@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<CAO5uPHMrF5EaW59F8QbBq+cfXom_-7E8Ywrpddrq32w2JRsMpg@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH v5 2/2] libcamera: ipu3: Try queuing\n\tpending requests if a buffer is available","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":17165,"web_url":"https://patchwork.libcamera.org/comment/17165/","msgid":"<CAO5uPHOx+3M7bO0kv3hPuTbYpjOhLADnnASPXe1ZEkR-cf2TMw@mail.gmail.com>","date":"2021-05-24T04:45:59","subject":"Re: [libcamera-devel] [PATCH v5 2/2] libcamera: ipu3: Try queuing\n\tpending requests if a buffer is available","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Laurent,\n\nOn Mon, May 24, 2021 at 11:59 AM Laurent Pinchart <\nlaurent.pinchart@ideasonboard.com> wrote:\n\n> Hi Hiro,\n>\n> On Thu, May 20, 2021 at 06:02:05PM +0900, Hirokazu Honda wrote:\n> > Gentle ping for review, or would this patch series be merged?\n>\n> It all looks good. I've applied the series to my tree, it's undergoing\n> testing and I'll merge it shortly. Sorry for the delay.\n>\n>\nI got it. I saw they have been merged. Thanks for reviewing and applying.\n\n-Hiro\n\n\n> > On Thu, May 13, 2021 at 7:00 PM Jacopo Mondi wrote:\n> > > On Thu, May 13, 2021 at 11:29:46AM +0900, Hirokazu Honda wrote:\n> > > > IPU3CameraData stores requests that have been failed due to a\n> > > > buffer shortage. The requests should be retried once enough\n> > > > buffers are available. This sets the retry function as signal to\n> > > > CIO2Device and IPU3Frame, and invokes it from\n> > > > CIO2Device::tryReturnBuffer() and IPU3Frame::remove().\n> > > >\n> > > > Signed-off-by: Hirokazu Honda <hiroh@chromium.org>\n> > > > ---\n> > > >  src/libcamera/pipeline/ipu3/cio2.cpp   | 2 ++\n> > > >  src/libcamera/pipeline/ipu3/cio2.h     | 2 ++\n> > > >  src/libcamera/pipeline/ipu3/frames.cpp | 2 ++\n> > > >  src/libcamera/pipeline/ipu3/frames.h   | 4 ++++\n> > > >  src/libcamera/pipeline/ipu3/ipu3.cpp   | 4 ++++\n> > > >  5 files changed, 14 insertions(+)\n> > > >\n> > > > diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp\n> b/src/libcamera/pipeline/ipu3/cio2.cpp\n> > > > index 8bbef174..1be2cbcd 100644\n> > > > --- a/src/libcamera/pipeline/ipu3/cio2.cpp\n> > > > +++ b/src/libcamera/pipeline/ipu3/cio2.cpp\n> > > > @@ -302,6 +302,8 @@ void CIO2Device::tryReturnBuffer(FrameBuffer\n> *buffer)\n> > > >                       break;\n> > > >               }\n> > > >       }\n> > > > +\n> > > > +     bufferAvailable.emit();\n> > > >  }\n> > > >\n> > > >  void CIO2Device::freeBuffers()\n> > > > diff --git a/src/libcamera/pipeline/ipu3/cio2.h\n> b/src/libcamera/pipeline/ipu3/cio2.h\n> > > > index 5ecc4f47..d8d4a181 100644\n> > > > --- a/src/libcamera/pipeline/ipu3/cio2.h\n> > > > +++ b/src/libcamera/pipeline/ipu3/cio2.h\n> > > > @@ -56,6 +56,8 @@ public:\n> > > >       Signal<FrameBuffer *> &bufferReady() { return\n> output_->bufferReady; }\n> > > >       Signal<uint32_t> &frameStart() { return csi2_->frameStart; }\n> > > >\n> > > > +     Signal<> bufferAvailable;\n> > > > +\n> > > >  private:\n> > > >       void freeBuffers();\n> > > >\n> > > > diff --git a/src/libcamera/pipeline/ipu3/frames.cpp\n> b/src/libcamera/pipeline/ipu3/frames.cpp\n> > > > index 29d9aafc..d9a2249b 100644\n> > > > --- a/src/libcamera/pipeline/ipu3/frames.cpp\n> > > > +++ b/src/libcamera/pipeline/ipu3/frames.cpp\n> > > > @@ -103,6 +103,8 @@ bool IPU3Frames::tryComplete(IPU3Frames::Info\n> *info)\n> > > >\n> > > >       remove(info);\n> > > >\n> > > > +     bufferAvailable.emit();\n> > > > +\n> > > >       return true;\n> > > >  }\n> > > >\n> > > > diff --git a/src/libcamera/pipeline/ipu3/frames.h\n> b/src/libcamera/pipeline/ipu3/frames.h\n> > > > index 4acdf48e..59e64e81 100644\n> > > > --- a/src/libcamera/pipeline/ipu3/frames.h\n> > > > +++ b/src/libcamera/pipeline/ipu3/frames.h\n> > > > @@ -12,6 +12,8 @@\n> > > >  #include <queue>\n> > > >  #include <vector>\n> > > >\n> > > > +#include <libcamera/signal.h>\n> > > > +\n> > > >  namespace libcamera {\n> > > >\n> > > >  class FrameBuffer;\n> > > > @@ -49,6 +51,8 @@ public:\n> > > >       Info *find(unsigned int id);\n> > > >       Info *find(FrameBuffer *buffer);\n> > > >\n> > > > +     Signal<> bufferAvailable;\n> > > > +\n> > > >  private:\n> > > >       std::queue<FrameBuffer *> availableParamBuffers_;\n> > > >       std::queue<FrameBuffer *> availableStatBuffers_;\n> > > > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > > > index 6961d498..8ae47c6d 100644\n> > > > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > > > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > > > @@ -701,6 +701,8 @@ int PipelineHandlerIPU3::allocateBuffers(Camera\n> *camera)\n> > > >       data->ipa_->mapBuffers(ipaBuffers_);\n> > > >\n> > > >       data->frameInfos_.init(imgu->paramBuffers_,\n> imgu->statBuffers_);\n> > > > +     data->frameInfos_.bufferAvailable.connect(\n> > > > +             data, &IPU3CameraData::queuePendingRequests);\n> > > >\n> > > >       return 0;\n> > > >  }\n> > > > @@ -1147,6 +1149,8 @@ int PipelineHandlerIPU3::registerCameras()\n> > > >                */\n> > > >               data->cio2_.bufferReady().connect(data.get(),\n> > > >\n>  &IPU3CameraData::cio2BufferReady);\n> > > > +             data->cio2_.bufferAvailable.connect(\n> > > > +                     data.get(),\n> &IPU3CameraData::queuePendingRequests);\n> > >\n> > > Looks good\n> > > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> > >\n> > > >               data->imgu_->input_->bufferReady.connect(&data->cio2_,\n> > > >                                       &CIO2Device::tryReturnBuffer);\n> > > >               data->imgu_->output_->bufferReady.connect(data.get(),\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id EBB55C3201\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 24 May 2021 04:46:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 53A976891E;\n\tMon, 24 May 2021 06:46:12 +0200 (CEST)","from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com\n\t[IPv6:2a00:1450:4864:20::62a])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0E3AA602AD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 24 May 2021 06:46:11 +0200 (CEST)","by mail-ej1-x62a.google.com with SMTP id i7so21837339ejc.5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 23 May 2021 21:46:11 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"BvxuZn26\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=lA/5uaNpiKtfJqBl1kKTNOD2f9aqGyIKb5iBakb3X0U=;\n\tb=BvxuZn26nJOeLeqxq+vdyuNFQICMP/578ieQ9HKG/7wwYD2WagAC2Mqo62+nHV0EWz\n\t4A3DhQC0hxgrw5POXLL3ferQK7iRwm3hOpsQBr6xAfCPqw0ir9wkO2Tq8yk/ZhuNDKZL\n\twrYlcNmlq/N3hJPsUX7GpoHybHOk7asr8tpMI=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=lA/5uaNpiKtfJqBl1kKTNOD2f9aqGyIKb5iBakb3X0U=;\n\tb=n80qAo1mPYKd7sWwz13owEzbiwl8hiGd/zPGlwgEzWMKwtrJ3sST2Nmd0lBGJQCqgE\n\tEYK8RSnCY/6tAVAXDI19cW91Qp3Ke6sDHlkE3oBL4sEtOoLgPT532ZqT9OePp+sPfX/Q\n\t+N9+aKWQfJWEAor1OHYmEkn6APLDcFx4QlsADnYJNBu+luh1ZU4W51kT9wv2idChtlLo\n\t3kyTQcsFF0EMsN58qRl+EeESK9uDRX9ESk6NGtt0cNIqIYWmIBqpidYc7E07Gz+ZHnXq\n\tpK4s3jbGW1DN2cJzmwVaupAkxQXTs5/0wPsSuQyT9OLc2nOAvBjcu5ruDSLwL3jSusA1\n\twOQg==","X-Gm-Message-State":"AOAM531rztMWg5PcyNpDpZ4GrH7436eV1tVPMJ+r/LrV66PdFyG5o+uP\n\tFtGxxROomH6cU/Aji32X6aEjfWJRfZzeetV7FMmuo1CCnzI=","X-Google-Smtp-Source":"ABdhPJzo6nOexaxzi+fTJnBeF+1QjUI3TOAnsclGNo11Xxh2+VuhGi5TIHZF8nRNu6tAY5M27d0g+nzpEqYwG/uQGC8=","X-Received":"by 2002:a17:906:3a04:: with SMTP id\n\tz4mr21245960eje.221.1621831570662; \n\tSun, 23 May 2021 21:46:10 -0700 (PDT)","MIME-Version":"1.0","References":"<20210513022946.2194341-1-hiroh@chromium.org>\n\t<20210513022946.2194341-2-hiroh@chromium.org>\n\t<20210513100142.qtu4bohieydfvmpz@uno.localdomain>\n\t<CAO5uPHMrF5EaW59F8QbBq+cfXom_-7E8Ywrpddrq32w2JRsMpg@mail.gmail.com>\n\t<YKsWpEymrUcht7VW@pendragon.ideasonboard.com>","In-Reply-To":"<YKsWpEymrUcht7VW@pendragon.ideasonboard.com>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Mon, 24 May 2021 13:45:59 +0900","Message-ID":"<CAO5uPHOx+3M7bO0kv3hPuTbYpjOhLADnnASPXe1ZEkR-cf2TMw@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"000000000000a7b8d905c30c16fa\"","Subject":"Re: [libcamera-devel] [PATCH v5 2/2] libcamera: ipu3: Try queuing\n\tpending requests if a buffer is available","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]