From b7039c6aa50d9ce413849d8c78600375035d6ba7 Mon Sep 17 00:00:00 2001 From: John Reck Date: Wed, 7 Jul 2021 19:18:34 -0400 Subject: [PATCH] Reduce number of weakrefs per frame Disable end-to-end input latency metric to reduce the number of JNI WeakGlobalRef acquires per-frame. Bug: 189738006 Test: Observe trace section no longer appears in calculator Change-Id: I062dad8e7cec93cca5599e51d2b0b1a1b6e39a07 --- core/java/android/view/ViewRootImpl.java | 9 ++++++++- libs/hwui/renderthread/CanvasContext.cpp | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 23faac6c07874..2bd2be12ca162 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -252,6 +252,13 @@ public final class ViewRootImpl implements ViewParent, */ private static final boolean MT_RENDERER_AVAILABLE = true; + /** + * Whether or not to report end-to-end input latency. Disabled temporarily as a + * risk mitigation against potential jank caused by acquiring a weak reference + * per frame + */ + private static final boolean ENABLE_INPUT_LATENCY_TRACKING = false; + /** * Set this system property to true to force the view hierarchy to render * at 60 Hz. This can be used to measure the potential framerate. @@ -1207,7 +1214,7 @@ public final class ViewRootImpl implements ViewParent, mInputEventReceiver = new WindowInputEventReceiver(inputChannel, Looper.myLooper()); - if (mAttachInfo.mThreadedRenderer != null) { + if (ENABLE_INPUT_LATENCY_TRACKING && mAttachInfo.mThreadedRenderer != null) { InputMetricsListener listener = new InputMetricsListener(); mHardwareRendererObserver = new HardwareRendererObserver( listener, listener.data, mHandler, true /*waitForPresentTime*/); diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 81cee6103d220..4dcd5af39ca58 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -644,6 +644,7 @@ void CanvasContext::reportMetricsWithPresentTime() { if (mNativeSurface == nullptr) { return; } + ATRACE_CALL(); FrameInfo* forthBehind; int64_t frameNumber; { // acquire lock