[sf] Trigger input updates in post composition
- Move input updates off the hotpath
- trigger transaction complete/release buffer callbacks a bit sooner.
Bug: 256882630
Test: presubmit
Test: perfetto traces
Change-Id: Ic3640bac6784d3e607268df3fe1605a8ef4a723e
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 0bdede8..3c5a3de 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -2517,8 +2517,6 @@
}
updateCursorAsync();
- updateInputFlinger();
-
if (mLayerTracingEnabled && !mLayerTracing.flagIsSet(LayerTracing::TRACE_COMPOSITION)) {
// This will block and tracing should only be enabled for debugging.
mLayerTracing.notify(mVisibleRegionsDirty, frameTime.ns(), vsyncId.value);
@@ -2845,6 +2843,11 @@
layer->releasePendingBuffer(presentTime.ns());
}
+ mTransactionCallbackInvoker.addPresentFence(std::move(presentFence));
+ mTransactionCallbackInvoker.sendCallbacks(false /* onCommitOnly */);
+ mTransactionCallbackInvoker.clearCompletedTransactions();
+ updateInputFlinger();
+
std::vector<std::pair<std::shared_ptr<compositionengine::Display>, sp<HdrLayerInfoReporter>>>
hdrInfoListeners;
bool haveNewListeners = false;
@@ -2901,10 +2904,6 @@
mHdrLayerInfoChanged = false;
- mTransactionCallbackInvoker.addPresentFence(std::move(presentFence));
- mTransactionCallbackInvoker.sendCallbacks(false /* onCommitOnly */);
- mTransactionCallbackInvoker.clearCompletedTransactions();
-
mTimeStats->incrementTotalFrames();
mTimeStats->setPresentFenceGlobal(presentFenceTime);