diff options
author | 2023-05-03 14:32:11 +0000 | |
---|---|---|
committer | 2023-05-11 22:27:47 +0000 | |
commit | 814f9fc4e4bafe154da21d5e0989886ad14cc9a6 (patch) | |
tree | 27679af9ed73b653b05f5b9602d90d2ff0285b43 | |
parent | 9e6c6ca843de25a488a57f62a1d945b2179576dc (diff) |
Prevent LOAD_RESET signal after too many false positives
If the hint session sends too many LOAD_RESET signals without an actual
workload happening, stop sending LOAD_RESET until something actually
happens.
Bug: 232329572
Test: manual
Change-Id: I8fb34a2ee0ff028c83e955a0283396cd69e52361
-rw-r--r-- | libs/hwui/renderthread/HintSessionWrapper.cpp | 6 | ||||
-rw-r--r-- | libs/hwui/renderthread/HintSessionWrapper.h | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/libs/hwui/renderthread/HintSessionWrapper.cpp b/libs/hwui/renderthread/HintSessionWrapper.cpp index 597cbf732d82..814ac4d90028 100644 --- a/libs/hwui/renderthread/HintSessionWrapper.cpp +++ b/libs/hwui/renderthread/HintSessionWrapper.cpp @@ -156,6 +156,7 @@ void HintSessionWrapper::updateTargetWorkDuration(long targetWorkDurationNanos) void HintSessionWrapper::reportActualWorkDuration(long actualDurationNanos) { if (!init()) return; + mResetsSinceLastReport = 0; if (actualDurationNanos > kSanityCheckLowerBound && actualDurationNanos < kSanityCheckUpperBound) { gAPH_reportActualWorkDurationFn(mHintSession, actualDurationNanos); @@ -163,9 +164,12 @@ void HintSessionWrapper::reportActualWorkDuration(long actualDurationNanos) { } void HintSessionWrapper::sendLoadResetHint() { + static constexpr int kMaxResetsSinceLastReport = 2; if (!init()) return; nsecs_t now = systemTime(); - if (now - mLastFrameNotification > kResetHintTimeout) { + if (now - mLastFrameNotification > kResetHintTimeout && + mResetsSinceLastReport <= kMaxResetsSinceLastReport) { + ++mResetsSinceLastReport; gAPH_sendHintFn(mHintSession, static_cast<int>(SessionHint::CPU_LOAD_RESET)); } mLastFrameNotification = now; diff --git a/libs/hwui/renderthread/HintSessionWrapper.h b/libs/hwui/renderthread/HintSessionWrapper.h index b7a433fb4eae..24b8150dd489 100644 --- a/libs/hwui/renderthread/HintSessionWrapper.h +++ b/libs/hwui/renderthread/HintSessionWrapper.h @@ -42,6 +42,7 @@ private: APerformanceHintSession* mHintSession = nullptr; std::future<APerformanceHintSession*> mHintSessionFuture; + int mResetsSinceLastReport = 0; nsecs_t mLastFrameNotification = 0; nsecs_t mLastTargetWorkDuration = 0; |