Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 393fdbec authored by John Reck's avatar John Reck Committed by Android (Google) Code Review
Browse files

Merge "Remove overdraw counter"

parents 9f97de13 593b19a4
Loading
Loading
Loading
Loading
+0 −12
Original line number Diff line number Diff line
@@ -284,18 +284,6 @@ class GLES20Canvas extends HardwareCanvas {

    private static native int nGetStencilSize();

    void setCountOverdrawEnabled(boolean enabled) {
        nSetCountOverdrawEnabled(mRenderer, enabled);
    }

    static native void nSetCountOverdrawEnabled(long renderer, boolean enabled);

    float getOverdraw() {
        return nGetOverdraw(mRenderer);
    }

    static native float nGetOverdraw(long renderer);

    ///////////////////////////////////////////////////////////////////////////
    // Functor
    ///////////////////////////////////////////////////////////////////////////
+0 −70
Original line number Diff line number Diff line
@@ -109,9 +109,7 @@ public class GLRenderer extends HardwareRenderer {

    private static final String[] OVERDRAW = {
            OVERDRAW_PROPERTY_SHOW,
            OVERDRAW_PROPERTY_COUNT
    };
    private static final int OVERDRAW_TYPE_COUNT = 1;
    private static final int GL_VERSION = 2;

    static EGL10 sEgl;
@@ -160,8 +158,6 @@ public class GLRenderer extends HardwareRenderer {

    boolean mDebugDirtyRegions;
    int mDebugOverdraw = -1;
    HardwareLayer mDebugOverdrawLayer;
    Paint mDebugOverdrawPaint;

    final boolean mTranslucent;

@@ -495,14 +491,6 @@ public class GLRenderer extends HardwareRenderer {
        return new GLES20RenderLayer(width, height, isOpaque);
    }

    void countOverdraw(HardwareCanvas canvas) {
        ((GLES20Canvas) canvas).setCountOverdrawEnabled(true);
    }

    float getOverdraw(HardwareCanvas canvas) {
        return ((GLES20Canvas) canvas).getOverdraw();
    }

    @Override
    public SurfaceTexture createSurfaceTexture(HardwareLayer layer) {
        return ((GLES20TextureLayer) layer).getSurfaceTexture();
@@ -706,14 +694,6 @@ public class GLRenderer extends HardwareRenderer {
        if (debugOverdraw != mDebugOverdraw) {
            changed = true;
            mDebugOverdraw = debugOverdraw;

            if (mDebugOverdraw != OVERDRAW_TYPE_COUNT) {
                if (mDebugOverdrawLayer != null) {
                    mDebugOverdrawLayer.destroy();
                    mDebugOverdrawLayer = null;
                    mDebugOverdrawPaint = null;
                }
            }
        }

        if (loadProperties()) {
@@ -1182,7 +1162,6 @@ public class GLRenderer extends HardwareRenderer {
                    if (mDrawDelta > 0) {
                        mFrameCount++;

                        debugOverdraw(attachInfo, dirty, canvas, displayList);
                        debugDirtyRegions(dirty, canvas);
                        drawProfileData(attachInfo);
                    }
@@ -1201,55 +1180,6 @@ public class GLRenderer extends HardwareRenderer {
        }
    }

    private void debugOverdraw(View.AttachInfo attachInfo, Rect dirty,
            HardwareCanvas canvas, DisplayList displayList) {

        if (mDebugOverdraw == OVERDRAW_TYPE_COUNT) {
            if (mDebugOverdrawLayer == null) {
                mDebugOverdrawLayer = createHardwareLayer(mWidth, mHeight, true);
            } else if (mDebugOverdrawLayer.getWidth() != mWidth ||
                    mDebugOverdrawLayer.getHeight() != mHeight) {
                mDebugOverdrawLayer.resize(mWidth, mHeight);
            }

            if (!mDebugOverdrawLayer.isValid()) {
                mDebugOverdraw = -1;
                return;
            }

            HardwareCanvas layerCanvas = mDebugOverdrawLayer.start(canvas, dirty);
            countOverdraw(layerCanvas);
            final int restoreCount = layerCanvas.save();
            layerCanvas.drawDisplayList(displayList, null, DisplayList.FLAG_CLIP_CHILDREN);
            layerCanvas.restoreToCount(restoreCount);
            mDebugOverdrawLayer.end(canvas);

            float overdraw = getOverdraw(layerCanvas);
            DisplayMetrics metrics = attachInfo.mRootView.getResources().getDisplayMetrics();

            drawOverdrawCounter(canvas, overdraw, metrics.density);
        }
    }

    private void drawOverdrawCounter(HardwareCanvas canvas, float overdraw, float density) {
        final String text = String.format("%.2fx", overdraw);
        final Paint paint = setupPaint(density);
        // HSBtoColor will clamp the values in the 0..1 range
        paint.setColor(Color.HSBtoColor(0.28f - 0.28f * overdraw / 3.5f, 0.8f, 1.0f));

        canvas.drawText(text, density * 4.0f, mHeight - paint.getFontMetrics().bottom, paint);
    }

    private Paint setupPaint(float density) {
        if (mDebugOverdrawPaint == null) {
            mDebugOverdrawPaint = new Paint();
            mDebugOverdrawPaint.setAntiAlias(true);
            mDebugOverdrawPaint.setShadowLayer(density * 3.0f, 0.0f, 0.0f, 0xff000000);
            mDebugOverdrawPaint.setTextSize(density * 20.0f);
        }
        return mDebugOverdrawPaint;
    }

    private DisplayList buildDisplayList(View view, HardwareCanvas canvas) {
        if (mDrawDelta <= 0) {
            return view.mDisplayList;
+0 −8
Original line number Diff line number Diff line
@@ -152,14 +152,6 @@ public abstract class HardwareRenderer {
     */
    public static final String OVERDRAW_PROPERTY_SHOW = "show";

    /**
     * Value for {@link #DEBUG_OVERDRAW_PROPERTY}. When the property is set to this
     * value, an overdraw counter will be shown on screen.
     *
     * @hide
     */
    public static final String OVERDRAW_PROPERTY_COUNT = "count";

    /**
     * Turn on to debug non-rectangular clip operations.
     *
+0 −14
Original line number Diff line number Diff line
@@ -197,18 +197,6 @@ static void android_view_GLES20Canvas_setProperty(JNIEnv* env,
    env->ReleaseStringUTFChars(name, valueCharArray);
}

static void android_view_GLES20Canvas_setCountOverdrawEnabled(JNIEnv* env, jobject clazz,
        jlong rendererPtr, jboolean enabled) {
    OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererPtr);
    renderer->setCountOverdrawEnabled(enabled);
}

static jfloat android_view_GLES20Canvas_getOverdraw(JNIEnv* env, jobject clazz,
        jlong rendererPtr) {
    OpenGLRenderer* renderer = reinterpret_cast<OpenGLRenderer*>(rendererPtr);
    return renderer->getOverdraw();
}

// ----------------------------------------------------------------------------
// Functor
// ----------------------------------------------------------------------------
@@ -1176,8 +1164,6 @@ static JNINativeMethod gMethods[] = {
    { "nSetProperty",           "(Ljava/lang/String;Ljava/lang/String;)V",
            (void*) android_view_GLES20Canvas_setProperty },

    { "nSetCountOverdrawEnabled", "(JZ)V",     (void*) android_view_GLES20Canvas_setCountOverdrawEnabled },
    { "nGetOverdraw",             "(J)F",      (void*) android_view_GLES20Canvas_getOverdraw },

    { "nGetStencilSize",    "()I",             (void*) android_view_GLES20Canvas_getStencilSize },