From 342f621ade811982fb08fa01fd493629913ce549 Mon Sep 17 00:00:00 2001 From: John Reck Date: Tue, 14 Mar 2023 21:58:26 -0400 Subject: Add sysprop to control HDR headroom To accelerate tuning of the value allow it to be sysprop driven Bug: 273624684 Test: change prop, verify silkfx headroom changes after re-launch Change-Id: Ibad662b7ba06bd821c7a3ce48c19f4c94c716b5e --- libs/hwui/Properties.cpp | 7 +++++++ libs/hwui/Properties.h | 4 ++++ libs/hwui/renderthread/CanvasContext.cpp | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) (limited to 'libs/hwui') diff --git a/libs/hwui/Properties.cpp b/libs/hwui/Properties.cpp index b0896daee2a1..9df6822b4867 100644 --- a/libs/hwui/Properties.cpp +++ b/libs/hwui/Properties.cpp @@ -91,6 +91,8 @@ bool Properties::isHighEndGfx = true; bool Properties::isLowRam = false; bool Properties::isSystemOrPersistent = false; +float Properties::maxHdrHeadroomOn8bit = 5.f; // TODO: Refine this number + StretchEffectBehavior Properties::stretchEffectBehavior = StretchEffectBehavior::ShaderHWUI; DrawingEnabled Properties::drawingEnabled = DrawingEnabled::NotInitialized; @@ -150,6 +152,11 @@ bool Properties::load() { enableWebViewOverlays = base::GetBoolProperty(PROPERTY_WEBVIEW_OVERLAYS_ENABLED, true); + auto hdrHeadroom = (float)atof(base::GetProperty(PROPERTY_8BIT_HDR_HEADROOM, "").c_str()); + if (hdrHeadroom >= 1.f) { + maxHdrHeadroomOn8bit = std::min(hdrHeadroom, 100.f); + } + // call isDrawingEnabled to force loading of the property isDrawingEnabled(); diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h index ed7175e140e4..24e206bbc3b1 100644 --- a/libs/hwui/Properties.h +++ b/libs/hwui/Properties.h @@ -218,6 +218,8 @@ enum DebugLevel { #define PROPERTY_MEMORY_POLICY "debug.hwui.app_memory_policy" +#define PROPERTY_8BIT_HDR_HEADROOM "debug.hwui.8bit_hdr_headroom" + /////////////////////////////////////////////////////////////////////////////// // Misc /////////////////////////////////////////////////////////////////////////////// @@ -321,6 +323,8 @@ public: static bool isLowRam; static bool isSystemOrPersistent; + static float maxHdrHeadroomOn8bit; + static StretchEffectBehavior getStretchEffectBehavior() { return stretchEffectBehavior; } diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index f10b2b2f0694..dd781bb85470 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -311,7 +311,7 @@ float CanvasContext::setColorMode(ColorMode mode) { } switch (mColorMode) { case ColorMode::Hdr: - return 3.f; // TODO: Refine this number + return Properties::maxHdrHeadroomOn8bit; case ColorMode::Hdr10: return 10.f; default: -- cgit v1.2.3-59-g8ed1b