diff options
4 files changed, 53 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java index 0ee25e2e03e7..bb44ddf98394 100644 --- a/services/core/java/com/android/server/display/DisplayDeviceConfig.java +++ b/services/core/java/com/android/server/display/DisplayDeviceConfig.java @@ -137,6 +137,8 @@ import javax.xml.datatype.DatatypeConfigurationException; * <refreshRate> * <lowerBlockingZoneConfigs> * <defaultRefreshRate>75</defaultRefreshRate> + * <defaultRefreshRateInHbmHdr>75</defaultRefreshRateInHbmHdr> + * <defaultRefreshRateInHbmSunlight>75</defaultRefreshRateInHbmSunlight> * <blockingZoneThreshold> * <displayBrightnessPoint> * <lux>50</lux> @@ -404,6 +406,7 @@ public class DisplayDeviceConfig { private static final long STABLE_FLAG = 1L << 62; private static final int DEFAULT_PEAK_REFRESH_RATE = 0; private static final int DEFAULT_REFRESH_RATE = 60; + private static final int DEFAULT_REFRESH_RATE_IN_HBM = 0; private static final int DEFAULT_LOW_REFRESH_RATE = 60; private static final int DEFAULT_HIGH_REFRESH_RATE = 0; private static final int[] DEFAULT_BRIGHTNESS_THRESHOLDS = new int[]{}; @@ -585,6 +588,15 @@ public class DisplayDeviceConfig { private int mDefaultRefreshRate = DEFAULT_REFRESH_RATE; /** + * Default refresh rate while the device has high brightness mode enabled for HDR. + */ + private int mDefaultRefreshRateInHbmHdr = DEFAULT_REFRESH_RATE_IN_HBM; + + /** + * Default refresh rate while the device has high brightness mode enabled for Sunlight. + */ + private int mDefaultRefreshRateInHbmSunlight = DEFAULT_REFRESH_RATE_IN_HBM; + /** * Default refresh rate in the high zone defined by brightness and ambient thresholds. * If non-positive, then the refresh rate is unchanged even if thresholds are configured. */ @@ -1325,8 +1337,7 @@ public class DisplayDeviceConfig { * @return Default refresh rate while the device has high brightness mode enabled for HDR. */ public int getDefaultRefreshRateInHbmHdr() { - return mContext.getResources().getInteger( - R.integer.config_defaultRefreshRateInHbmHdr); + return mDefaultRefreshRateInHbmHdr; } /** @@ -1334,8 +1345,7 @@ public class DisplayDeviceConfig { * high lux. */ public int getDefaultRefreshRateInHbmSunlight() { - return mContext.getResources().getInteger( - R.integer.config_defaultRefreshRateInHbmSunlight); + return mDefaultRefreshRateInHbmSunlight; } /** @@ -1491,6 +1501,8 @@ public class DisplayDeviceConfig { + ", mDefaultHighBlockingZoneRefreshRate= " + mDefaultHighBlockingZoneRefreshRate + ", mDefaultPeakRefreshRate= " + mDefaultPeakRefreshRate + ", mDefaultRefreshRate= " + mDefaultRefreshRate + + ", mDefaultRefreshRateInHbmHdr= " + mDefaultRefreshRateInHbmHdr + + ", mDefaultRefreshRateInHbmSunlight= " + mDefaultRefreshRateInHbmSunlight + ", mLowDisplayBrightnessThresholds= " + Arrays.toString(mLowDisplayBrightnessThresholds) + ", mLowAmbientBrightnessThresholds= " @@ -1806,6 +1818,7 @@ public class DisplayDeviceConfig { : refreshRateConfigs.getHigherBlockingZoneConfigs(); loadPeakDefaultRefreshRate(refreshRateConfigs); loadDefaultRefreshRate(refreshRateConfigs); + loadDefaultRefreshRateInHbm(refreshRateConfigs); loadLowerRefreshRateBlockingZones(lowerBlockingZoneConfig); loadHigherRefreshRateBlockingZones(higherBlockingZoneConfig); } @@ -1830,6 +1843,26 @@ public class DisplayDeviceConfig { } } + private void loadDefaultRefreshRateInHbm(RefreshRateConfigs refreshRateConfigs) { + if (refreshRateConfigs != null + && refreshRateConfigs.getDefaultRefreshRateInHbmHdr() != null) { + mDefaultRefreshRateInHbmHdr = refreshRateConfigs.getDefaultRefreshRateInHbmHdr() + .intValue(); + } else { + mDefaultRefreshRateInHbmHdr = mContext.getResources().getInteger( + R.integer.config_defaultRefreshRateInHbmHdr); + } + + if (refreshRateConfigs != null + && refreshRateConfigs.getDefaultRefreshRateInHbmSunlight() != null) { + mDefaultRefreshRateInHbmSunlight = + refreshRateConfigs.getDefaultRefreshRateInHbmSunlight().intValue(); + } else { + mDefaultRefreshRateInHbmSunlight = mContext.getResources().getInteger( + R.integer.config_defaultRefreshRateInHbmSunlight); + } + } + /** * Loads the refresh rate configurations pertaining to the upper blocking zones. */ diff --git a/services/core/xsd/display-device-config/display-device-config.xsd b/services/core/xsd/display-device-config/display-device-config.xsd index abe48f894e59..91a11380c81c 100644 --- a/services/core/xsd/display-device-config/display-device-config.xsd +++ b/services/core/xsd/display-device-config/display-device-config.xsd @@ -472,6 +472,14 @@ minOccurs="0" maxOccurs="1"> <xs:annotation name="final"/> </xs:element> + <xs:element name="defaultRefreshRateInHbmHdr" type="xs:nonNegativeInteger" + minOccurs="0" maxOccurs="1"> + <xs:annotation name="final"/> + </xs:element> + <xs:element name="defaultRefreshRateInHbmSunlight" type="xs:nonNegativeInteger" + minOccurs="0" maxOccurs="1"> + <xs:annotation name="final"/> + </xs:element> <xs:element name="lowerBlockingZoneConfigs" type="blockingZoneConfig" minOccurs="0" maxOccurs="1"> <xs:annotation name="final"/> diff --git a/services/core/xsd/display-device-config/schema/current.txt b/services/core/xsd/display-device-config/schema/current.txt index 2c97af55f092..1110d86e1fc1 100644 --- a/services/core/xsd/display-device-config/schema/current.txt +++ b/services/core/xsd/display-device-config/schema/current.txt @@ -188,10 +188,14 @@ package com.android.server.display.config { ctor public RefreshRateConfigs(); method public final java.math.BigInteger getDefaultPeakRefreshRate(); method public final java.math.BigInteger getDefaultRefreshRate(); + method public final java.math.BigInteger getDefaultRefreshRateInHbmHdr(); + method public final java.math.BigInteger getDefaultRefreshRateInHbmSunlight(); method public final com.android.server.display.config.BlockingZoneConfig getHigherBlockingZoneConfigs(); method public final com.android.server.display.config.BlockingZoneConfig getLowerBlockingZoneConfigs(); method public final void setDefaultPeakRefreshRate(java.math.BigInteger); method public final void setDefaultRefreshRate(java.math.BigInteger); + method public final void setDefaultRefreshRateInHbmHdr(java.math.BigInteger); + method public final void setDefaultRefreshRateInHbmSunlight(java.math.BigInteger); method public final void setHigherBlockingZoneConfigs(com.android.server.display.config.BlockingZoneConfig); method public final void setLowerBlockingZoneConfigs(com.android.server.display.config.BlockingZoneConfig); } diff --git a/services/tests/servicestests/src/com/android/server/display/DisplayDeviceConfigTest.java b/services/tests/servicestests/src/com/android/server/display/DisplayDeviceConfigTest.java index d1fbc1e50e83..8f70617a66ea 100644 --- a/services/tests/servicestests/src/com/android/server/display/DisplayDeviceConfigTest.java +++ b/services/tests/servicestests/src/com/android/server/display/DisplayDeviceConfigTest.java @@ -158,6 +158,8 @@ public final class DisplayDeviceConfigTest { assertEquals(90, mDisplayDeviceConfig.getDefaultHighBlockingZoneRefreshRate()); assertEquals(85, mDisplayDeviceConfig.getDefaultPeakRefreshRate()); assertEquals(45, mDisplayDeviceConfig.getDefaultRefreshRate()); + assertEquals(82, mDisplayDeviceConfig.getDefaultRefreshRateInHbmHdr()); + assertEquals(83, mDisplayDeviceConfig.getDefaultRefreshRateInHbmSunlight()); assertArrayEquals(new int[]{45, 55}, mDisplayDeviceConfig.getLowDisplayBrightnessThresholds()); assertArrayEquals(new int[]{50, 60}, @@ -465,6 +467,8 @@ public final class DisplayDeviceConfigTest { + "<refreshRate>\n" + "<defaultRefreshRate>45</defaultRefreshRate>\n" + "<defaultPeakRefreshRate>85</defaultPeakRefreshRate>\n" + + "<defaultRefreshRateInHbmHdr>82</defaultRefreshRateInHbmHdr>\n" + + "<defaultRefreshRateInHbmSunlight>83</defaultRefreshRateInHbmSunlight>\n" + "<lowerBlockingZoneConfigs>\n" + "<defaultRefreshRate>75</defaultRefreshRate>\n" + "<blockingZoneThreshold>\n" |