Loading services/surfaceflinger/SurfaceFlinger.cpp +2 −1 Original line number Original line Diff line number Diff line Loading @@ -1825,6 +1825,7 @@ void SurfaceFlinger::handleMessageRefresh() { preComposition(); preComposition(); rebuildLayerStacks(); rebuildLayerStacks(); calculateWorkingSet(); calculateWorkingSet(); long compositionTime = elapsedRealtimeNano(); for (const auto& [token, display] : mDisplays) { for (const auto& [token, display] : mDisplays) { beginFrame(display); beginFrame(display); prepareFrame(display); prepareFrame(display); Loading Loading @@ -1854,7 +1855,7 @@ void SurfaceFlinger::handleMessageRefresh() { if (mVisibleRegionsDirty) { if (mVisibleRegionsDirty) { mVisibleRegionsDirty = false; mVisibleRegionsDirty = false; if (mTracingEnabled) { if (mTracingEnabled) { mTracing.notify("visibleRegionsDirty"); mTracing.notify(compositionTime, "visibleRegionsDirty"); } } } } } } Loading services/surfaceflinger/SurfaceTracing.cpp +3 −2 Original line number Original line Diff line number Diff line Loading @@ -68,8 +68,9 @@ bool SurfaceTracing::addTraceToBuffer(LayersTraceProto& entry) { return mEnabled; return mEnabled; } } void SurfaceTracing::notify(const char* where) { void SurfaceTracing::notify(long compositionTime, const char* where) { std::scoped_lock lock(mSfLock); std::scoped_lock lock(mSfLock); mCompositionTime = compositionTime; mWhere = where; mWhere = where; mCanStartTrace.notify_one(); mCanStartTrace.notify_one(); } } Loading Loading @@ -160,7 +161,7 @@ LayersTraceProto SurfaceTracing::traceLayersLocked(const char* where) { ATRACE_CALL(); ATRACE_CALL(); LayersTraceProto entry; LayersTraceProto entry; entry.set_elapsed_realtime_nanos(elapsedRealtimeNano()); entry.set_elapsed_realtime_nanos(mCompositionTime); entry.set_where(where); entry.set_where(where); LayersProto layers(mFlinger.dumpDrawingStateProto(mTraceFlags)); LayersProto layers(mFlinger.dumpDrawingStateProto(mTraceFlags)); entry.mutable_layers()->Swap(&layers); entry.mutable_layers()->Swap(&layers); Loading services/surfaceflinger/SurfaceTracing.h +3 −1 Original line number Original line Diff line number Diff line Loading @@ -46,7 +46,7 @@ public: bool disable(); bool disable(); status_t writeToFile(); status_t writeToFile(); bool isEnabled() const; bool isEnabled() const; void notify(const char* where); void notify(long compositionTime, const char* where); void setBufferSize(size_t bufferSizeInByte); void setBufferSize(size_t bufferSizeInByte); void writeToFileAsync(); void writeToFileAsync(); Loading Loading @@ -81,6 +81,8 @@ private: std::queue<LayersTraceProto> mStorage; std::queue<LayersTraceProto> mStorage; }; }; long mCompositionTime; void mainLoop(); void mainLoop(); void addFirstEntry(); void addFirstEntry(); LayersTraceProto traceWhenNotified(); LayersTraceProto traceWhenNotified(); Loading Loading
services/surfaceflinger/SurfaceFlinger.cpp +2 −1 Original line number Original line Diff line number Diff line Loading @@ -1825,6 +1825,7 @@ void SurfaceFlinger::handleMessageRefresh() { preComposition(); preComposition(); rebuildLayerStacks(); rebuildLayerStacks(); calculateWorkingSet(); calculateWorkingSet(); long compositionTime = elapsedRealtimeNano(); for (const auto& [token, display] : mDisplays) { for (const auto& [token, display] : mDisplays) { beginFrame(display); beginFrame(display); prepareFrame(display); prepareFrame(display); Loading Loading @@ -1854,7 +1855,7 @@ void SurfaceFlinger::handleMessageRefresh() { if (mVisibleRegionsDirty) { if (mVisibleRegionsDirty) { mVisibleRegionsDirty = false; mVisibleRegionsDirty = false; if (mTracingEnabled) { if (mTracingEnabled) { mTracing.notify("visibleRegionsDirty"); mTracing.notify(compositionTime, "visibleRegionsDirty"); } } } } } } Loading
services/surfaceflinger/SurfaceTracing.cpp +3 −2 Original line number Original line Diff line number Diff line Loading @@ -68,8 +68,9 @@ bool SurfaceTracing::addTraceToBuffer(LayersTraceProto& entry) { return mEnabled; return mEnabled; } } void SurfaceTracing::notify(const char* where) { void SurfaceTracing::notify(long compositionTime, const char* where) { std::scoped_lock lock(mSfLock); std::scoped_lock lock(mSfLock); mCompositionTime = compositionTime; mWhere = where; mWhere = where; mCanStartTrace.notify_one(); mCanStartTrace.notify_one(); } } Loading Loading @@ -160,7 +161,7 @@ LayersTraceProto SurfaceTracing::traceLayersLocked(const char* where) { ATRACE_CALL(); ATRACE_CALL(); LayersTraceProto entry; LayersTraceProto entry; entry.set_elapsed_realtime_nanos(elapsedRealtimeNano()); entry.set_elapsed_realtime_nanos(mCompositionTime); entry.set_where(where); entry.set_where(where); LayersProto layers(mFlinger.dumpDrawingStateProto(mTraceFlags)); LayersProto layers(mFlinger.dumpDrawingStateProto(mTraceFlags)); entry.mutable_layers()->Swap(&layers); entry.mutable_layers()->Swap(&layers); Loading
services/surfaceflinger/SurfaceTracing.h +3 −1 Original line number Original line Diff line number Diff line Loading @@ -46,7 +46,7 @@ public: bool disable(); bool disable(); status_t writeToFile(); status_t writeToFile(); bool isEnabled() const; bool isEnabled() const; void notify(const char* where); void notify(long compositionTime, const char* where); void setBufferSize(size_t bufferSizeInByte); void setBufferSize(size_t bufferSizeInByte); void writeToFileAsync(); void writeToFileAsync(); Loading Loading @@ -81,6 +81,8 @@ private: std::queue<LayersTraceProto> mStorage; std::queue<LayersTraceProto> mStorage; }; }; long mCompositionTime; void mainLoop(); void mainLoop(); void addFirstEntry(); void addFirstEntry(); LayersTraceProto traceWhenNotified(); LayersTraceProto traceWhenNotified(); Loading