[libcamera-devel] [PATCH] ipa: ipu3: Correct context during configure()
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri Sep 30 22:27:00 CEST 2022
Hi Kieran,
Thank you for the patch.
On Fri, Sep 30, 2022 at 08:08:21PM +0100, Kieran Bingham via libcamera-devel wrote:
> The introduction of the FCQueue in the IPU3 inadvertently introduced a
> bug which cleared the initialisation of the session configuration
> immediately after some parameters had been set.
>
> Furthermore, it cleared and never re-initialised the sensor line
> duration property, which was previously only set during the call to
> init().
>
> Move the clearing of the contexts from the updateSessionConfiguration()
> call to the earliest opportunity in configure(), and immediately
> re-initialise the sensor parameters.
>
> Bug: https://bugs.libcamera.org/show_bug.cgi?id=151
> Fixes: 85c5c47325ab ("ipa: ipu3: Use the FCQueue")
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/ipa/ipu3/ipu3.cpp | 13 ++++++++-----
> 1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
> index d1ea081d595d..7fb62c749fde 100644
> --- a/src/ipa/ipu3/ipu3.cpp
> +++ b/src/ipa/ipu3/ipu3.cpp
> @@ -217,11 +217,6 @@ void IPAIPU3::updateSessionConfiguration(const ControlInfoMap &sensorControls)
> int32_t minGain = v4l2Gain.min().get<int32_t>();
> int32_t maxGain = v4l2Gain.max().get<int32_t>();
>
> - /* Clear the IPA context before the streaming session. */
> - context_.configuration = {};
> - context_.activeState = {};
> - context_.frameContexts.clear();
> -
> /*
> * When the AGC computes the new exposure values for a frame, it needs
> * to know the limits for shutter speed and analogue gain.
> @@ -498,6 +493,14 @@ int IPAIPU3::configure(const IPAConfigInfo &configInfo,
>
> lensCtrls_ = configInfo.lensControls;
>
> + /* Clear the IPA context for the new streaming session. */
> + context_.activeState = {};
> + context_.configuration = {};
> + context_.frameContexts.clear();
> +
> + /* Intialise the sensor configuration */
> + context_.configuration.sensor.lineDuration = sensorInfo_.lineLength * 1.0s / sensorInfo_.pixelRate;
This could be dropped from init(), but that can be done in a different
patch, we should revisit the init()/configure() split in the IPU3 IPA
module implementation.
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> +
> /*
> * Compute the sensor V4L2 controls to be used by the algorithms and
> * to be set on the sensor.
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list