summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ipa/ipu3/algorithms/tone_mapping.cpp5
-rw-r--r--src/ipa/ipu3/ipa_context.h1
-rw-r--r--src/ipa/ipu3/ipu3.cpp3
3 files changed, 9 insertions, 0 deletions
diff --git a/src/ipa/ipu3/algorithms/tone_mapping.cpp b/src/ipa/ipu3/algorithms/tone_mapping.cpp
index 3af96261..40337f9d 100644
--- a/src/ipa/ipu3/algorithms/tone_mapping.cpp
+++ b/src/ipa/ipu3/algorithms/tone_mapping.cpp
@@ -43,6 +43,9 @@ void ToneMapping::process([[maybe_unused]] IPAContext &context,
*/
gamma_ = 1.1;
+ if (context.frameContext.toneMapping.gamma == gamma_)
+ return;
+
struct ipu3_uapi_gamma_corr_lut &lut =
context.frameContext.toneMapping.gammaCorrection;
@@ -53,6 +56,8 @@ void ToneMapping::process([[maybe_unused]] IPAContext &context,
/* The output value is expressed on 13 bits. */
lut.lut[i] = gamma * 8191;
}
+
+ context.frameContext.toneMapping.gamma = gamma_;
}
} /* namespace ipa::ipu3::algorithms */
diff --git a/src/ipa/ipu3/ipa_context.h b/src/ipa/ipu3/ipa_context.h
index 847c03fe..e14bb561 100644
--- a/src/ipa/ipu3/ipa_context.h
+++ b/src/ipa/ipu3/ipa_context.h
@@ -48,6 +48,7 @@ struct IPAFrameContext {
} awb;
struct {
+ double gamma;
struct ipu3_uapi_gamma_corr_lut gammaCorrection;
} toneMapping;
};
diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
index bcaa34da..4c0fff00 100644
--- a/src/ipa/ipu3/ipu3.cpp
+++ b/src/ipa/ipu3/ipu3.cpp
@@ -151,6 +151,9 @@
* \struct IPAFrameContext::toneMapping
* \brief Context for ToneMapping and Gamma control
*
+ * \var IPAFrameContext::toneMapping::gamma
+ * \brief Gamma value for the LUT
+ *
* \var IPAFrameContext::toneMapping::gammaCorrection
* \brief Per-pixel tone mapping implemented as a LUT
*