diff options
author | Chet Haase <chet@google.com> | 2012-04-04 10:39:33 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-04-04 10:39:33 -0700 |
commit | 5e63d99ca5b292702d79ce3e144721710d7106db (patch) | |
tree | a9a2790b1c6986b13609db797afb67a77b0e578f | |
parent | 935a15ebed0e347667b9fe11e69b1a79df33569a (diff) | |
parent | 09280606dc5dc1b8f12f9317cf6922772b7d10a7 (diff) | |
download | frameworks_base-5e63d99ca5b292702d79ce3e144721710d7106db.zip frameworks_base-5e63d99ca5b292702d79ce3e144721710d7106db.tar.gz frameworks_base-5e63d99ca5b292702d79ce3e144721710d7106db.tar.bz2 |
Merge "Enhanced frame profiling from gfxinfo"
-rw-r--r-- | core/java/android/view/HardwareRenderer.java | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index 9ef2621..b8c692a 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -87,7 +87,7 @@ public abstract class HardwareRenderer { /** * System property used to enable or disable hardware rendering profiling. * The default value of this property is assumed to be false. - * + * * When profiling is enabled, the adb shell dumpsys gfxinfo command will * output extra information about the time taken to execute by the last * frames. @@ -99,6 +99,20 @@ public abstract class HardwareRenderer { static final String PROFILE_PROPERTY = "hwui.profile"; /** + * System property used to specify the number of frames to be used + * when doing hardware rendering profiling. + * The default value of this property is #PROFILE_MAX_FRAMES. + * + * When profiling is enabled, the adb shell dumpsys gfxinfo command will + * output extra information about the time taken to execute by the last + * frames. + * + * Possible values: + * "60", to set the limit of frames to 60 + */ + static final String PROFILE_MAXFRAMES_PROPERTY = "hwui.profile.maxframes"; + + /** * System property used to debug EGL configuration choice. * * Possible values: @@ -134,7 +148,7 @@ public abstract class HardwareRenderer { /** * Number of frames to profile. */ - private static final int PROFILE_MAX_FRAMES = 120; + private static final int PROFILE_MAX_FRAMES = 64; /** * Number of floats per profiled frame. @@ -579,7 +593,13 @@ public abstract class HardwareRenderer { } if (mProfileEnabled) { - mProfileData = new float[PROFILE_MAX_FRAMES * PROFILE_FRAME_DATA_COUNT]; + property = SystemProperties.get(PROFILE_MAXFRAMES_PROPERTY, + Integer.toString(PROFILE_MAX_FRAMES)); + int maxProfileFrames = Integer.valueOf(property); + mProfileData = new float[maxProfileFrames * PROFILE_FRAME_DATA_COUNT]; + for (int i = 0; i < mProfileData.length; i += PROFILE_FRAME_DATA_COUNT) { + mProfileData[i] = mProfileData[i + 1] = mProfileData[i + 2] = -1; + } } else { mProfileData = null; } @@ -596,9 +616,14 @@ public abstract class HardwareRenderer { if (mProfileEnabled) { pw.printf("\n\tDraw\tProcess\tExecute\n"); for (int i = 0; i < mProfileData.length; i += PROFILE_FRAME_DATA_COUNT) { + if (mProfileData[i] < 0) { + break; + } pw.printf("\t%3.2f\t%3.2f\t%3.2f\n", mProfileData[i], mProfileData[i + 1], mProfileData[i + 2]); + mProfileData[i] = mProfileData[i + 1] = mProfileData[i + 2] = -1; } + mProfileCurrentFrame = mProfileData.length; } } |