summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Derek Sollenberger <djsollen@google.com> 2021-06-23 12:49:23 -0400
committer Derek Sollenberger <djsollen@google.com> 2021-06-30 14:24:12 -0400
commit98fedd59ed588b5b833ff5f9f9c137b0d3ab6ebb (patch)
treebf4b3b8ef4d6b6c0247673b7bec80544de24ea9d
parent076276f7b8b5e0501a9f96e564d655020128dc31 (diff)
Don't attempt to tone map content that is already in range.
For content where the luminance values are able to be represented by the destination we do not need to further reduce the luminance of those values. This CL also removes the clamp that enforces the actual luminance values of the content don't exceed those defined in the metadata. This fixes issues where the content and metadata don't match by favoring the content value over the metadata. Test: test app provided with the bug Bug: 188531000 Change-Id: I12a65187d60c75167e1b1244e42b50ef3bb51bcd
-rw-r--r--libs/renderengine/skia/filters/LinearEffect.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/libs/renderengine/skia/filters/LinearEffect.cpp b/libs/renderengine/skia/filters/LinearEffect.cpp
index 9b044e1685..fc45af945b 100644
--- a/libs/renderengine/skia/filters/LinearEffect.cpp
+++ b/libs/renderengine/skia/filters/LinearEffect.cpp
@@ -167,13 +167,12 @@ static void generateToneMapInterpolation(ui::Dataspace inputDataspace,
float nits = xyz.y;
- // clamp to max input luminance
- nits = clamp(nits, 0.0, maxInLumi);
-
- // scale [0.0, maxInLumi] to [0.0, maxOutLumi]
+ // if the max input luminance is less than what we can output then
+ // no tone mapping is needed as all color values will be in range.
if (maxInLumi <= maxOutLumi) {
- return xyz * (maxOutLumi / maxInLumi);
+ return xyz;
} else {
+
// three control points
const float x0 = 10.0;
const float y0 = 17.0;