Message ID | 20251003121821.659081-3-naush@raspberrypi.com |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
Hi Naush Thanks for the patch. On Fri, 3 Oct 2025 at 13:18, Naushir Patuck <naush@raspberrypi.com> wrote: > > Don't let applyDecompand() directly change the FE global enables. > Instead pass the global mask into the function and set it in the caller. > This will be needed when a future commit will add setting the decompand > initial values. > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com> > Tested-by: Nick Hollinghurst <nick.hollinghurst@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Thanks! David > --- > src/ipa/rpi/pisp/pisp.cpp | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/src/ipa/rpi/pisp/pisp.cpp b/src/ipa/rpi/pisp/pisp.cpp > index 14ece12b0895..f5be39aca5ee 100644 > --- a/src/ipa/rpi/pisp/pisp.cpp > +++ b/src/ipa/rpi/pisp/pisp.cpp > @@ -256,7 +256,7 @@ private: > void applyLensShading(const AlscStatus *alscStatus, > pisp_be_global_config &global); > void applyDPC(const DpcStatus *dpcStatus, pisp_be_global_config &global); > - void applyDecompand(const DecompandStatus *decompandStatus); > + void applyDecompand(const DecompandStatus *decompandStatus, pisp_fe_global_config &feGlobal); > void applySdn(const SdnStatus *sdnStatus, pisp_be_global_config &global); > void applyTdn(const TdnStatus *tdnStatus, const DeviceStatus *deviceStatus, > pisp_be_global_config &global); > @@ -368,6 +368,9 @@ void IpaPiSP::platformPrepareIsp([[maybe_unused]] const PrepareParams ¶ms, > { > /* All Frontend config goes first, we do not want to hold the FE lock for long! */ > std::scoped_lock<FrontEnd> lf(*fe_); > + pisp_fe_global_config feGlobal; > + > + fe_->GetGlobal(feGlobal); > > if (noiseStatus) > applyFocusStats(noiseStatus); > @@ -375,13 +378,14 @@ void IpaPiSP::platformPrepareIsp([[maybe_unused]] const PrepareParams ¶ms, > DecompandStatus *decompandStatus = > rpiMetadata.getLocked<DecompandStatus>("decompand.status"); > if (decompandStatus) > - applyDecompand(decompandStatus); > + applyDecompand(decompandStatus, feGlobal); > > BlackLevelStatus *blackLevelStatus = > rpiMetadata.getLocked<BlackLevelStatus>("black_level.status"); > if (blackLevelStatus) > applyBlackLevel(blackLevelStatus, global); > > + fe_->SetGlobal(feGlobal); > } > > CacStatus *cacStatus = rpiMetadata.getLocked<CacStatus>("cac.status"); > @@ -728,16 +732,15 @@ void IpaPiSP::applyDPC(const DpcStatus *dpcStatus, pisp_be_global_config &global > be_->SetDpc(dpc); > } > > -void IpaPiSP::applyDecompand(const DecompandStatus *decompandStatus) > +void IpaPiSP::applyDecompand(const DecompandStatus *decompandStatus, pisp_fe_global_config &feGlobal) > { > - pisp_fe_global_config feGlobal; > pisp_fe_decompand_config decompand = {}; > > if (!generateDecompandLut(decompandStatus->decompandCurve, decompand.lut)) { > fe_->SetDecompand(decompand); > feGlobal.enables |= PISP_FE_ENABLE_DECOMPAND; > - fe_->SetGlobal(feGlobal); > - } > + } else > + feGlobal.enables &= ~PISP_FE_ENABLE_DECOMPAND; > } > > void IpaPiSP::applySdn(const SdnStatus *sdnStatus, pisp_be_global_config &global) > -- > 2.43.0 >
diff --git a/src/ipa/rpi/pisp/pisp.cpp b/src/ipa/rpi/pisp/pisp.cpp index 14ece12b0895..f5be39aca5ee 100644 --- a/src/ipa/rpi/pisp/pisp.cpp +++ b/src/ipa/rpi/pisp/pisp.cpp @@ -256,7 +256,7 @@ private: void applyLensShading(const AlscStatus *alscStatus, pisp_be_global_config &global); void applyDPC(const DpcStatus *dpcStatus, pisp_be_global_config &global); - void applyDecompand(const DecompandStatus *decompandStatus); + void applyDecompand(const DecompandStatus *decompandStatus, pisp_fe_global_config &feGlobal); void applySdn(const SdnStatus *sdnStatus, pisp_be_global_config &global); void applyTdn(const TdnStatus *tdnStatus, const DeviceStatus *deviceStatus, pisp_be_global_config &global); @@ -368,6 +368,9 @@ void IpaPiSP::platformPrepareIsp([[maybe_unused]] const PrepareParams ¶ms, { /* All Frontend config goes first, we do not want to hold the FE lock for long! */ std::scoped_lock<FrontEnd> lf(*fe_); + pisp_fe_global_config feGlobal; + + fe_->GetGlobal(feGlobal); if (noiseStatus) applyFocusStats(noiseStatus); @@ -375,13 +378,14 @@ void IpaPiSP::platformPrepareIsp([[maybe_unused]] const PrepareParams ¶ms, DecompandStatus *decompandStatus = rpiMetadata.getLocked<DecompandStatus>("decompand.status"); if (decompandStatus) - applyDecompand(decompandStatus); + applyDecompand(decompandStatus, feGlobal); BlackLevelStatus *blackLevelStatus = rpiMetadata.getLocked<BlackLevelStatus>("black_level.status"); if (blackLevelStatus) applyBlackLevel(blackLevelStatus, global); + fe_->SetGlobal(feGlobal); } CacStatus *cacStatus = rpiMetadata.getLocked<CacStatus>("cac.status"); @@ -728,16 +732,15 @@ void IpaPiSP::applyDPC(const DpcStatus *dpcStatus, pisp_be_global_config &global be_->SetDpc(dpc); } -void IpaPiSP::applyDecompand(const DecompandStatus *decompandStatus) +void IpaPiSP::applyDecompand(const DecompandStatus *decompandStatus, pisp_fe_global_config &feGlobal) { - pisp_fe_global_config feGlobal; pisp_fe_decompand_config decompand = {}; if (!generateDecompandLut(decompandStatus->decompandCurve, decompand.lut)) { fe_->SetDecompand(decompand); feGlobal.enables |= PISP_FE_ENABLE_DECOMPAND; - fe_->SetGlobal(feGlobal); - } + } else + feGlobal.enables &= ~PISP_FE_ENABLE_DECOMPAND; } void IpaPiSP::applySdn(const SdnStatus *sdnStatus, pisp_be_global_config &global)