Loading services/surfaceflinger/SurfaceFlinger.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -993,6 +993,9 @@ void SurfaceFlinger::setActiveConfigInternal() { return; } auto& oldRefreshRate = mRefreshRateConfigs->getRefreshRateFromConfigId(display->getActiveConfig()); std::lock_guard<std::mutex> lock(mActiveConfigLock); mRefreshRateConfigs->setCurrentConfigId(mUpcomingActiveConfig.configId); mRefreshRateStats->setConfigMode(mUpcomingActiveConfig.configId); Loading @@ -1000,6 +1003,9 @@ void SurfaceFlinger::setActiveConfigInternal() { auto& refreshRate = mRefreshRateConfigs->getRefreshRateFromConfigId(mUpcomingActiveConfig.configId); if (refreshRate.vsyncPeriod != oldRefreshRate.vsyncPeriod) { mTimeStats->incrementRefreshRateSwitches(); } mPhaseConfiguration->setRefreshRateFps(refreshRate.fps); mVSyncModulator->setPhaseOffsets(mPhaseConfiguration->getCurrentOffsets()); ATRACE_INT("ActiveConfigFPS", refreshRate.fps); Loading services/surfaceflinger/TimeStats/TimeStats.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -281,6 +281,15 @@ void TimeStats::incrementClientCompositionReusedFrames() { mTimeStats.clientCompositionReusedFrames++; } void TimeStats::incrementRefreshRateSwitches() { if (!mEnabled.load()) return; ATRACE_CALL(); std::lock_guard<std::mutex> lock(mMutex); mTimeStats.refreshRateSwitches++; } void TimeStats::recordDisplayEventConnectionCount(int32_t count) { if (!mEnabled.load()) return; Loading Loading @@ -834,6 +843,7 @@ void TimeStats::clearGlobalLocked() { mTimeStats.missedFrames = 0; mTimeStats.clientCompositionFrames = 0; mTimeStats.clientCompositionReusedFrames = 0; mTimeStats.refreshRateSwitches = 0; mTimeStats.displayEventConnectionsCount = 0; mTimeStats.displayOnTime = 0; mTimeStats.presentToPresent.hist.clear(); Loading services/surfaceflinger/TimeStats/TimeStats.h +3 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,8 @@ public: virtual void incrementMissedFrames() = 0; virtual void incrementClientCompositionFrames() = 0; virtual void incrementClientCompositionReusedFrames() = 0; // Increments the number of times the display refresh rate changed. virtual void incrementRefreshRateSwitches() = 0; // Records the most up-to-date count of display event connections. // The stored count will be the maximum ever recoded. virtual void recordDisplayEventConnectionCount(int32_t count) = 0; Loading Loading @@ -215,6 +217,7 @@ public: void incrementMissedFrames() override; void incrementClientCompositionFrames() override; void incrementClientCompositionReusedFrames() override; void incrementRefreshRateSwitches() override; void recordDisplayEventConnectionCount(int32_t count) override; void recordFrameDuration(nsecs_t startTime, nsecs_t endTime) override; Loading services/surfaceflinger/TimeStats/timestatsproto/TimeStatsHelper.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ std::string TimeStatsHelper::TimeStatsGlobal::toString(std::optional<uint32_t> m StringAppendF(&result, "missedFrames = %d\n", missedFrames); StringAppendF(&result, "clientCompositionFrames = %d\n", clientCompositionFrames); StringAppendF(&result, "clientCompositionReusedFrames = %d\n", clientCompositionReusedFrames); StringAppendF(&result, "refreshRateSwitches = %d\n", refreshRateSwitches); StringAppendF(&result, "displayOnTime = %" PRId64 " ms\n", displayOnTime); StringAppendF(&result, "displayConfigStats is as below:\n"); for (const auto& [fps, duration] : refreshRateStats) { Loading services/surfaceflinger/TimeStats/timestatsproto/include/timestatsproto/TimeStatsHelper.h +1 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ public: int32_t missedFrames = 0; int32_t clientCompositionFrames = 0; int32_t clientCompositionReusedFrames = 0; int32_t refreshRateSwitches = 0; int32_t displayEventConnectionsCount = 0; int64_t displayOnTime = 0; Histogram presentToPresent; Loading Loading
services/surfaceflinger/SurfaceFlinger.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -993,6 +993,9 @@ void SurfaceFlinger::setActiveConfigInternal() { return; } auto& oldRefreshRate = mRefreshRateConfigs->getRefreshRateFromConfigId(display->getActiveConfig()); std::lock_guard<std::mutex> lock(mActiveConfigLock); mRefreshRateConfigs->setCurrentConfigId(mUpcomingActiveConfig.configId); mRefreshRateStats->setConfigMode(mUpcomingActiveConfig.configId); Loading @@ -1000,6 +1003,9 @@ void SurfaceFlinger::setActiveConfigInternal() { auto& refreshRate = mRefreshRateConfigs->getRefreshRateFromConfigId(mUpcomingActiveConfig.configId); if (refreshRate.vsyncPeriod != oldRefreshRate.vsyncPeriod) { mTimeStats->incrementRefreshRateSwitches(); } mPhaseConfiguration->setRefreshRateFps(refreshRate.fps); mVSyncModulator->setPhaseOffsets(mPhaseConfiguration->getCurrentOffsets()); ATRACE_INT("ActiveConfigFPS", refreshRate.fps); Loading
services/surfaceflinger/TimeStats/TimeStats.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -281,6 +281,15 @@ void TimeStats::incrementClientCompositionReusedFrames() { mTimeStats.clientCompositionReusedFrames++; } void TimeStats::incrementRefreshRateSwitches() { if (!mEnabled.load()) return; ATRACE_CALL(); std::lock_guard<std::mutex> lock(mMutex); mTimeStats.refreshRateSwitches++; } void TimeStats::recordDisplayEventConnectionCount(int32_t count) { if (!mEnabled.load()) return; Loading Loading @@ -834,6 +843,7 @@ void TimeStats::clearGlobalLocked() { mTimeStats.missedFrames = 0; mTimeStats.clientCompositionFrames = 0; mTimeStats.clientCompositionReusedFrames = 0; mTimeStats.refreshRateSwitches = 0; mTimeStats.displayEventConnectionsCount = 0; mTimeStats.displayOnTime = 0; mTimeStats.presentToPresent.hist.clear(); Loading
services/surfaceflinger/TimeStats/TimeStats.h +3 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,8 @@ public: virtual void incrementMissedFrames() = 0; virtual void incrementClientCompositionFrames() = 0; virtual void incrementClientCompositionReusedFrames() = 0; // Increments the number of times the display refresh rate changed. virtual void incrementRefreshRateSwitches() = 0; // Records the most up-to-date count of display event connections. // The stored count will be the maximum ever recoded. virtual void recordDisplayEventConnectionCount(int32_t count) = 0; Loading Loading @@ -215,6 +217,7 @@ public: void incrementMissedFrames() override; void incrementClientCompositionFrames() override; void incrementClientCompositionReusedFrames() override; void incrementRefreshRateSwitches() override; void recordDisplayEventConnectionCount(int32_t count) override; void recordFrameDuration(nsecs_t startTime, nsecs_t endTime) override; Loading
services/surfaceflinger/TimeStats/timestatsproto/TimeStatsHelper.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ std::string TimeStatsHelper::TimeStatsGlobal::toString(std::optional<uint32_t> m StringAppendF(&result, "missedFrames = %d\n", missedFrames); StringAppendF(&result, "clientCompositionFrames = %d\n", clientCompositionFrames); StringAppendF(&result, "clientCompositionReusedFrames = %d\n", clientCompositionReusedFrames); StringAppendF(&result, "refreshRateSwitches = %d\n", refreshRateSwitches); StringAppendF(&result, "displayOnTime = %" PRId64 " ms\n", displayOnTime); StringAppendF(&result, "displayConfigStats is as below:\n"); for (const auto& [fps, duration] : refreshRateStats) { Loading
services/surfaceflinger/TimeStats/timestatsproto/include/timestatsproto/TimeStatsHelper.h +1 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ public: int32_t missedFrames = 0; int32_t clientCompositionFrames = 0; int32_t clientCompositionReusedFrames = 0; int32_t refreshRateSwitches = 0; int32_t displayEventConnectionsCount = 0; int64_t displayOnTime = 0; Histogram presentToPresent; Loading