diff options
| author | 2024-10-29 09:20:23 -0700 | |
|---|---|---|
| committer | 2024-11-20 17:03:32 -0800 | |
| commit | 7dad2b0710d2a81be74bdd37c7c29be17c6ee0a6 (patch) | |
| tree | 77c8138882ecf8c0caebbf921836db6631db2c62 | |
| parent | 2ede2ad0f544b802b0c84d9fe499ee819b3cb82b (diff) | |
Update getSupportedRefreshRates api
Un-deprecated getSupportedRefreshRates
Framework supports more render rates than display modes
using the features such as frame rate override. resurfacing the
api inorder to support all the render rates in the framework.
Test: atest android.display.cts.DisplayTest
BUG: 365163968
Flag: com.android.server.display.feature.flags.enable_get_supported_refresh_rates
Change-Id: I54750c5f5aeb67e086c7052698c2fd745574b32f
14 files changed, 142 insertions, 16 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index 45f6a3fbe0cb..45c75e3a0e63 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -51925,7 +51925,7 @@ package android.view { method public int getState(); method @FlaggedApi("com.android.server.display.feature.flags.enable_get_suggested_frame_rate") public float getSuggestedFrameRate(int); method public android.view.Display.Mode[] getSupportedModes(); - method @Deprecated public float[] getSupportedRefreshRates(); + method @FlaggedApi("com.android.server.display.feature.flags.enable_get_supported_refresh_rates") @NonNull public float[] getSupportedRefreshRates(); method @Deprecated public int getWidth(); method @FlaggedApi("com.android.server.display.feature.flags.enable_has_arr_support") public boolean hasArrSupport(); method public boolean isHdr(); diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 1a97f7beb7fa..967f6194969e 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -3730,6 +3730,7 @@ package android.view { method @NonNull public android.view.Display.Mode getDefaultMode(); method public int getRemoveMode(); method @NonNull public int[] getReportedHdrTypes(); + method @NonNull public float[] getSupportedRefreshRatesLegacy(); method @NonNull public android.graphics.ColorSpace[] getSupportedWideColorGamut(); method @Nullable public android.view.Display.Mode getSystemPreferredDisplayMode(); method public int getType(); @@ -3752,6 +3753,7 @@ package android.view { public static final class Display.Mode implements android.os.Parcelable { ctor public Display.Mode(int, int, float); + method public float getVsyncRate(); method public boolean isSynthetic(); method public boolean matches(int, int, float); } diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java index a1a9fc697271..6f38ad59cbb2 100644 --- a/core/java/android/view/Display.java +++ b/core/java/android/view/Display.java @@ -20,6 +20,7 @@ import static android.Manifest.permission.CONFIGURE_DISPLAY_COLOR_MODE; import static android.Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS; import static android.hardware.flags.Flags.FLAG_OVERLAYPROPERTIES_CLASS_API; +import static com.android.server.display.feature.flags.Flags.FLAG_ENABLE_GET_SUPPORTED_REFRESH_RATES; import static com.android.server.display.feature.flags.Flags.FLAG_HIGHEST_HDR_SDR_RATIO_API; import static com.android.server.display.feature.flags.Flags.FLAG_ENABLE_HAS_ARR_SUPPORT; import static com.android.server.display.feature.flags.Flags.FLAG_ENABLE_GET_SUGGESTED_FRAME_RATE; @@ -63,6 +64,7 @@ import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; import java.util.concurrent.Executor; import java.util.function.Consumer; @@ -1207,17 +1209,36 @@ public final class Display { /** * Get the supported refresh rates of this display in frames per second. - * <p> - * This method only returns refresh rates for the display's default modes. For more options, use - * {@link #getSupportedModes()}. * - * @deprecated use {@link #getSupportedModes()} instead + * <ul> + * <li> Android version {@link Build.VERSION_CODES#BAKLAVA} and above: + * returns display supported render rates. + * <li> Android version {@link Build.VERSION_CODES#VANILLA_ICE_CREAM} and below: + * This method only returns refresh rates for the display's default modes. For more options, + * use {@link #getSupportedModes()}. + * </ul> */ - @Deprecated - public float[] getSupportedRefreshRates() { + @FlaggedApi(FLAG_ENABLE_GET_SUPPORTED_REFRESH_RATES) + public @NonNull float[] getSupportedRefreshRates() { synchronized (mLock) { updateDisplayInfoLocked(); - return mDisplayInfo.getDefaultRefreshRates(); + final float[] refreshRates = mDisplayInfo.getDefaultRefreshRates(); + Objects.requireNonNull(refreshRates); + return refreshRates; + } + } + + /** + * @hide + */ + @TestApi + @SuppressLint({"UnflaggedApi"}) // Usage in the CTS to test backward compatibility. + public @NonNull float[] getSupportedRefreshRatesLegacy() { + synchronized (mLock) { + updateDisplayInfoLocked(); + final float[] refreshRates = mDisplayInfo.getDefaultRefreshRatesLegacy(); + Objects.requireNonNull(refreshRates); + return refreshRates; } } @@ -2438,6 +2459,8 @@ public final class Display { * constrained by the system. * @hide */ + @SuppressWarnings("UnflaggedApi") // For testing only + @TestApi public float getVsyncRate() { return mVsyncRate; } diff --git a/core/java/android/view/DisplayInfo.java b/core/java/android/view/DisplayInfo.java index 4ff04d5c1fa6..8b6458a54c43 100644 --- a/core/java/android/view/DisplayInfo.java +++ b/core/java/android/view/DisplayInfo.java @@ -210,6 +210,11 @@ public final class DisplayInfo implements Parcelable { public FrameRateCategoryRate frameRateCategoryRate; /** + * All the refresh rates supported in the active mode. + */ + public float[] supportedRefreshRates = new float[0]; + + /** * The default display mode. */ public int defaultModeId; @@ -449,6 +454,7 @@ public final class DisplayInfo implements Parcelable { && modeId == other.modeId && hasArrSupport == other.hasArrSupport && Objects.equals(frameRateCategoryRate, other.frameRateCategoryRate) + && Arrays.equals(supportedRefreshRates, other.supportedRefreshRates) && defaultModeId == other.defaultModeId && userPreferredModeId == other.userPreferredModeId && Arrays.equals(supportedModes, other.supportedModes) @@ -512,6 +518,8 @@ public final class DisplayInfo implements Parcelable { renderFrameRate = other.renderFrameRate; hasArrSupport = other.hasArrSupport; frameRateCategoryRate = other.frameRateCategoryRate; + supportedRefreshRates = Arrays.copyOf( + other.supportedRefreshRates, other.supportedRefreshRates.length); defaultModeId = other.defaultModeId; userPreferredModeId = other.userPreferredModeId; supportedModes = Arrays.copyOf(other.supportedModes, other.supportedModes.length); @@ -571,6 +579,11 @@ public final class DisplayInfo implements Parcelable { hasArrSupport = source.readBoolean(); frameRateCategoryRate = source.readParcelable(null, android.view.FrameRateCategoryRate.class); + int numOfSupportedRefreshRates = source.readInt(); + supportedRefreshRates = new float[numOfSupportedRefreshRates]; + for (int i = 0; i < numOfSupportedRefreshRates; i++) { + supportedRefreshRates[i] = source.readFloat(); + } defaultModeId = source.readInt(); userPreferredModeId = source.readInt(); int nModes = source.readInt(); @@ -646,6 +659,10 @@ public final class DisplayInfo implements Parcelable { dest.writeFloat(renderFrameRate); dest.writeBoolean(hasArrSupport); dest.writeParcelable(frameRateCategoryRate, flags); + dest.writeInt(supportedRefreshRates.length); + for (float supportedRefreshRate : supportedRefreshRates) { + dest.writeFloat(supportedRefreshRate); + } dest.writeInt(defaultModeId); dest.writeInt(userPreferredModeId); dest.writeInt(supportedModes.length); @@ -750,9 +767,19 @@ public final class DisplayInfo implements Parcelable { } /** - * Returns the list of supported refresh rates in the default mode. + * Returns the list of supported refresh rates in the active mode. */ public float[] getDefaultRefreshRates() { + if (supportedRefreshRates.length == 0) { + return getDefaultRefreshRatesLegacy(); + } + return Arrays.copyOf(supportedRefreshRates, supportedRefreshRates.length); + } + + /** + * Returns the list of supported refresh rates in the default mode. + */ + public float[] getDefaultRefreshRatesLegacy() { Display.Mode[] modes = appsSupportedModes; ArraySet<Float> rates = new ArraySet<>(); Display.Mode defaultMode = getDefaultMode(); @@ -898,6 +925,8 @@ public final class DisplayInfo implements Parcelable { sb.append(hasArrSupport); sb.append(", frameRateCategoryRate "); sb.append(frameRateCategoryRate); + sb.append(", supportedRefreshRates "); + sb.append(Arrays.toString(supportedRefreshRates)); sb.append(", defaultMode "); sb.append(defaultModeId); sb.append(", userPreferredModeId "); diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 68674dd402b4..dd9a95e58bd1 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -1932,6 +1932,7 @@ public final class SurfaceControl implements Parcelable { public float renderFrameRate; public boolean hasArrSupport; public FrameRateCategoryRate frameRateCategoryRate; + public float[] supportedRefreshRates; public int[] supportedColorModes; public int activeColorMode; @@ -1951,6 +1952,7 @@ public final class SurfaceControl implements Parcelable { + ", renderFrameRate=" + renderFrameRate + ", hasArrSupport=" + hasArrSupport + ", frameRateCategoryRate=" + frameRateCategoryRate + + ", supportedRefreshRates=" + Arrays.toString(supportedRefreshRates) + ", supportedColorModes=" + Arrays.toString(supportedColorModes) + ", activeColorMode=" + activeColorMode + ", hdrCapabilities=" + hdrCapabilities @@ -1972,14 +1974,15 @@ public final class SurfaceControl implements Parcelable { && Objects.equals(hdrCapabilities, that.hdrCapabilities) && preferredBootDisplayMode == that.preferredBootDisplayMode && hasArrSupport == that.hasArrSupport - && Objects.equals(frameRateCategoryRate, that.frameRateCategoryRate); + && Objects.equals(frameRateCategoryRate, that.frameRateCategoryRate) + && Arrays.equals(supportedRefreshRates, that.supportedRefreshRates); } @Override public int hashCode() { return Objects.hash(Arrays.hashCode(supportedDisplayModes), activeDisplayModeId, renderFrameRate, activeColorMode, hdrCapabilities, hasArrSupport, - frameRateCategoryRate); + frameRateCategoryRate, Arrays.hashCode(supportedRefreshRates)); } } diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 68e642086636..0c243d1dc185 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -119,6 +119,7 @@ static struct { jfieldID renderFrameRate; jfieldID hasArrSupport; jfieldID frameRateCategoryRate; + jfieldID supportedRefreshRates; jfieldID supportedColorModes; jfieldID activeColorMode; jfieldID hdrCapabilities; @@ -1508,6 +1509,21 @@ static jobject nativeGetDynamicDisplayInfo(JNIEnv* env, jclass clazz, jlong disp env->SetBooleanField(object, gDynamicDisplayInfoClassInfo.hasArrSupport, info.hasArrSupport); env->SetObjectField(object, gDynamicDisplayInfoClassInfo.frameRateCategoryRate, convertFrameRateCategoryRateToJavaObject(env, info.frameRateCategoryRate)); + + jfloatArray supportedRefreshRatesArray = env->NewFloatArray(info.supportedRefreshRates.size()); + if (supportedRefreshRatesArray == NULL) { + jniThrowException(env, "java/lang/OutOfMemoryError", NULL); + return NULL; + } + jfloat* supportedRefreshRatesArrayValues = + env->GetFloatArrayElements(supportedRefreshRatesArray, 0); + for (size_t i = 0; i < info.supportedRefreshRates.size(); i++) { + supportedRefreshRatesArrayValues[i] = static_cast<jfloat>(info.supportedRefreshRates[i]); + } + env->ReleaseFloatArrayElements(supportedRefreshRatesArray, supportedRefreshRatesArrayValues, 0); + env->SetObjectField(object, gDynamicDisplayInfoClassInfo.supportedRefreshRates, + supportedRefreshRatesArray); + jintArray colorModesArray = env->NewIntArray(info.supportedColorModes.size()); if (colorModesArray == NULL) { jniThrowException(env, "java/lang/OutOfMemoryError", NULL); @@ -2766,6 +2782,8 @@ int register_android_view_SurfaceControl(JNIEnv* env) gFrameRateCategoryRateClassInfo.ctor = GetMethodIDOrDie(env, frameRateCategoryRateClazz, "<init>", "(FF)V"); + gDynamicDisplayInfoClassInfo.supportedRefreshRates = + GetFieldIDOrDie(env, dynamicInfoClazz, "supportedRefreshRates", "[F"); gDynamicDisplayInfoClassInfo.supportedColorModes = GetFieldIDOrDie(env, dynamicInfoClazz, "supportedColorModes", "[I"); gDynamicDisplayInfoClassInfo.activeColorMode = diff --git a/services/core/java/com/android/server/display/DisplayDeviceInfo.java b/services/core/java/com/android/server/display/DisplayDeviceInfo.java index d2c044fdbb5e..1c1bdad01034 100644 --- a/services/core/java/com/android/server/display/DisplayDeviceInfo.java +++ b/services/core/java/com/android/server/display/DisplayDeviceInfo.java @@ -311,6 +311,11 @@ final class DisplayDeviceInfo { */ public FrameRateCategoryRate frameRateCategoryRate; /** + * All the refresh rates supported for the default display mode. + */ + public float[] supportedRefreshRates = new float[0]; + + /** * The default mode of the display. */ public int defaultModeId; @@ -562,7 +567,8 @@ final class DisplayDeviceInfo { || installOrientation != other.installOrientation || !Objects.equals(displayShape, other.displayShape) || hasArrSupport != other.hasArrSupport - || !Objects.equals(frameRateCategoryRate, other.frameRateCategoryRate)) { + || !Objects.equals(frameRateCategoryRate, other.frameRateCategoryRate) + || !Arrays.equals(supportedRefreshRates, other.supportedRefreshRates)) { diff |= DIFF_OTHER; } return diff; @@ -582,6 +588,7 @@ final class DisplayDeviceInfo { renderFrameRate = other.renderFrameRate; hasArrSupport = other.hasArrSupport; frameRateCategoryRate = other.frameRateCategoryRate; + supportedRefreshRates = other.supportedRefreshRates; defaultModeId = other.defaultModeId; userPreferredModeId = other.userPreferredModeId; supportedModes = other.supportedModes; @@ -628,6 +635,7 @@ final class DisplayDeviceInfo { sb.append(", renderFrameRate ").append(renderFrameRate); sb.append(", hasArrSupport ").append(hasArrSupport); sb.append(", frameRateCategoryRate ").append(frameRateCategoryRate); + sb.append(", supportedRefreshRates ").append(Arrays.toString(supportedRefreshRates)); sb.append(", defaultModeId ").append(defaultModeId); sb.append(", userPreferredModeId ").append(userPreferredModeId); sb.append(", supportedModes ").append(Arrays.toString(supportedModes)); diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java index a4bb8c348d3f..0b8f7d5ef2cf 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -249,6 +249,7 @@ final class LocalDisplayAdapter extends DisplayAdapter { private int mActiveColorMode; private boolean mHasArrSupport; private FrameRateCategoryRate mFrameRateCategoryRate; + private float[] mSupportedRefreshRates = new float[0]; private Display.HdrCapabilities mHdrCapabilities; private boolean mAllmSupported; private boolean mGameContentTypeSupported; @@ -316,6 +317,7 @@ final class LocalDisplayAdapter extends DisplayAdapter { changed |= updateGameContentTypeSupport(dynamicInfo.gameContentTypeSupported); changed |= updateHasArrSupportLocked(dynamicInfo.hasArrSupport); changed |= updateFrameRateCategoryRatesLocked(dynamicInfo.frameRateCategoryRate); + changed |= updateSupportedRefreshatesLocked(dynamicInfo.supportedRefreshRates); if (changed) { mHavePendingChanges = true; @@ -624,6 +626,20 @@ final class LocalDisplayAdapter extends DisplayAdapter { return true; } + private boolean updateSupportedRefreshatesLocked(float[] supportedRefreshRates) { + if (!getFeatureFlags().enableGetSupportedRefreshRates()) { + return false; + } + if (supportedRefreshRates == null) { + return false; + } + if (Arrays.equals(mSupportedRefreshRates, supportedRefreshRates)) { + return false; + } + mSupportedRefreshRates = supportedRefreshRates; + return true; + } + private boolean updateAllmSupport(boolean supported) { if (mAllmSupported == supported) { return false; @@ -708,6 +724,7 @@ final class LocalDisplayAdapter extends DisplayAdapter { mInfo.hdrCapabilities = mHdrCapabilities; mInfo.hasArrSupport = mHasArrSupport; mInfo.frameRateCategoryRate = mFrameRateCategoryRate; + mInfo.supportedRefreshRates = mSupportedRefreshRates; mInfo.appVsyncOffsetNanos = mActiveSfDisplayMode.appVsyncOffsetNanos; mInfo.presentationDeadlineNanos = mActiveSfDisplayMode.presentationDeadlineNanos; mInfo.state = mState; @@ -1299,6 +1316,7 @@ final class LocalDisplayAdapter extends DisplayAdapter { pw.println("mDefaultModeId=" + mDefaultModeId); pw.println("mUserPreferredModeId=" + mUserPreferredModeId); pw.println("mHasArrSupport=" + mHasArrSupport); + pw.println("mSupportedRefreshRates=" + Arrays.toString(mSupportedRefreshRates)); pw.println("mState=" + Display.stateToString(mState)); pw.println("mCommittedState=" + Display.stateToString(mCommittedState)); pw.println("mBrightnessState=" + mBrightnessState); diff --git a/services/core/java/com/android/server/display/LogicalDisplay.java b/services/core/java/com/android/server/display/LogicalDisplay.java index 7cfdcafcb610..85465981c473 100644 --- a/services/core/java/com/android/server/display/LogicalDisplay.java +++ b/services/core/java/com/android/server/display/LogicalDisplay.java @@ -508,6 +508,8 @@ final class LogicalDisplay { mBaseDisplayInfo.renderFrameRate = deviceInfo.renderFrameRate; mBaseDisplayInfo.hasArrSupport = deviceInfo.hasArrSupport; mBaseDisplayInfo.frameRateCategoryRate = deviceInfo.frameRateCategoryRate; + mBaseDisplayInfo.supportedRefreshRates = Arrays.copyOf( + deviceInfo.supportedRefreshRates, deviceInfo.supportedRefreshRates.length); mBaseDisplayInfo.defaultModeId = deviceInfo.defaultModeId; mBaseDisplayInfo.userPreferredModeId = deviceInfo.userPreferredModeId; mBaseDisplayInfo.supportedModes = Arrays.copyOf( diff --git a/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java b/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java index 7f46bbbf0507..e273c6862fe0 100644 --- a/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java +++ b/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java @@ -243,6 +243,11 @@ public class DisplayManagerFlags { Flags::autoBrightnessModeBedtimeWear ); + private final FlagState mGetSupportedRefreshRatesFlagState = new FlagState( + Flags.FLAG_ENABLE_GET_SUPPORTED_REFRESH_RATES, + Flags::enableGetSupportedRefreshRates + ); + private final FlagState mEnablePluginManagerFlagState = new FlagState( Flags.FLAG_ENABLE_PLUGIN_MANAGER, Flags::enablePluginManager @@ -528,6 +533,13 @@ public class DisplayManagerFlags { return mAutoBrightnessModeBedtimeWearFlagState.isEnabled(); } + /** + * @return {@code true} if supported refresh rate api is enabled. + */ + public boolean enableGetSupportedRefreshRates() { + return mGetSupportedRefreshRatesFlagState.isEnabled(); + } + public boolean isPluginManagerEnabled() { return mEnablePluginManagerFlagState.isEnabled(); } @@ -590,6 +602,7 @@ public class DisplayManagerFlags { pw.println(" " + mIsUserRefreshRateForExternalDisplayEnabled); pw.println(" " + mHasArrSupport); pw.println(" " + mAutoBrightnessModeBedtimeWearFlagState); + pw.println(" " + mGetSupportedRefreshRatesFlagState); pw.println(" " + mEnablePluginManagerFlagState); pw.println(" " + mDisplayListenerPerformanceImprovementsFlagState); } diff --git a/services/core/java/com/android/server/wm/DeferredDisplayUpdater.java b/services/core/java/com/android/server/wm/DeferredDisplayUpdater.java index 6f8c17a9ac75..4e79e377a2a3 100644 --- a/services/core/java/com/android/server/wm/DeferredDisplayUpdater.java +++ b/services/core/java/com/android/server/wm/DeferredDisplayUpdater.java @@ -403,6 +403,7 @@ class DeferredDisplayUpdater { || first.renderFrameRate != second.renderFrameRate || first.hasArrSupport != second.hasArrSupport || !Objects.equals(first.frameRateCategoryRate, second.frameRateCategoryRate) + || !Arrays.equals(first.supportedRefreshRates, second.supportedRefreshRates) || first.defaultModeId != second.defaultModeId || first.userPreferredModeId != second.userPreferredModeId || !Arrays.equals(first.supportedModes, second.supportedModes) diff --git a/services/tests/wmtests/src/com/android/server/wm/DeferredDisplayUpdaterDiffTest.java b/services/tests/wmtests/src/com/android/server/wm/DeferredDisplayUpdaterDiffTest.java index c9c31dfe5307..a0f4ae77452c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DeferredDisplayUpdaterDiffTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DeferredDisplayUpdaterDiffTest.java @@ -239,6 +239,9 @@ public class DeferredDisplayUpdaterDiffTest { } else if (type.equals(FrameRateCategoryRate.class)) { field.set(first, new FrameRateCategoryRate(16666667, 11111111)); field.set(second, new FrameRateCategoryRate(11111111, 8333333)); + } else if (type.isArray() && type.getComponentType().equals(float.class)) { + field.set(first, new float[]{60.0f}); + field.set(second, new float[]{120.0f}); } else { throw new IllegalArgumentException("Field " + field + " is not supported by this test, please add implementation of setting " diff --git a/services/tests/wmtests/src/com/android/server/wm/FrameRateSelectionPriorityTests.java b/services/tests/wmtests/src/com/android/server/wm/FrameRateSelectionPriorityTests.java index a0c5b54603f9..c016c5ead23c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/FrameRateSelectionPriorityTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/FrameRateSelectionPriorityTests.java @@ -69,7 +69,9 @@ public class FrameRateSelectionPriorityTests extends WindowTestsBase { private static final FrameRateVote FRAME_RATE_VOTE_60_PREFERRED = new FrameRateVote(60, Surface.FRAME_RATE_COMPATIBILITY_DEFAULT, SurfaceControl.FRAME_RATE_SELECTION_STRATEGY_OVERRIDE_CHILDREN); - + private static final float HI_REFRESH_RATE = 90; + private static final float MID_REFRESH_RATE = 70; + private static final float LOW_REFRESH_RATE = 60; WindowState createWindow(String name) { WindowState window = createWindow(null, TYPE_APPLICATION, name); when(window.mWmService.mDisplayManagerInternal.getRefreshRateSwitchingType()) @@ -82,14 +84,16 @@ public class FrameRateSelectionPriorityTests extends WindowTestsBase { DisplayInfo di = new DisplayInfo(mDisplayInfo); Mode defaultMode = di.getDefaultMode(); Mode hiMode = new Mode(1, - defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), 90); + defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), HI_REFRESH_RATE); Mode midMode = new Mode(2, - defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), 70); + defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), MID_REFRESH_RATE); Mode lowMode = new Mode(LOW_MODE_ID, - defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), 60); + defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), LOW_REFRESH_RATE); di.supportedModes = new Mode[] { hiMode, midMode }; di.appsSupportedModes = new Mode[] { hiMode, midMode, lowMode }; + di.supportedRefreshRates = new float[] {HI_REFRESH_RATE, MID_REFRESH_RATE, + LOW_REFRESH_RATE}; di.defaultModeId = 1; mRefreshRatePolicy = new RefreshRatePolicy(mWm, di, mDenylist); when(mDisplayPolicy.getRefreshRatePolicy()).thenReturn(mRefreshRatePolicy); diff --git a/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java index cc38f02ccc4c..73e5f58fa7e0 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java @@ -101,6 +101,8 @@ public class RefreshRatePolicyTest extends WindowTestsBase { defaultMode.getPhysicalWidth(), defaultMode.getPhysicalHeight(), LOW_REFRESH_RATE); mDisplayInfo.supportedModes = new Mode[] { hiMode, midMode }; mDisplayInfo.appsSupportedModes = new Mode[] { hiMode, midMode, lowMode }; + mDisplayInfo.supportedRefreshRates = new float[] {HI_REFRESH_RATE, MID_REFRESH_RATE, + LOW_REFRESH_RATE}; mDisplayInfo.defaultModeId = HI_MODE_ID; mPolicy = new RefreshRatePolicy(mWm, mDisplayInfo, mDenylist); } |