Loading services/surfaceflinger/Scheduler/LayerHistory.cpp +25 −2 Original line number Diff line number Diff line Loading @@ -300,12 +300,26 @@ void LayerHistory::partitionLayers(nsecs_t now) { if (gameModeFrameRateOverride.isValid()) { info->setLayerVote({gameFrameRateOverrideVoteType, gameModeFrameRateOverride}); ATRACE_FORMAT_INSTANT("GameModeFrameRateOverride"); if (CC_UNLIKELY(mTraceEnabled)) { trace(*info, gameFrameRateOverrideVoteType, gameModeFrameRateOverride.getIntValue()); } } else if (frameRate.isValid()) { info->setLayerVote({setFrameRateVoteType, frameRate.vote.rate, frameRate.vote.seamlessness, frameRate.category}); if (CC_UNLIKELY(mTraceEnabled)) { trace(*info, gameFrameRateOverrideVoteType, frameRate.vote.rate.getIntValue()); } } else if (gameDefaultFrameRateOverride.isValid()) { info->setLayerVote( {gameFrameRateOverrideVoteType, gameDefaultFrameRateOverride}); ATRACE_FORMAT_INSTANT("GameDefaultFrameRateOverride"); if (CC_UNLIKELY(mTraceEnabled)) { trace(*info, gameFrameRateOverrideVoteType, gameDefaultFrameRateOverride.getIntValue()); } } else { info->resetLayerVote(); } Loading Loading @@ -341,9 +355,18 @@ void LayerHistory::clear() { std::string LayerHistory::dump() const { std::lock_guard lock(mLock); return base::StringPrintf("{size=%zu, active=%zu}", return base::StringPrintf("{size=%zu, active=%zu}\n\tGameFrameRateOverrides=\n\t\t%s", mActiveLayerInfos.size() + mInactiveLayerInfos.size(), mActiveLayerInfos.size()); mActiveLayerInfos.size(), dumpGameFrameRateOverridesLocked().c_str()); } std::string LayerHistory::dumpGameFrameRateOverridesLocked() const { std::string overridesString = "(uid, gameModeOverride, gameDefaultOverride)="; for (auto it = mGameFrameRateOverride.begin(); it != mGameFrameRateOverride.end(); ++it) { base::StringAppendF(&overridesString, "{%u, %d %d} ", it->first, it->second.first.getIntValue(), it->second.second.getIntValue()); } return overridesString; } float LayerHistory::getLayerFramerate(nsecs_t now, int32_t id) const { Loading services/surfaceflinger/Scheduler/LayerHistory.h +2 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,8 @@ private: // keyed by id as returned from Layer::getSequence() using LayerInfos = std::unordered_map<int32_t, LayerPair>; std::string dumpGameFrameRateOverridesLocked() const REQUIRES(mLock); // Iterates over layers maps moving all active layers to mActiveLayerInfos and all inactive // layers to mInactiveLayerInfos. // worst case time complexity is O(2 * inactive + active) Loading Loading
services/surfaceflinger/Scheduler/LayerHistory.cpp +25 −2 Original line number Diff line number Diff line Loading @@ -300,12 +300,26 @@ void LayerHistory::partitionLayers(nsecs_t now) { if (gameModeFrameRateOverride.isValid()) { info->setLayerVote({gameFrameRateOverrideVoteType, gameModeFrameRateOverride}); ATRACE_FORMAT_INSTANT("GameModeFrameRateOverride"); if (CC_UNLIKELY(mTraceEnabled)) { trace(*info, gameFrameRateOverrideVoteType, gameModeFrameRateOverride.getIntValue()); } } else if (frameRate.isValid()) { info->setLayerVote({setFrameRateVoteType, frameRate.vote.rate, frameRate.vote.seamlessness, frameRate.category}); if (CC_UNLIKELY(mTraceEnabled)) { trace(*info, gameFrameRateOverrideVoteType, frameRate.vote.rate.getIntValue()); } } else if (gameDefaultFrameRateOverride.isValid()) { info->setLayerVote( {gameFrameRateOverrideVoteType, gameDefaultFrameRateOverride}); ATRACE_FORMAT_INSTANT("GameDefaultFrameRateOverride"); if (CC_UNLIKELY(mTraceEnabled)) { trace(*info, gameFrameRateOverrideVoteType, gameDefaultFrameRateOverride.getIntValue()); } } else { info->resetLayerVote(); } Loading Loading @@ -341,9 +355,18 @@ void LayerHistory::clear() { std::string LayerHistory::dump() const { std::lock_guard lock(mLock); return base::StringPrintf("{size=%zu, active=%zu}", return base::StringPrintf("{size=%zu, active=%zu}\n\tGameFrameRateOverrides=\n\t\t%s", mActiveLayerInfos.size() + mInactiveLayerInfos.size(), mActiveLayerInfos.size()); mActiveLayerInfos.size(), dumpGameFrameRateOverridesLocked().c_str()); } std::string LayerHistory::dumpGameFrameRateOverridesLocked() const { std::string overridesString = "(uid, gameModeOverride, gameDefaultOverride)="; for (auto it = mGameFrameRateOverride.begin(); it != mGameFrameRateOverride.end(); ++it) { base::StringAppendF(&overridesString, "{%u, %d %d} ", it->first, it->second.first.getIntValue(), it->second.second.getIntValue()); } return overridesString; } float LayerHistory::getLayerFramerate(nsecs_t now, int32_t id) const { Loading
services/surfaceflinger/Scheduler/LayerHistory.h +2 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,8 @@ private: // keyed by id as returned from Layer::getSequence() using LayerInfos = std::unordered_map<int32_t, LayerPair>; std::string dumpGameFrameRateOverridesLocked() const REQUIRES(mLock); // Iterates over layers maps moving all active layers to mActiveLayerInfos and all inactive // layers to mInactiveLayerInfos. // worst case time complexity is O(2 * inactive + active) Loading