diff options
author | Yury Khmel <khmel@google.com> | 2015-10-28 14:04:48 +0900 |
---|---|---|
committer | Yury Khmel <khmel@google.com> | 2015-11-02 19:25:38 +0900 |
commit | 7578d10f6cb2203ba3575b82b4b67e3a5d448bd7 (patch) | |
tree | a333e60e35f8f6572007f1984ba3656104b448f9 /tests/SurfaceComposition/src | |
parent | 6de8a0e51f0cf8c52a4de672d4b2d8f2d78d143e (diff) |
Distinguish Andromeda and Android for SurfaceComposition test.
Use different surface composition performance score thresholds for
Andromeda and Android devices.
BUG=24158847
TEST=Flushed Nexus 9 device using volantis and volantis-andromeda
images and confirmed that corresponding threshold is used
for each image.
Change-Id: I8989741200e6584d142479acc1dea7ce8642b1d3
Diffstat (limited to 'tests/SurfaceComposition/src')
2 files changed, 25 insertions, 9 deletions
diff --git a/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java b/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java index b4e0c707d3f3..4771b6cfc750 100644 --- a/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java +++ b/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java @@ -24,6 +24,7 @@ import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManager.MemoryInfo; import android.content.Context; +import android.content.pm.PackageManager; import android.graphics.Color; import android.graphics.PixelFormat; import android.graphics.Rect; @@ -95,11 +96,9 @@ public class SurfaceCompositionMeasuringActivity extends Activity implements OnC private boolean mResumed; // Drop one frame per half second. - // TODO(khmel) - // Add a feature flag and set the target FPS dependent on the target system as e.g.: - // 59FPS for MULTI_WINDOW and 54 otherwise (to satisfy the default lax Android requirements). private double mRefreshRate; private double mTargetFPS; + private boolean mAndromeda; private int mWidth; private int mHeight; @@ -182,6 +181,10 @@ public class SurfaceCompositionMeasuringActivity extends Activity implements OnC return score; } + public boolean isAndromeda() { + return mAndromeda; + } + @Override public void onClick(View view) { if (view == mMeasureCompositionButton) { @@ -247,6 +250,9 @@ public class SurfaceCompositionMeasuringActivity extends Activity implements OnC getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + // Detect Andromeda devices by having free-form window management feature. + mAndromeda = getPackageManager().hasSystemFeature( + PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT); detectRefreshRate(); // To layouts in parent. First contains list of Surfaces and second @@ -513,7 +519,8 @@ public class SurfaceCompositionMeasuringActivity extends Activity implements OnC } MemoryInfo memInfo = getMemoryInfo(); - String info = "Available " + + String platformName = mAndromeda ? "Andromeda" : "Android"; + String info = platformName + ": available " + getReadableMemory(memInfo.availMem) + " from " + getReadableMemory(memInfo.totalMem) + ".\nVisible " + visibleCnt + " from " + mViews.size() + " " + diff --git a/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionTest.java b/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionTest.java index 3f04888da637..388f91a2c3fb 100644 --- a/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionTest.java +++ b/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionTest.java @@ -17,6 +17,7 @@ package android.surfacecomposition; import android.app.Activity; import android.graphics.PixelFormat; +import android.os.Build; import android.os.Bundle; import android.surfacecomposition.SurfaceCompositionMeasuringActivity.AllocationScore; import android.surfacecomposition.SurfaceCompositionMeasuringActivity.CompositorScore; @@ -44,11 +45,16 @@ public class SurfaceCompositionTest extends PixelFormat.OPAQUE, }; - // Based on Nexus 9 performance which is usually < 9.0. - private final static double[] MIN_ACCEPTED_COMPOSITION_SCORE = new double[] { + // Nexus 9 performance is around 8.8. We distinguish results for Andromeda and + // Android devices. Andromeda devices require higher performance score. + private final static double[] MIN_ACCEPTED_COMPOSITION_SCORE_ANDROMDEDA = new double[] { 8.0, 8.0, }; + private final static double[] MIN_ACCEPTED_COMPOSITION_SCORE_ANDROID = new double[] { + 4.0, + 4.0, + }; // Based on Nexus 6 performance which is usually < 28.0. private final static double[] MIN_ACCEPTED_ALLOCATION_SCORE = new double[] { @@ -66,6 +72,8 @@ public class SurfaceCompositionTest extends @SmallTest public void testSurfaceCompositionPerformance() { Bundle status = new Bundle(); + double[] minScores = getActivity().isAndromeda() ? + MIN_ACCEPTED_COMPOSITION_SCORE_ANDROMDEDA : MIN_ACCEPTED_COMPOSITION_SCORE_ANDROID; for (int i = 0; i < TEST_PIXEL_FORMATS.length; ++i) { int pixelFormat = TEST_PIXEL_FORMATS[i]; String formatName = SurfaceCompositionMeasuringActivity.getPixelFormatInfo(pixelFormat); @@ -73,8 +81,8 @@ public class SurfaceCompositionTest extends Log.i(TAG, "testSurfaceCompositionPerformance(" + formatName + ") = " + score); assertTrue("Device does not support surface(" + formatName + ") composition " + "performance score. " + score.mSurfaces + " < " + - MIN_ACCEPTED_COMPOSITION_SCORE[i] + ".", - score.mSurfaces >= MIN_ACCEPTED_COMPOSITION_SCORE[i]); + minScores[i] + ". Build: " + Build.FINGERPRINT + ".", + score.mSurfaces >= minScores[i]); // Send status only for TRANSLUCENT format. if (pixelFormat == PixelFormat.TRANSLUCENT) { status.putDouble(KEY_SURFACE_COMPOSITION_PERFORMANCE, score.mSurfaces); @@ -96,7 +104,8 @@ public class SurfaceCompositionTest extends Log.i(TAG, "testSurfaceAllocationPerformance(" + formatName + ") = " + score); assertTrue("Device does not support surface(" + formatName + ") allocation " + "performance score. " + score.mMedian + " < " + - MIN_ACCEPTED_ALLOCATION_SCORE[i] + ".", + MIN_ACCEPTED_ALLOCATION_SCORE[i] + ". Build: " + + Build.FINGERPRINT + ".", score.mMedian >= MIN_ACCEPTED_ALLOCATION_SCORE[i]); // Send status only for TRANSLUCENT format. if (pixelFormat == PixelFormat.TRANSLUCENT) { |