Loading apct-tests/perftests/core/src/android/graphics/perftests/RenderNodePerfTest.java +5 −7 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package android.graphics.perftests; import android.graphics.Outline; import android.graphics.RecordingCanvas; import android.graphics.RenderNode; import android.perftests.utils.BenchmarkState; import android.perftests.utils.PerfStatusReporter; Loading Loading @@ -62,7 +61,7 @@ public class RenderNodePerfTest { final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); RenderNode node = RenderNode.create("LinearLayout", null); while (state.keepRunning()) { node.isValid(); node.hasDisplayList(); } } Loading @@ -71,8 +70,8 @@ public class RenderNodePerfTest { final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); RenderNode node = RenderNode.create("LinearLayout", null); while (state.keepRunning()) { RecordingCanvas canvas = node.start(100, 100); node.end(canvas); node.startRecording(100, 100); node.endRecording(); } } Loading @@ -80,17 +79,16 @@ public class RenderNodePerfTest { public void testStartEndDeepHierarchy() { final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); RenderNode[] nodes = new RenderNode[30]; RecordingCanvas[] canvases = new RecordingCanvas[nodes.length]; for (int i = 0; i < nodes.length; i++) { nodes[i] = RenderNode.create("LinearLayout", null); } while (state.keepRunning()) { for (int i = 0; i < nodes.length; i++) { canvases[i] = nodes[i].start(100, 100); nodes[i].startRecording(100, 100); } for (int i = nodes.length - 1; i >= 0; i--) { nodes[i].end(canvases[i]); nodes[i].endRecording(); } } } Loading apct-tests/perftests/core/src/android/view/ViewShowHidePerfTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -155,7 +155,7 @@ public class ViewShowHidePerfTest { } private void updateAndValidateDisplayList(View view) { boolean hasDisplayList = view.updateDisplayListIfDirty().isValid(); boolean hasDisplayList = view.updateDisplayListIfDirty().hasDisplayList(); assertTrue(hasDisplayList); } Loading core/java/android/view/GhostView.java +1 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ public class GhostView extends View { RecordingCanvas dlCanvas = (RecordingCanvas) canvas; mView.mRecreateDisplayList = true; RenderNode renderNode = mView.updateDisplayListIfDirty(); if (renderNode.isValid()) { if (renderNode.hasDisplayList()) { dlCanvas.insertReorderBarrier(); // enable shadow for this rendernode dlCanvas.drawRenderNode(renderNode); dlCanvas.insertInorderBarrier(); // re-disable reordering/shadows Loading core/java/android/view/ThreadedRenderer.java +2 −2 Original line number Diff line number Diff line Loading @@ -694,7 +694,7 @@ public final class ThreadedRenderer { Trace.traceBegin(Trace.TRACE_TAG_VIEW, "Record View#draw()"); updateViewTreeDisplayList(view); if (mRootNodeNeedsUpdate || !mRootNode.isValid()) { if (mRootNodeNeedsUpdate || !mRootNode.hasDisplayList()) { RecordingCanvas canvas = mRootNode.start(mSurfaceWidth, mSurfaceHeight); try { final int saveCount = canvas.save(); Loading Loading @@ -857,7 +857,7 @@ public final class ThreadedRenderer { void buildLayer(RenderNode node) { if (node.isValid()) { if (node.hasDisplayList()) { nBuildLayer(mNativeProxy, node.mNativeRenderNode); } } Loading core/java/android/view/View.java +10 −10 Original line number Diff line number Diff line Loading @@ -16658,7 +16658,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, @UnsupportedAppUsage void invalidateViewProperty(boolean invalidateParent, boolean forceRedraw) { if (!isHardwareAccelerated() || !mRenderNode.isValid() || !mRenderNode.hasDisplayList() || (mPrivateFlags & PFLAG_DRAW_ANIMATION) != 0) { if (invalidateParent) { invalidateParentCaches(); Loading Loading @@ -19047,7 +19047,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, switch (mLayerType) { case LAYER_TYPE_HARDWARE: updateDisplayListIfDirty(); if (attachInfo.mThreadedRenderer != null && mRenderNode.isValid()) { if (attachInfo.mThreadedRenderer != null && mRenderNode.hasDisplayList()) { attachInfo.mThreadedRenderer.buildLayer(mRenderNode); } break; Loading Loading @@ -19214,11 +19214,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } if ((mPrivateFlags & PFLAG_DRAWING_CACHE_VALID) == 0 || !renderNode.isValid() || !renderNode.hasDisplayList() || (mRecreateDisplayList)) { // Don't need to recreate the display list, just need to tell our // children to restore/recreate theirs if (renderNode.isValid() if (renderNode.hasDisplayList() && !mRecreateDisplayList) { mPrivateFlags |= PFLAG_DRAWN | PFLAG_DRAWING_CACHE_VALID; mPrivateFlags &= ~PFLAG_DIRTY_MASK; Loading @@ -19235,7 +19235,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, int height = mBottom - mTop; int layerType = getLayerType(); final RecordingCanvas canvas = renderNode.start(width, height); final RecordingCanvas canvas = renderNode.startRecording(width, height); try { if (layerType == LAYER_TYPE_SOFTWARE) { Loading Loading @@ -19266,7 +19266,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } } } finally { renderNode.end(canvas); renderNode.endRecording(); setDisplayListProperties(renderNode); } } else { Loading Loading @@ -20118,7 +20118,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // Delay getting the display list until animation-driven alpha values are // set up and possibly passed on to the view renderNode = updateDisplayListIfDirty(); if (!renderNode.isValid()) { if (!renderNode.hasDisplayList()) { // Uncommon, but possible. If a view is removed from the hierarchy during the call // to getDisplayList(), the display list will be marked invalid and we should not // try to use it again. Loading Loading @@ -20581,7 +20581,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mBackgroundRenderNode = getDrawableRenderNode(background, mBackgroundRenderNode); final RenderNode renderNode = mBackgroundRenderNode; if (renderNode != null && renderNode.isValid()) { if (renderNode != null && renderNode.hasDisplayList()) { setBackgroundRenderNodeProperties(renderNode); ((RecordingCanvas) canvas).drawRenderNode(renderNode); return; Loading Loading @@ -20635,7 +20635,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, final Rect bounds = drawable.getBounds(); final int width = bounds.width(); final int height = bounds.height(); final RecordingCanvas canvas = renderNode.start(width, height); final RecordingCanvas canvas = renderNode.startRecording(width, height); // Reverse left/top translation done by drawable canvas, which will // instead be applied by rendernode's LTRB bounds below. This way, the Loading @@ -20646,7 +20646,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, try { drawable.draw(canvas); } finally { renderNode.end(canvas); renderNode.endRecording(); } // Set up drawable properties that are view-independent. Loading
apct-tests/perftests/core/src/android/graphics/perftests/RenderNodePerfTest.java +5 −7 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package android.graphics.perftests; import android.graphics.Outline; import android.graphics.RecordingCanvas; import android.graphics.RenderNode; import android.perftests.utils.BenchmarkState; import android.perftests.utils.PerfStatusReporter; Loading Loading @@ -62,7 +61,7 @@ public class RenderNodePerfTest { final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); RenderNode node = RenderNode.create("LinearLayout", null); while (state.keepRunning()) { node.isValid(); node.hasDisplayList(); } } Loading @@ -71,8 +70,8 @@ public class RenderNodePerfTest { final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); RenderNode node = RenderNode.create("LinearLayout", null); while (state.keepRunning()) { RecordingCanvas canvas = node.start(100, 100); node.end(canvas); node.startRecording(100, 100); node.endRecording(); } } Loading @@ -80,17 +79,16 @@ public class RenderNodePerfTest { public void testStartEndDeepHierarchy() { final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); RenderNode[] nodes = new RenderNode[30]; RecordingCanvas[] canvases = new RecordingCanvas[nodes.length]; for (int i = 0; i < nodes.length; i++) { nodes[i] = RenderNode.create("LinearLayout", null); } while (state.keepRunning()) { for (int i = 0; i < nodes.length; i++) { canvases[i] = nodes[i].start(100, 100); nodes[i].startRecording(100, 100); } for (int i = nodes.length - 1; i >= 0; i--) { nodes[i].end(canvases[i]); nodes[i].endRecording(); } } } Loading
apct-tests/perftests/core/src/android/view/ViewShowHidePerfTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -155,7 +155,7 @@ public class ViewShowHidePerfTest { } private void updateAndValidateDisplayList(View view) { boolean hasDisplayList = view.updateDisplayListIfDirty().isValid(); boolean hasDisplayList = view.updateDisplayListIfDirty().hasDisplayList(); assertTrue(hasDisplayList); } Loading
core/java/android/view/GhostView.java +1 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ public class GhostView extends View { RecordingCanvas dlCanvas = (RecordingCanvas) canvas; mView.mRecreateDisplayList = true; RenderNode renderNode = mView.updateDisplayListIfDirty(); if (renderNode.isValid()) { if (renderNode.hasDisplayList()) { dlCanvas.insertReorderBarrier(); // enable shadow for this rendernode dlCanvas.drawRenderNode(renderNode); dlCanvas.insertInorderBarrier(); // re-disable reordering/shadows Loading
core/java/android/view/ThreadedRenderer.java +2 −2 Original line number Diff line number Diff line Loading @@ -694,7 +694,7 @@ public final class ThreadedRenderer { Trace.traceBegin(Trace.TRACE_TAG_VIEW, "Record View#draw()"); updateViewTreeDisplayList(view); if (mRootNodeNeedsUpdate || !mRootNode.isValid()) { if (mRootNodeNeedsUpdate || !mRootNode.hasDisplayList()) { RecordingCanvas canvas = mRootNode.start(mSurfaceWidth, mSurfaceHeight); try { final int saveCount = canvas.save(); Loading Loading @@ -857,7 +857,7 @@ public final class ThreadedRenderer { void buildLayer(RenderNode node) { if (node.isValid()) { if (node.hasDisplayList()) { nBuildLayer(mNativeProxy, node.mNativeRenderNode); } } Loading
core/java/android/view/View.java +10 −10 Original line number Diff line number Diff line Loading @@ -16658,7 +16658,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, @UnsupportedAppUsage void invalidateViewProperty(boolean invalidateParent, boolean forceRedraw) { if (!isHardwareAccelerated() || !mRenderNode.isValid() || !mRenderNode.hasDisplayList() || (mPrivateFlags & PFLAG_DRAW_ANIMATION) != 0) { if (invalidateParent) { invalidateParentCaches(); Loading Loading @@ -19047,7 +19047,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, switch (mLayerType) { case LAYER_TYPE_HARDWARE: updateDisplayListIfDirty(); if (attachInfo.mThreadedRenderer != null && mRenderNode.isValid()) { if (attachInfo.mThreadedRenderer != null && mRenderNode.hasDisplayList()) { attachInfo.mThreadedRenderer.buildLayer(mRenderNode); } break; Loading Loading @@ -19214,11 +19214,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } if ((mPrivateFlags & PFLAG_DRAWING_CACHE_VALID) == 0 || !renderNode.isValid() || !renderNode.hasDisplayList() || (mRecreateDisplayList)) { // Don't need to recreate the display list, just need to tell our // children to restore/recreate theirs if (renderNode.isValid() if (renderNode.hasDisplayList() && !mRecreateDisplayList) { mPrivateFlags |= PFLAG_DRAWN | PFLAG_DRAWING_CACHE_VALID; mPrivateFlags &= ~PFLAG_DIRTY_MASK; Loading @@ -19235,7 +19235,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, int height = mBottom - mTop; int layerType = getLayerType(); final RecordingCanvas canvas = renderNode.start(width, height); final RecordingCanvas canvas = renderNode.startRecording(width, height); try { if (layerType == LAYER_TYPE_SOFTWARE) { Loading Loading @@ -19266,7 +19266,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } } } finally { renderNode.end(canvas); renderNode.endRecording(); setDisplayListProperties(renderNode); } } else { Loading Loading @@ -20118,7 +20118,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // Delay getting the display list until animation-driven alpha values are // set up and possibly passed on to the view renderNode = updateDisplayListIfDirty(); if (!renderNode.isValid()) { if (!renderNode.hasDisplayList()) { // Uncommon, but possible. If a view is removed from the hierarchy during the call // to getDisplayList(), the display list will be marked invalid and we should not // try to use it again. Loading Loading @@ -20581,7 +20581,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mBackgroundRenderNode = getDrawableRenderNode(background, mBackgroundRenderNode); final RenderNode renderNode = mBackgroundRenderNode; if (renderNode != null && renderNode.isValid()) { if (renderNode != null && renderNode.hasDisplayList()) { setBackgroundRenderNodeProperties(renderNode); ((RecordingCanvas) canvas).drawRenderNode(renderNode); return; Loading Loading @@ -20635,7 +20635,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, final Rect bounds = drawable.getBounds(); final int width = bounds.width(); final int height = bounds.height(); final RecordingCanvas canvas = renderNode.start(width, height); final RecordingCanvas canvas = renderNode.startRecording(width, height); // Reverse left/top translation done by drawable canvas, which will // instead be applied by rendernode's LTRB bounds below. This way, the Loading @@ -20646,7 +20646,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, try { drawable.draw(canvas); } finally { renderNode.end(canvas); renderNode.endRecording(); } // Set up drawable properties that are view-independent.