Merge "SyncRtSurfaceTransactionApplier: Use BLASTSync" into sc-dev

This commit is contained in:
Rob Carr
2021-02-09 03:01:13 +00:00
committed by Android (Google) Code Review
4 changed files with 21 additions and 7 deletions

View File

@@ -85,12 +85,13 @@ public class SyncRtSurfaceTransactionApplier {
for (int i = params.length - 1; i >= 0; i--) { for (int i = params.length - 1; i >= 0; i--) {
SurfaceParams surfaceParams = params[i]; SurfaceParams surfaceParams = params[i];
SurfaceControl surface = surfaceParams.surface; SurfaceControl surface = surfaceParams.surface;
if (frame > 0) {
t.deferTransactionUntil(surface, mTargetSc, frame);
}
applyParams(t, surfaceParams, mTmpFloat9); 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) { public static void applyParams(Transaction t, SurfaceParams params, float[] tmpFloat9) {

View File

@@ -10137,9 +10137,11 @@ public final class ViewRootImpl implements ViewParent,
* Merges the transaction passed in with the next transaction in BLASTBufferQueue. This ensures * Merges the transaction passed in with the next transaction in BLASTBufferQueue. This ensures
* you can add transactions to the upcoming frame. * you can add transactions to the upcoming frame.
*/ */
void mergeWithNextTransaction(Transaction t, long frameNumber) { public void mergeWithNextTransaction(Transaction t, long frameNumber) {
if (mBlastBufferQueue != null) { if (mBlastBufferQueue != null) {
mBlastBufferQueue.mergeWithNextTransaction(t, frameNumber); mBlastBufferQueue.mergeWithNextTransaction(t, frameNumber);
} else {
t.apply();
} }
} }
} }

View File

@@ -114,10 +114,13 @@ public class SyncRtSurfaceTransactionApplierCompat {
for (int i = params.length - 1; i >= 0; i--) { for (int i = params.length - 1; i >= 0; i--) {
SyncRtSurfaceTransactionApplierCompat.SurfaceParams surfaceParams = SyncRtSurfaceTransactionApplierCompat.SurfaceParams surfaceParams =
params[i]; params[i];
t.deferTransactionUntil(surfaceParams.surface, mBarrierSurfaceControl, frame);
surfaceParams.applyTo(t); surfaceParams.applyTo(t);
} }
t.apply(); if (mTargetViewRootImpl != null) {
mTargetViewRootImpl.mergeWithNextTransaction(t, frame);
} else {
t.apply();
}
Trace.traceEnd(Trace.TRACE_TAG_VIEW); Trace.traceEnd(Trace.TRACE_TAG_VIEW);
Message.obtain(mApplyHandler, MSG_UPDATE_SEQUENCE_NUMBER, toApplySeqNo, 0) Message.obtain(mApplyHandler, MSG_UPDATE_SEQUENCE_NUMBER, toApplySeqNo, 0)
.sendToTarget(); .sendToTarget();

View File

@@ -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();
}
}
} }