summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-06-15 23:17:11 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-06-15 23:17:11 +0000
commitacaf4e606ff35cc6bcc99c1bb54699f1c456edf5 (patch)
tree77c951d84a9ada8eb34908dbf444638af10a65ac
parent79c8693b61da4934dbf7cb45e3c9872b717ed62e (diff)
parentc83558cf2dc974bdbc42901ef291b68ebe8cacfe (diff)
downloadnative-acaf4e606ff35cc6bcc99c1bb54699f1c456edf5.tar.gz
Snap for 10331563 from c83558cf2dc974bdbc42901ef291b68ebe8cacfe to udc-release
Change-Id: Id6244fcf1baebf6521d712456709d6cdbf03e554
-rw-r--r--libs/renderengine/skia/SkiaRenderEngine.cpp4
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp7
2 files changed, 10 insertions, 1 deletions
diff --git a/libs/renderengine/skia/SkiaRenderEngine.cpp b/libs/renderengine/skia/SkiaRenderEngine.cpp
index 5854135afe..fda6ea189e 100644
--- a/libs/renderengine/skia/SkiaRenderEngine.cpp
+++ b/libs/renderengine/skia/SkiaRenderEngine.cpp
@@ -86,6 +86,7 @@ namespace {
// Debugging settings
static const bool kPrintLayerSettings = false;
static const bool kFlushAfterEveryLayer = kPrintLayerSettings;
+static constexpr bool kEnableLayerBrightening = true;
} // namespace
@@ -699,7 +700,8 @@ void SkiaRenderEngine::drawLayersInternal(
// ...and compute the dimming ratio if dimming is requested
const float displayDimmingRatio = display.targetLuminanceNits > 0.f &&
- maxLayerWhitePoint > 0.f && display.targetLuminanceNits > maxLayerWhitePoint
+ maxLayerWhitePoint > 0.f &&
+ (kEnableLayerBrightening || display.targetLuminanceNits > maxLayerWhitePoint)
? maxLayerWhitePoint / display.targetLuminanceNits
: 1.f;
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 79378befcc..fe2db940f7 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -7419,6 +7419,13 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
renderArea->getHintForSeamlessTransition());
sdrWhitePointNits = state.sdrWhitePointNits;
displayBrightnessNits = state.displayBrightnessNits;
+ if (sdrWhitePointNits > 1.0f) {
+ // Restrict the amount of HDR "headroom" in the screenshot to avoid over-dimming
+ // the SDR portion. 2.0 chosen by experimentation
+ constexpr float kMaxScreenshotHeadroom = 2.0f;
+ displayBrightnessNits =
+ std::min(sdrWhitePointNits * kMaxScreenshotHeadroom, displayBrightnessNits);
+ }
if (requestedDataspace == ui::Dataspace::UNKNOWN) {
renderIntent = state.renderIntent;