[{"id":28651,"web_url":"https://patchwork.libcamera.org/comment/28651/","msgid":"<6gfzwxarzw7y6vvgg6dbc3jn6u7vhaqijphqqd4kw2u5m2cile@nfwds7dtmb5k>","date":"2024-02-13T11:10:37","subject":"Re: [PATCH 1/5] libcamera: rkisp1: Make tryCompleteRequest() params\n\tagnostic","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"content":"Hi Dan\n\nOn Mon, Feb 12, 2024 at 03:35:28PM +0000, Daniel Scally wrote:\n> tryCompleteRequest() doesn't actually need to know the status of the\n> parameters buffer to decide whether it's ok to complete the Request\n> or not - remove the check. Since setting the paramsDequeued flag is\n> all that the paramsReady slot actually does, that can be removed too.\n\nWhen PipelineHandlerRkISP1::tryCompleteRequest() is called\nsuccesfully, it destroies the RkISP1Frames associated with the\ncompleted request.\n\nint RkISP1Frames::destroy(unsigned int frame)\n{\n\tRkISP1FrameInfo *info = find(frame);\n\tif (!info)\n\t\treturn -ENOENT;\n\n\tpipe_->availableParamBuffers_.push(info->paramBuffer);\n\tpipe_->availableStatBuffers_.push(info->statBuffer);\n\n\tframeInfo_.erase(info->frame);\n\n\tdelete info;\n\n\treturn 0;\n}\n\n\nThis\n\tpipe_->availableParamBuffers_.push(info->paramBuffer);\n\nreturns the parameter buffer to the list of available ones, but to do\nso, shouldn't we make sure it has been de-queued from the video output\ndevice first ?\n\n>\n> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n> ---\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 20 --------------------\n>  1 file changed, 20 deletions(-)\n>\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 586b46d6..5460dc11 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -60,7 +60,6 @@ struct RkISP1FrameInfo {\n>  \tFrameBuffer *mainPathBuffer;\n>  \tFrameBuffer *selfPathBuffer;\n>\n> -\tbool paramDequeued;\n>  \tbool metadataProcessed;\n>  };\n>\n> @@ -177,7 +176,6 @@ private:\n>  \tint createCamera(MediaEntity *sensor);\n>  \tvoid tryCompleteRequest(RkISP1FrameInfo *info);\n>  \tvoid bufferReady(FrameBuffer *buffer);\n> -\tvoid paramReady(FrameBuffer *buffer);\n>  \tvoid statReady(FrameBuffer *buffer);\n>  \tvoid frameStart(uint32_t sequence);\n>\n> @@ -248,7 +246,6 @@ RkISP1FrameInfo *RkISP1Frames::create(const RkISP1CameraData *data, Request *req\n>  \tinfo->mainPathBuffer = mainPathBuffer;\n>  \tinfo->selfPathBuffer = selfPathBuffer;\n>  \tinfo->statBuffer = statBuffer;\n> -\tinfo->paramDequeued = false;\n>  \tinfo->metadataProcessed = false;\n>\n>  \tframeInfo_[frame] = info;\n> @@ -1213,7 +1210,6 @@ bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator)\n>  \tif (hasSelfPath_)\n>  \t\tselfPath_.bufferReady().connect(this, &PipelineHandlerRkISP1::bufferReady);\n>  \tstat_->bufferReady.connect(this, &PipelineHandlerRkISP1::statReady);\n> -\tparam_->bufferReady.connect(this, &PipelineHandlerRkISP1::paramReady);\n>\n>  \t/*\n>  \t * Enumerate all sensors connected to the ISP and create one\n> @@ -1243,9 +1239,6 @@ void PipelineHandlerRkISP1::tryCompleteRequest(RkISP1FrameInfo *info)\n>  \tif (!info->metadataProcessed)\n>  \t\treturn;\n>\n> -\tif (!isRaw_ && !info->paramDequeued)\n> -\t\treturn;\n> -\n>  \tdata->frameInfo_.destroy(info->frame);\n>\n>  \tcompleteRequest(request);\n> @@ -1287,19 +1280,6 @@ void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer)\n>  \ttryCompleteRequest(info);\n>  }\n>\n> -void PipelineHandlerRkISP1::paramReady(FrameBuffer *buffer)\n> -{\n> -\tASSERT(activeCamera_);\n> -\tRkISP1CameraData *data = cameraData(activeCamera_);\n> -\n> -\tRkISP1FrameInfo *info = data->frameInfo_.find(buffer);\n> -\tif (!info)\n> -\t\treturn;\n> -\n> -\tinfo->paramDequeued = true;\n> -\ttryCompleteRequest(info);\n> -}\n> -\n>  void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n>  {\n>  \tASSERT(activeCamera_);\n> --\n> 2.34.1\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 38E83C3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 13 Feb 2024 11:10:43 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 57ACC62805;\n\tTue, 13 Feb 2024 12:10:42 +0100 (CET)","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 8C14A61CB8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 13 Feb 2024 12:10:40 +0100 (CET)","from ideasonboard.com (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 1C9D583F;\n\tTue, 13 Feb 2024 12:10:38 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"mDjKWdrR\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1707822638;\n\tbh=soTEkJJXK55D5imjPI/hNOEjSYokECoPkf2BSGyq1AI=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=mDjKWdrRycitwKL0Dse1C3PK5L3jMq4s2m6iDp+GUVZYNgGArfRa1idrQtQCUoM/M\n\tpp13YU+ZEsVGoOZWaKmVK7gk3ZuKWhxk4jP/k4OkYJ1sA4qX80SlvG9IDfjcr8RXuN\n\tVQhi76JKj2efwGywqi0wmaEI+76Q4G2SxUs/IbjE=","Date":"Tue, 13 Feb 2024 12:10:37 +0100","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"Daniel Scally <dan.scally@ideasonboard.com>","Subject":"Re: [PATCH 1/5] libcamera: rkisp1: Make tryCompleteRequest() params\n\tagnostic","Message-ID":"<6gfzwxarzw7y6vvgg6dbc3jn6u7vhaqijphqqd4kw2u5m2cile@nfwds7dtmb5k>","References":"<20240212153532.179283-1-dan.scally@ideasonboard.com>\n\t<20240212153532.179283-2-dan.scally@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20240212153532.179283-2-dan.scally@ideasonboard.com>","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":28657,"web_url":"https://patchwork.libcamera.org/comment/28657/","msgid":"<170783081097.2629073.13922896725030551544@ping.linuxembedded.co.uk>","date":"2024-02-13T13:26:50","subject":"Re: [PATCH 1/5] libcamera: rkisp1: Make tryCompleteRequest() params\n\tagnostic","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Jacopo Mondi (2024-02-13 11:10:37)\n> Hi Dan\n> \n> On Mon, Feb 12, 2024 at 03:35:28PM +0000, Daniel Scally wrote:\n> > tryCompleteRequest() doesn't actually need to know the status of the\n> > parameters buffer to decide whether it's ok to complete the Request\n> > or not - remove the check. Since setting the paramsDequeued flag is\n> > all that the paramsReady slot actually does, that can be removed too.\n> \n> When PipelineHandlerRkISP1::tryCompleteRequest() is called\n> succesfully, it destroies the RkISP1Frames associated with the\n> completed request.\n> \n> int RkISP1Frames::destroy(unsigned int frame)\n> {\n>         RkISP1FrameInfo *info = find(frame);\n>         if (!info)\n>                 return -ENOENT;\n> \n>         pipe_->availableParamBuffers_.push(info->paramBuffer);\n>         pipe_->availableStatBuffers_.push(info->statBuffer);\n> \n>         frameInfo_.erase(info->frame);\n> \n>         delete info;\n> \n>         return 0;\n> }\n> \n> \n> This\n>         pipe_->availableParamBuffers_.push(info->paramBuffer);\n> \n> returns the parameter buffer to the list of available ones, but to do\n> so, shouldn't we make sure it has been de-queued from the video output\n> device first ?\n\nThat's probably something that should happen in the param buffer ready\nslot...\n\n> \n> >\n> > Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n> > ---\n> >  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 20 --------------------\n> >  1 file changed, 20 deletions(-)\n> >\n> > diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > index 586b46d6..5460dc11 100644\n> > --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > @@ -60,7 +60,6 @@ struct RkISP1FrameInfo {\n> >       FrameBuffer *mainPathBuffer;\n> >       FrameBuffer *selfPathBuffer;\n> >\n> > -     bool paramDequeued;\n> >       bool metadataProcessed;\n> >  };\n> >\n> > @@ -177,7 +176,6 @@ private:\n> >       int createCamera(MediaEntity *sensor);\n> >       void tryCompleteRequest(RkISP1FrameInfo *info);\n> >       void bufferReady(FrameBuffer *buffer);\n> > -     void paramReady(FrameBuffer *buffer);\n> >       void statReady(FrameBuffer *buffer);\n> >       void frameStart(uint32_t sequence);\n> >\n> > @@ -248,7 +246,6 @@ RkISP1FrameInfo *RkISP1Frames::create(const RkISP1CameraData *data, Request *req\n> >       info->mainPathBuffer = mainPathBuffer;\n> >       info->selfPathBuffer = selfPathBuffer;\n> >       info->statBuffer = statBuffer;\n> > -     info->paramDequeued = false;\n> >       info->metadataProcessed = false;\n> >\n> >       frameInfo_[frame] = info;\n> > @@ -1213,7 +1210,6 @@ bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator)\n> >       if (hasSelfPath_)\n> >               selfPath_.bufferReady().connect(this, &PipelineHandlerRkISP1::bufferReady);\n> >       stat_->bufferReady.connect(this, &PipelineHandlerRkISP1::statReady);\n> > -     param_->bufferReady.connect(this, &PipelineHandlerRkISP1::paramReady);\n> >\n> >       /*\n> >        * Enumerate all sensors connected to the ISP and create one\n> > @@ -1243,9 +1239,6 @@ void PipelineHandlerRkISP1::tryCompleteRequest(RkISP1FrameInfo *info)\n> >       if (!info->metadataProcessed)\n> >               return;\n> >\n> > -     if (!isRaw_ && !info->paramDequeued)\n> > -             return;\n> > -\n> >       data->frameInfo_.destroy(info->frame);\n> >\n> >       completeRequest(request);\n> > @@ -1287,19 +1280,6 @@ void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer)\n> >       tryCompleteRequest(info);\n> >  }\n> >\n> > -void PipelineHandlerRkISP1::paramReady(FrameBuffer *buffer)\n> > -{\n> > -     ASSERT(activeCamera_);\n> > -     RkISP1CameraData *data = cameraData(activeCamera_);\n> > -\n> > -     RkISP1FrameInfo *info = data->frameInfo_.find(buffer);\n> > -     if (!info)\n> > -             return;\n> > -\n> > -     info->paramDequeued = true;\n> > -     tryCompleteRequest(info);\n\nI agree that this doesn't need to be so closely associated with the\nrequest, but we should track that now the paramBuffer is 'free' and\nready to be reused, so I'd at least expect that in here we add it to a\nfree-list, which is then consumed when asking the IPA to populate the\nnext param buffer.\n\n\n> > -}\n> > -\n> >  void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n> >  {\n> >       ASSERT(activeCamera_);\n> > --\n> > 2.34.1\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 49C7FBDE17\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 13 Feb 2024 13:26:55 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8B4B362806;\n\tTue, 13 Feb 2024 14:26:54 +0100 (CET)","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 BF48D61CB8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 13 Feb 2024 14:26:53 +0100 (CET)","from pendragon.ideasonboard.com\n\t(aztw-30-b2-v4wan-166917-cust845.vm26.cable.virginm.net\n\t[82.37.23.78])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 5FFEE83F;\n\tTue, 13 Feb 2024 14:26:51 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"JGRMq2IX\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1707830811;\n\tbh=/BnM88OG8swA9wmThtdc+meOJGnkeB3rXF8Wn/XavLs=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=JGRMq2IX+zqvhqmr5cFhOyOplXWIZ68YKDMoqNGUXiTjJ+6izYV5PzblovA8i99Uo\n\t4ZKWqu1eNbhth2Uc9UXe2SWiFVrtvF9w6/1cEVQZYbDu6ogU9fuyeDawB7OvHhs0oj\n\ti18aglc+5cz5uYp3qgIoipAa7pIWTK2TfIvcIBpo=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<6gfzwxarzw7y6vvgg6dbc3jn6u7vhaqijphqqd4kw2u5m2cile@nfwds7dtmb5k>","References":"<20240212153532.179283-1-dan.scally@ideasonboard.com>\n\t<20240212153532.179283-2-dan.scally@ideasonboard.com>\n\t<6gfzwxarzw7y6vvgg6dbc3jn6u7vhaqijphqqd4kw2u5m2cile@nfwds7dtmb5k>","Subject":"Re: [PATCH 1/5] libcamera: rkisp1: Make tryCompleteRequest() params\n\tagnostic","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"Daniel Scally <dan.scally@ideasonboard.com>,\n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>","Date":"Tue, 13 Feb 2024 13:26:50 +0000","Message-ID":"<170783081097.2629073.13922896725030551544@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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":28670,"web_url":"https://patchwork.libcamera.org/comment/28670/","msgid":"<1d4fe2db-1c2d-49ff-9d77-d2d0d358e800@ideasonboard.com>","date":"2024-02-15T12:51:32","subject":"Re: [PATCH 1/5] libcamera: rkisp1: Make tryCompleteRequest() params\n\tagnostic","submitter":{"id":156,"url":"https://patchwork.libcamera.org/api/people/156/","name":"Dan Scally","email":"dan.scally@ideasonboard.com"},"content":"Hi Kieran, Jacopo\n\nOn 13/02/2024 13:26, Kieran Bingham wrote:\n> Quoting Jacopo Mondi (2024-02-13 11:10:37)\n>> Hi Dan\n>>\n>> On Mon, Feb 12, 2024 at 03:35:28PM +0000, Daniel Scally wrote:\n>>> tryCompleteRequest() doesn't actually need to know the status of the\n>>> parameters buffer to decide whether it's ok to complete the Request\n>>> or not - remove the check. Since setting the paramsDequeued flag is\n>>> all that the paramsReady slot actually does, that can be removed too.\n>> When PipelineHandlerRkISP1::tryCompleteRequest() is called\n>> succesfully, it destroies the RkISP1Frames associated with the\n>> completed request.\n>>\n>> int RkISP1Frames::destroy(unsigned int frame)\n>> {\n>>          RkISP1FrameInfo *info = find(frame);\n>>          if (!info)\n>>                  return -ENOENT;\n>>\n>>          pipe_->availableParamBuffers_.push(info->paramBuffer);\n>>          pipe_->availableStatBuffers_.push(info->statBuffer);\n>>\n>>          frameInfo_.erase(info->frame);\n>>\n>>          delete info;\n>>\n>>          return 0;\n>> }\n>>\n>>\n>> This\n>>          pipe_->availableParamBuffers_.push(info->paramBuffer);\n>>\n>> returns the parameter buffer to the list of available ones, but to do\n>> so, shouldn't we make sure it has been de-queued from the video output\n>> device first ?\n> That's probably something that should happen in the param buffer ready\n> slot...\n>\n>>> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n>>> ---\n>>>   src/libcamera/pipeline/rkisp1/rkisp1.cpp | 20 --------------------\n>>>   1 file changed, 20 deletions(-)\n>>>\n>>> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>>> index 586b46d6..5460dc11 100644\n>>> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>>> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n>>> @@ -60,7 +60,6 @@ struct RkISP1FrameInfo {\n>>>        FrameBuffer *mainPathBuffer;\n>>>        FrameBuffer *selfPathBuffer;\n>>>\n>>> -     bool paramDequeued;\n>>>        bool metadataProcessed;\n>>>   };\n>>>\n>>> @@ -177,7 +176,6 @@ private:\n>>>        int createCamera(MediaEntity *sensor);\n>>>        void tryCompleteRequest(RkISP1FrameInfo *info);\n>>>        void bufferReady(FrameBuffer *buffer);\n>>> -     void paramReady(FrameBuffer *buffer);\n>>>        void statReady(FrameBuffer *buffer);\n>>>        void frameStart(uint32_t sequence);\n>>>\n>>> @@ -248,7 +246,6 @@ RkISP1FrameInfo *RkISP1Frames::create(const RkISP1CameraData *data, Request *req\n>>>        info->mainPathBuffer = mainPathBuffer;\n>>>        info->selfPathBuffer = selfPathBuffer;\n>>>        info->statBuffer = statBuffer;\n>>> -     info->paramDequeued = false;\n>>>        info->metadataProcessed = false;\n>>>\n>>>        frameInfo_[frame] = info;\n>>> @@ -1213,7 +1210,6 @@ bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator)\n>>>        if (hasSelfPath_)\n>>>                selfPath_.bufferReady().connect(this, &PipelineHandlerRkISP1::bufferReady);\n>>>        stat_->bufferReady.connect(this, &PipelineHandlerRkISP1::statReady);\n>>> -     param_->bufferReady.connect(this, &PipelineHandlerRkISP1::paramReady);\n>>>\n>>>        /*\n>>>         * Enumerate all sensors connected to the ISP and create one\n>>> @@ -1243,9 +1239,6 @@ void PipelineHandlerRkISP1::tryCompleteRequest(RkISP1FrameInfo *info)\n>>>        if (!info->metadataProcessed)\n>>>                return;\n>>>\n>>> -     if (!isRaw_ && !info->paramDequeued)\n>>> -             return;\n>>> -\n>>>        data->frameInfo_.destroy(info->frame);\n>>>\n>>>        completeRequest(request);\n>>> @@ -1287,19 +1280,6 @@ void PipelineHandlerRkISP1::bufferReady(FrameBuffer *buffer)\n>>>        tryCompleteRequest(info);\n>>>   }\n>>>\n>>> -void PipelineHandlerRkISP1::paramReady(FrameBuffer *buffer)\n>>> -{\n>>> -     ASSERT(activeCamera_);\n>>> -     RkISP1CameraData *data = cameraData(activeCamera_);\n>>> -\n>>> -     RkISP1FrameInfo *info = data->frameInfo_.find(buffer);\n>>> -     if (!info)\n>>> -             return;\n>>> -\n>>> -     info->paramDequeued = true;\n>>> -     tryCompleteRequest(info);\n> I agree that this doesn't need to be so closely associated with the\n> request, but we should track that now the paramBuffer is 'free' and\n> ready to be reused, so I'd at least expect that in here we add it to a\n> free-list, which is then consumed when asking the IPA to populate the\n> next param buffer.\n\n\nYeah this was really stupid...it of course needs to be returned to the availableParamBuffers_ list \nhere and that's how it was working until about 20 minutes before posting the series, but when I was \nrebased to tidy up this patch I thought \"Why do we even need this\" and deleted it - so that was dumb \nand I obviously didn't test it properly after that rebase.\n\n>\n>>> -}\n>>> -\n>>>   void PipelineHandlerRkISP1::statReady(FrameBuffer *buffer)\n>>>   {\n>>>        ASSERT(activeCamera_);\n>>> --\n>>> 2.34.1\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 9CFE0C3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 15 Feb 2024 12:51:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F126662805;\n\tThu, 15 Feb 2024 13:51:36 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3C44861CB0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Feb 2024 13:51:35 +0100 (CET)","from [192.168.0.43]\n\t(cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net [86.13.91.161])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CCFA5105D;\n\tThu, 15 Feb 2024 13:51:30 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"S8ke3PrO\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1708001490;\n\tbh=CGuE/qOgwTfOPdSTYOIq2KnqIBJFey4icF1mufAVCkw=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=S8ke3PrOg4f4TDMYDuCGHpU0fM/6HZZGR9KBirTaPIAjUI2BMllOz2IKsDOWQEgps\n\tkvf19mnK0lpIRiWMpaLLaJCwyc/RKwGuIrhiclmCKXp8gcj5hmirD5gninz2nFeNHP\n\trhofWDPN+BiWiF8R3LiGBX7ZkUdcv8S2kWDQUGR8=","Message-ID":"<1d4fe2db-1c2d-49ff-9d77-d2d0d358e800@ideasonboard.com>","Date":"Thu, 15 Feb 2024 12:51:32 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/5] libcamera: rkisp1: Make tryCompleteRequest() params\n\tagnostic","Content-Language":"en-US","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>","References":"<20240212153532.179283-1-dan.scally@ideasonboard.com>\n\t<20240212153532.179283-2-dan.scally@ideasonboard.com>\n\t<6gfzwxarzw7y6vvgg6dbc3jn6u7vhaqijphqqd4kw2u5m2cile@nfwds7dtmb5k>\n\t<170783081097.2629073.13922896725030551544@ping.linuxembedded.co.uk>","From":"Dan Scally <dan.scally@ideasonboard.com>","Autocrypt":"addr=dan.scally@ideasonboard.com; keydata=\n\t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","In-Reply-To":"<170783081097.2629073.13922896725030551544@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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>"}}]