Loading services/core/java/com/android/server/display/BrightnessRangeController.java +1 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ class BrightnessRangeController { () -> mNormalBrightnessModeController.setAutoBrightnessState(state), () -> mHbmController.setAutoBrightnessEnabled(state) ); mHdrClamper.setAutoBrightnessState(state); } void onBrightnessChanged(float brightness, float unthrottledBrightness, Loading services/core/java/com/android/server/display/NormalBrightnessModeController.java +4 −2 Original line number Diff line number Diff line Loading @@ -79,10 +79,12 @@ class NormalBrightnessModeController { maxBrightnessPoints = mMaxBrightnessLimits.get(BrightnessLimitMapType.ADAPTIVE); } if (maxBrightnessPoints == null) { // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled. // Temporary disabling this Controller if auto brightness is off, to avoid capping // brightness based on stale ambient lux. The issue is tracked here: b/322445088 if (mAutoBrightnessEnabled && maxBrightnessPoints == null) { maxBrightnessPoints = mMaxBrightnessLimits.get(BrightnessLimitMapType.DEFAULT); } if (maxBrightnessPoints != null) { for (Map.Entry<Float, Float> brightnessPoint : maxBrightnessPoints.entrySet()) { float ambientBoundary = brightnessPoint.getKey(); Loading services/core/java/com/android/server/display/brightness/clamper/HdrClamper.java +20 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.PowerManager; import android.view.SurfaceControlHdrLayerInfoListener; import com.android.internal.annotations.VisibleForTesting; import com.android.server.display.AutomaticBrightnessController; import com.android.server.display.config.HdrBrightnessData; import java.io.PrintWriter; Loading Loading @@ -56,6 +57,8 @@ public class HdrClamper { private float mTransitionRate = -1f; private float mDesiredTransitionRate = -1f; private boolean mAutoBrightnessEnabled = false; public HdrClamper(BrightnessClamperController.ClamperChangeListener clamperChangeListener, Handler handler) { this(clamperChangeListener, handler, new Injector()); Loading Loading @@ -122,6 +125,18 @@ public class HdrClamper { recalculateBrightnessCap(data, mAmbientLux, mHdrVisible); } /** * Sets state of auto brightness to temporary disabling this Clamper if auto brightness is off. * The issue is tracked here: b/322445088 */ public void setAutoBrightnessState(int state) { boolean isEnabled = state == AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED; if (isEnabled != mAutoBrightnessEnabled) { mAutoBrightnessEnabled = isEnabled; recalculateBrightnessCap(mHdrBrightnessData, mAmbientLux, mHdrVisible); } } /** Clean up all resources */ @SuppressLint("AndroidFrameworkRequiresPermission") public void stop() { Loading @@ -145,6 +160,7 @@ public class HdrClamper { : mHdrBrightnessData.toString())); pw.println(" mHdrListener registered=" + (mRegisteredDisplayToken != null)); pw.println(" mAmbientLux=" + mAmbientLux); pw.println(" mAutoBrightnessEnabled=" + mAutoBrightnessEnabled); } private void reset() { Loading @@ -163,7 +179,10 @@ public class HdrClamper { private void recalculateBrightnessCap(HdrBrightnessData data, float ambientLux, boolean hdrVisible) { if (data == null || !hdrVisible) { // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled. // Temporary disabling this Clamper if auto brightness is off, to avoid capping // brightness based on stale ambient lux. The issue is tracked here: b/322445088 if (data == null || !hdrVisible || !mAutoBrightnessEnabled) { reset(); return; } Loading services/tests/displayservicetests/src/com/android/server/display/NormalBrightnessModeControllerTest.java +15 −10 Original line number Diff line number Diff line Loading @@ -43,6 +43,11 @@ public class NormalBrightnessModeControllerTest { private final NormalBrightnessModeController mController = new NormalBrightnessModeController(); // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled. // NormalBrightnessModeController is temporary disabled if auto brightness is off, // to avoid capping brightness based on stale ambient lux. Temporary disabling tests with // auto brightness off and default config pres // The issue is tracked here: b/322445088 @Keep private static Object[][] brightnessData() { return new Object[][]{ Loading @@ -59,10 +64,10 @@ public class NormalBrightnessModeControllerTest { ImmutableMap.of(99f, 0.1f, 101f, 0.2f) ), 0.2f}, // Auto brightness - off, config only for default {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of( BrightnessLimitMapType.DEFAULT, ImmutableMap.of(99f, 0.1f, 101f, 0.2f) ), 0.2f}, // {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of( // BrightnessLimitMapType.DEFAULT, // ImmutableMap.of(99f, 0.1f, 101f, 0.2f) // ), 0.2f}, // Auto brightness - off, config only for adaptive {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of( BrightnessLimitMapType.ADAPTIVE, Loading @@ -81,12 +86,12 @@ public class NormalBrightnessModeControllerTest { ImmutableMap.of(99f, 0.3f, 101f, 0.4f) ), 0.4f}, // Auto brightness - off, config for both {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of( BrightnessLimitMapType.DEFAULT, ImmutableMap.of(99f, 0.1f, 101f, 0.2f), BrightnessLimitMapType.ADAPTIVE, ImmutableMap.of(99f, 0.3f, 101f, 0.4f) ), 0.2f}, // {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of( // BrightnessLimitMapType.DEFAULT, // ImmutableMap.of(99f, 0.1f, 101f, 0.2f), // BrightnessLimitMapType.ADAPTIVE, // ImmutableMap.of(99f, 0.3f, 101f, 0.4f) // ), 0.2f}, // Auto brightness - on, config for both, ambient high {1000, AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED, ImmutableMap.of( BrightnessLimitMapType.DEFAULT, Loading services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/HdrClamperTest.java +6 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.os.PowerManager; import androidx.test.filters.SmallTest; import com.android.server.display.AutomaticBrightnessController; import com.android.server.display.config.HdrBrightnessData; import com.android.server.testutils.OffsettableClock; import com.android.server.testutils.TestHandler; Loading Loading @@ -230,6 +231,11 @@ public class HdrClamperTest { } private void configureClamper() { // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled. // HdrClamper is temporary disabled if auto brightness is off. // Temporary setting AutoBrightnessState to enabled for this test // The issue is tracked here: b/322445088 mHdrClamper.setAutoBrightnessState(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED); mHdrClamper.resetHdrConfig(TEST_HDR_DATA, WIDTH, HEIGHT, MIN_HDR_PERCENT, mMockBinder); mHdrChangeListener.onHdrVisible(true); } Loading Loading
services/core/java/com/android/server/display/BrightnessRangeController.java +1 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,7 @@ class BrightnessRangeController { () -> mNormalBrightnessModeController.setAutoBrightnessState(state), () -> mHbmController.setAutoBrightnessEnabled(state) ); mHdrClamper.setAutoBrightnessState(state); } void onBrightnessChanged(float brightness, float unthrottledBrightness, Loading
services/core/java/com/android/server/display/NormalBrightnessModeController.java +4 −2 Original line number Diff line number Diff line Loading @@ -79,10 +79,12 @@ class NormalBrightnessModeController { maxBrightnessPoints = mMaxBrightnessLimits.get(BrightnessLimitMapType.ADAPTIVE); } if (maxBrightnessPoints == null) { // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled. // Temporary disabling this Controller if auto brightness is off, to avoid capping // brightness based on stale ambient lux. The issue is tracked here: b/322445088 if (mAutoBrightnessEnabled && maxBrightnessPoints == null) { maxBrightnessPoints = mMaxBrightnessLimits.get(BrightnessLimitMapType.DEFAULT); } if (maxBrightnessPoints != null) { for (Map.Entry<Float, Float> brightnessPoint : maxBrightnessPoints.entrySet()) { float ambientBoundary = brightnessPoint.getKey(); Loading
services/core/java/com/android/server/display/brightness/clamper/HdrClamper.java +20 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.PowerManager; import android.view.SurfaceControlHdrLayerInfoListener; import com.android.internal.annotations.VisibleForTesting; import com.android.server.display.AutomaticBrightnessController; import com.android.server.display.config.HdrBrightnessData; import java.io.PrintWriter; Loading Loading @@ -56,6 +57,8 @@ public class HdrClamper { private float mTransitionRate = -1f; private float mDesiredTransitionRate = -1f; private boolean mAutoBrightnessEnabled = false; public HdrClamper(BrightnessClamperController.ClamperChangeListener clamperChangeListener, Handler handler) { this(clamperChangeListener, handler, new Injector()); Loading Loading @@ -122,6 +125,18 @@ public class HdrClamper { recalculateBrightnessCap(data, mAmbientLux, mHdrVisible); } /** * Sets state of auto brightness to temporary disabling this Clamper if auto brightness is off. * The issue is tracked here: b/322445088 */ public void setAutoBrightnessState(int state) { boolean isEnabled = state == AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED; if (isEnabled != mAutoBrightnessEnabled) { mAutoBrightnessEnabled = isEnabled; recalculateBrightnessCap(mHdrBrightnessData, mAmbientLux, mHdrVisible); } } /** Clean up all resources */ @SuppressLint("AndroidFrameworkRequiresPermission") public void stop() { Loading @@ -145,6 +160,7 @@ public class HdrClamper { : mHdrBrightnessData.toString())); pw.println(" mHdrListener registered=" + (mRegisteredDisplayToken != null)); pw.println(" mAmbientLux=" + mAmbientLux); pw.println(" mAutoBrightnessEnabled=" + mAutoBrightnessEnabled); } private void reset() { Loading @@ -163,7 +179,10 @@ public class HdrClamper { private void recalculateBrightnessCap(HdrBrightnessData data, float ambientLux, boolean hdrVisible) { if (data == null || !hdrVisible) { // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled. // Temporary disabling this Clamper if auto brightness is off, to avoid capping // brightness based on stale ambient lux. The issue is tracked here: b/322445088 if (data == null || !hdrVisible || !mAutoBrightnessEnabled) { reset(); return; } Loading
services/tests/displayservicetests/src/com/android/server/display/NormalBrightnessModeControllerTest.java +15 −10 Original line number Diff line number Diff line Loading @@ -43,6 +43,11 @@ public class NormalBrightnessModeControllerTest { private final NormalBrightnessModeController mController = new NormalBrightnessModeController(); // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled. // NormalBrightnessModeController is temporary disabled if auto brightness is off, // to avoid capping brightness based on stale ambient lux. Temporary disabling tests with // auto brightness off and default config pres // The issue is tracked here: b/322445088 @Keep private static Object[][] brightnessData() { return new Object[][]{ Loading @@ -59,10 +64,10 @@ public class NormalBrightnessModeControllerTest { ImmutableMap.of(99f, 0.1f, 101f, 0.2f) ), 0.2f}, // Auto brightness - off, config only for default {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of( BrightnessLimitMapType.DEFAULT, ImmutableMap.of(99f, 0.1f, 101f, 0.2f) ), 0.2f}, // {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of( // BrightnessLimitMapType.DEFAULT, // ImmutableMap.of(99f, 0.1f, 101f, 0.2f) // ), 0.2f}, // Auto brightness - off, config only for adaptive {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of( BrightnessLimitMapType.ADAPTIVE, Loading @@ -81,12 +86,12 @@ public class NormalBrightnessModeControllerTest { ImmutableMap.of(99f, 0.3f, 101f, 0.4f) ), 0.4f}, // Auto brightness - off, config for both {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of( BrightnessLimitMapType.DEFAULT, ImmutableMap.of(99f, 0.1f, 101f, 0.2f), BrightnessLimitMapType.ADAPTIVE, ImmutableMap.of(99f, 0.3f, 101f, 0.4f) ), 0.2f}, // {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of( // BrightnessLimitMapType.DEFAULT, // ImmutableMap.of(99f, 0.1f, 101f, 0.2f), // BrightnessLimitMapType.ADAPTIVE, // ImmutableMap.of(99f, 0.3f, 101f, 0.4f) // ), 0.2f}, // Auto brightness - on, config for both, ambient high {1000, AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED, ImmutableMap.of( BrightnessLimitMapType.DEFAULT, Loading
services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/HdrClamperTest.java +6 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.os.PowerManager; import androidx.test.filters.SmallTest; import com.android.server.display.AutomaticBrightnessController; import com.android.server.display.config.HdrBrightnessData; import com.android.server.testutils.OffsettableClock; import com.android.server.testutils.TestHandler; Loading Loading @@ -230,6 +231,11 @@ public class HdrClamperTest { } private void configureClamper() { // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled. // HdrClamper is temporary disabled if auto brightness is off. // Temporary setting AutoBrightnessState to enabled for this test // The issue is tracked here: b/322445088 mHdrClamper.setAutoBrightnessState(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED); mHdrClamper.resetHdrConfig(TEST_HDR_DATA, WIDTH, HEIGHT, MIN_HDR_PERCENT, mMockBinder); mHdrChangeListener.onHdrVisible(true); } Loading