Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c83558cf authored by John Reck's avatar John Reck Committed by Android (Google) Code Review
Browse files

Merge "Adjust screenshot behavior of HDR content" into udc-dev

parents 92745f7a 5b02fc47
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -86,6 +86,7 @@ namespace {
// Debugging settings
// Debugging settings
static const bool kPrintLayerSettings = false;
static const bool kPrintLayerSettings = false;
static const bool kFlushAfterEveryLayer = kPrintLayerSettings;
static const bool kFlushAfterEveryLayer = kPrintLayerSettings;
static constexpr bool kEnableLayerBrightening = true;


} // namespace
} // namespace


@@ -699,7 +700,8 @@ void SkiaRenderEngine::drawLayersInternal(


    // ...and compute the dimming ratio if dimming is requested
    // ...and compute the dimming ratio if dimming is requested
    const float displayDimmingRatio = display.targetLuminanceNits > 0.f &&
    const float displayDimmingRatio = display.targetLuminanceNits > 0.f &&
                    maxLayerWhitePoint > 0.f && display.targetLuminanceNits > maxLayerWhitePoint
                    maxLayerWhitePoint > 0.f &&
                    (kEnableLayerBrightening || display.targetLuminanceNits > maxLayerWhitePoint)
            ? maxLayerWhitePoint / display.targetLuminanceNits
            ? maxLayerWhitePoint / display.targetLuminanceNits
            : 1.f;
            : 1.f;


+7 −0
Original line number Original line Diff line number Diff line
@@ -7419,6 +7419,13 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
                                      renderArea->getHintForSeamlessTransition());
                                      renderArea->getHintForSeamlessTransition());
            sdrWhitePointNits = state.sdrWhitePointNits;
            sdrWhitePointNits = state.sdrWhitePointNits;
            displayBrightnessNits = state.displayBrightnessNits;
            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) {
            if (requestedDataspace == ui::Dataspace::UNKNOWN) {
                renderIntent = state.renderIntent;
                renderIntent = state.renderIntent;