Propagate hwc/gl frames missed to dumpsys.
It'll be useful when rerunning the tests for top use-cases, as we'd
expect GL comp to be more expensive on average.
Bug: 123958105
Test: dumpsys SurfaceFlinger
Change-Id: I04543efc5c687f7657b259bfbe5a5219f5a3807e
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index b605cb2..5f95626 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1588,6 +1588,14 @@
mTimeStats->incrementMissedFrames();
}
+ if (hwcFrameMissed) {
+ mHwcFrameMissedCount++;
+ }
+
+ if (gpuFrameMissed) {
+ mGpuFrameMissedCount++;
+ }
+
if (mUseSmart90ForVideo) {
// This call is made each time SF wakes up and creates a new frame. It is part
// of video detection feature.
@@ -4636,7 +4644,9 @@
dumpStaticScreenStats(result);
result.append("\n");
- StringAppendF(&result, "Missed frame count: %u\n\n", mFrameMissedCount.load());
+ StringAppendF(&result, "Total missed frame count: %u\n", mFrameMissedCount.load());
+ StringAppendF(&result, "HWC missed frame count: %u\n", mHwcFrameMissedCount.load());
+ StringAppendF(&result, "GPU missed frame count: %u\n\n", mGpuFrameMissedCount.load());
dumpBufferingStats(result);
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index e79c4ee..ef2b640 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -1015,6 +1015,8 @@
std::shared_ptr<TimeStats> mTimeStats;
bool mUseHwcVirtualDisplays = false;
std::atomic<uint32_t> mFrameMissedCount{0};
+ std::atomic<uint32_t> mHwcFrameMissedCount{0};
+ std::atomic<uint32_t> mGpuFrameMissedCount{0};
TransactionCompletedThread mTransactionCompletedThread;