summaryrefslogtreecommitdiff
path: root/core/java/android/view/HardwareRenderer.java
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2013-01-07 10:58:34 -0800
committerRomain Guy <romainguy@google.com>2013-01-07 10:58:34 -0800
commit98e4a52cc0994c67343e33ec251d6d8b83c528bc (patch)
treecc3f3370602e2225a26fa9d8c9d3ee3428c4a149 /core/java/android/view/HardwareRenderer.java
parent63f4d84ec2e9258726093bb435d6549fe63a053e (diff)
Use dp units instead of px to draw profiling graph
Change-Id: Iba24b21ebe46738c6b1d6d320ce34af71f7c769d
Diffstat (limited to 'core/java/android/view/HardwareRenderer.java')
-rw-r--r--core/java/android/view/HardwareRenderer.java49
1 files changed, 31 insertions, 18 deletions
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index 4912a649cf97..3eaa59e414ae 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -29,6 +29,7 @@ import android.os.Looper;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.Trace;
+import android.util.DisplayMetrics;
import android.util.Log;
import com.google.android.gles_jni.EGLImpl;
@@ -1241,7 +1242,7 @@ public abstract class HardwareRenderer {
mFrameCount++;
debugDirtyRegions(dirty, canvas);
- drawProfileData();
+ drawProfileData(attachInfo);
}
onPostDraw();
@@ -1260,7 +1261,7 @@ public abstract class HardwareRenderer {
return false;
}
- abstract void drawProfileData();
+ abstract void drawProfileData(View.AttachInfo attachInfo);
private Rect beginFrame(HardwareCanvas canvas, Rect dirty, int surfaceState) {
// We had to change the current surface and/or context, redraw everything
@@ -1465,15 +1466,17 @@ public abstract class HardwareRenderer {
static class Gl20Renderer extends GlRenderer {
// TODO: Convert dimensions to dp instead of px
private static final int PROFILE_DRAW_MARGIN = 0;
- private static final int PROFILE_DRAW_WIDTH = 4;
+ private static final int PROFILE_DRAW_WIDTH = 3;
private static final int[] PROFILE_DRAW_COLORS = { 0xcf3e66cc, 0xcfdc3912, 0xcfe69800 };
private static final int PROFILE_DRAW_CURRENT_FRAME_COLOR = 0xcf5faa4d;
private static final int PROFILE_DRAW_THRESHOLD_COLOR = 0xff5faa4d;
private static final int PROFILE_DRAW_THRESHOLD_STROKE_WIDTH = 2;
- private static final int PROFILE_DRAW_PX_PER_MS = 10;
+ private static final int PROFILE_DRAW_PX_PER_MS = 7;
private GLES20Canvas mGlCanvas;
+ private DisplayMetrics mDisplayMetrics;
+
private static EGLSurface sPbuffer;
private static final Object[] sPbufferLock = new Object[0];
@@ -1577,9 +1580,13 @@ public abstract class HardwareRenderer {
}
@Override
- void drawProfileData() {
+ void drawProfileData(View.AttachInfo attachInfo) {
if (mProfileEnabled && mProfileVisualizerEnabled) {
- initProfileDrawData();
+ initProfileDrawData(attachInfo);
+
+ final int pxPerMs = (int) (PROFILE_DRAW_PX_PER_MS * mDisplayMetrics.density + 0.5f);
+ final int margin = (int) (PROFILE_DRAW_MARGIN * mDisplayMetrics.density + 0.5f);
+ final int width = (int) (PROFILE_DRAW_WIDTH * mDisplayMetrics.density + 0.5f);
int x = 0;
int count = 0;
@@ -1591,11 +1598,11 @@ public abstract class HardwareRenderer {
int index = count * 4;
if (i == mProfileCurrentFrame) current = index;
- x += PROFILE_DRAW_MARGIN;
- int x2 = x + PROFILE_DRAW_WIDTH;
+ x += margin;
+ int x2 = x + width;
int y2 = mHeight;
- int y1 = (int) (y2 - mProfileData[i] * PROFILE_DRAW_PX_PER_MS);
+ int y1 = (int) (y2 - mProfileData[i] * pxPerMs);
float[] r = mProfileRects[0];
r[index] = x;
@@ -1604,7 +1611,7 @@ public abstract class HardwareRenderer {
r[index + 3] = y2;
y2 = y1;
- y1 = (int) (y2 - mProfileData[i + 1] * PROFILE_DRAW_PX_PER_MS);
+ y1 = (int) (y2 - mProfileData[i + 1] * pxPerMs);
r = mProfileRects[1];
r[index] = x;
@@ -1613,7 +1620,7 @@ public abstract class HardwareRenderer {
r[index + 3] = y2;
y2 = y1;
- y1 = (int) (y2 - mProfileData[i + 2] * PROFILE_DRAW_PX_PER_MS);
+ y1 = (int) (y2 - mProfileData[i + 2] * pxPerMs);
r = mProfileRects[2];
r[index] = x;
@@ -1621,15 +1628,15 @@ public abstract class HardwareRenderer {
r[index + 2] = x2;
r[index + 3] = y2;
- x += PROFILE_DRAW_WIDTH;
+ x += width;
count++;
}
- x += PROFILE_DRAW_MARGIN;
+ x += margin;
drawGraph(count);
drawCurrentFrame(current);
- drawThreshold(x);
+ drawThreshold(x, pxPerMs);
}
}
@@ -1646,15 +1653,16 @@ public abstract class HardwareRenderer {
mProfileRects[2][index + 2], mProfileRects[0][index + 3], mProfilePaint);
}
- private void drawThreshold(int x) {
+ private void drawThreshold(int x, int pxPerMs) {
mProfilePaint.setColor(PROFILE_DRAW_THRESHOLD_COLOR);
- mProfilePaint.setStrokeWidth(PROFILE_DRAW_THRESHOLD_STROKE_WIDTH);
- int y = mHeight - 16 * 10;
+ mProfilePaint.setStrokeWidth((int)
+ (PROFILE_DRAW_THRESHOLD_STROKE_WIDTH * mDisplayMetrics.density + 0.5f));
+ int y = mHeight - 16 * pxPerMs;
mGlCanvas.drawLine(0.0f, y, x, y, mProfilePaint);
mProfilePaint.setStrokeWidth(1.0f);
}
- private void initProfileDrawData() {
+ private void initProfileDrawData(View.AttachInfo attachInfo) {
if (mProfileRects == null) {
mProfileRects = new float[PROFILE_FRAME_DATA_COUNT][];
for (int i = 0; i < mProfileRects.length; i++) {
@@ -1663,6 +1671,11 @@ public abstract class HardwareRenderer {
}
mProfilePaint = new Paint();
}
+
+ if (mDisplayMetrics == null) {
+ mDisplayMetrics = new DisplayMetrics();
+ }
+ attachInfo.mDisplay.getMetrics(mDisplayMetrics);
}
@Override