From 2b0b88aa53b0d75e6a32003d98ac14b113b58915 Mon Sep 17 00:00:00 2001 From: Robert Carr Date: Fri, 15 Jan 2021 12:27:52 -0800 Subject: [PATCH] SyncRtSurfaceTransactionApplier: Use BLASTSync Helps us down the path of deprecating deferred transaction. BLASTSync should also be easier to debug and produce less overhead on the server. Bug: 168505645 Test: Existing tests pass Change-Id: I7447b54d93ee8db0c5b6307372ee91e08c489af4 --- .../android/view/SyncRtSurfaceTransactionApplier.java | 9 +++++---- core/java/android/view/ViewRootImpl.java | 2 +- .../system/SyncRtSurfaceTransactionApplierCompat.java | 7 +++++-- .../systemui/shared/system/ViewRootImplCompat.java | 8 ++++++++ 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/core/java/android/view/SyncRtSurfaceTransactionApplier.java b/core/java/android/view/SyncRtSurfaceTransactionApplier.java index b10370aa5d4cd..acbcbfad1a750 100644 --- a/core/java/android/view/SyncRtSurfaceTransactionApplier.java +++ b/core/java/android/view/SyncRtSurfaceTransactionApplier.java @@ -85,12 +85,13 @@ public class SyncRtSurfaceTransactionApplier { for (int i = params.length - 1; i >= 0; i--) { SurfaceParams surfaceParams = params[i]; SurfaceControl surface = surfaceParams.surface; - if (frame > 0) { - t.deferTransactionUntil(surface, mTargetSc, frame); - } applyParams(t, surfaceParams, mTmpFloat9); } - t.apply(); + if (mTargetViewRootImpl != null) { + mTargetViewRootImpl.mergeWithNextTransaction(t, frame); + } else { + t.apply(); + } } public static void applyParams(Transaction t, SurfaceParams params, float[] tmpFloat9) { diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 844fc267c3cb3..52d0062abdf2c 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -10109,7 +10109,7 @@ public final class ViewRootImpl implements ViewParent, * Merges the transaction passed in with the next transaction in BLASTBufferQueue. This ensures * you can add transactions to the upcoming frame. */ - void mergeWithNextTransaction(Transaction t, long frameNumber) { + public void mergeWithNextTransaction(Transaction t, long frameNumber) { if (mBlastBufferQueue != null) { mBlastBufferQueue.mergeWithNextTransaction(t, frameNumber); } diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java index 70021b6f3d455..fbabaa489d74d 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java @@ -114,10 +114,13 @@ public class SyncRtSurfaceTransactionApplierCompat { for (int i = params.length - 1; i >= 0; i--) { SyncRtSurfaceTransactionApplierCompat.SurfaceParams surfaceParams = params[i]; - t.deferTransactionUntil(surfaceParams.surface, mBarrierSurfaceControl, frame); surfaceParams.applyTo(t); } - t.apply(); + if (mTargetViewRootImpl != null) { + mTargetViewRootImpl.mergeWithNextTransaction(t, frame); + } else { + t.apply(); + } Trace.traceEnd(Trace.TRACE_TAG_VIEW); Message.obtain(mApplyHandler, MSG_UPDATE_SEQUENCE_NUMBER, toApplySeqNo, 0) .sendToTarget(); diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ViewRootImplCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ViewRootImplCompat.java index 4a28d56a41e18..89c60f1d3f067 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ViewRootImplCompat.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ViewRootImplCompat.java @@ -56,4 +56,12 @@ public class ViewRootImplCompat { }); } } + + public void mergeWithNextTransaction(SurfaceControl.Transaction t, long frame) { + if (mViewRoot != null) { + mViewRoot.mergeWithNextTransaction(t, frame); + } else { + t.apply(); + } + } }