diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-15 23:17:11 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-06-15 23:17:11 +0000 |
commit | acaf4e606ff35cc6bcc99c1bb54699f1c456edf5 (patch) | |
tree | 77c951d84a9ada8eb34908dbf444638af10a65ac | |
parent | 79c8693b61da4934dbf7cb45e3c9872b717ed62e (diff) | |
parent | c83558cf2dc974bdbc42901ef291b68ebe8cacfe (diff) | |
download | native-acaf4e606ff35cc6bcc99c1bb54699f1c456edf5.tar.gz |
Snap for 10331563 from c83558cf2dc974bdbc42901ef291b68ebe8cacfe to udc-release
Change-Id: Id6244fcf1baebf6521d712456709d6cdbf03e554
-rw-r--r-- | libs/renderengine/skia/SkiaRenderEngine.cpp | 4 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 7 |
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; |