SF TimeStats: add global present to present histogram
Bug: b/79872109
Test: dumpsys SurfaceFlinger --timestats <options>
Change-Id: Iab8c01d66c69a04a89f7e9313e53ff961ce0175c
diff --git a/services/surfaceflinger/TimeStats/TimeStats.h b/services/surfaceflinger/TimeStats/TimeStats.h
index 87e21a7..c78d84e 100644
--- a/services/surfaceflinger/TimeStats/TimeStats.h
+++ b/services/surfaceflinger/TimeStats/TimeStats.h
@@ -73,6 +73,11 @@
nsecs_t prevTime = 0;
};
+ struct GlobalRecord {
+ nsecs_t prevPresentTime = 0;
+ std::deque<std::shared_ptr<FenceTime>> presentFences;
+ };
+
public:
static TimeStats& getInstance();
void parseArgs(bool asProto, const Vector<String16>& args, size_t& index, String8& result);
@@ -99,6 +104,7 @@
void removeTimeRecord(const std::string& layerName, uint64_t frameNumber);
void setPowerMode(int32_t powerMode);
+ void setPresentFenceGlobal(const std::shared_ptr<FenceTime>& presentFence);
private:
TimeStats() = default;
@@ -106,6 +112,7 @@
bool recordReadyLocked(const std::string& layerName, TimeRecord* timeRecord);
void flushAvailableRecordsToStatsLocked(const std::string& layerName);
void flushPowerTimeLocked();
+ void flushAvailableGlobalRecordsToStatsLocked();
void enable();
void disable();
@@ -118,6 +125,7 @@
TimeStatsHelper::TimeStatsGlobal mTimeStats;
std::unordered_map<std::string, LayerRecord> mTimeStatsTracker;
PowerTime mPowerTime;
+ GlobalRecord mGlobalRecord;
};
} // namespace android