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--) {
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) {

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
* 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);
} else {
t.apply();
}
}
}

View File

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

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