diff options
| author | 2021-06-08 15:04:55 -0700 | |
|---|---|---|
| committer | 2021-06-08 18:32:53 -0700 | |
| commit | 4332aac67592202df7aad0c5fac8617796eceba5 (patch) | |
| tree | f4a3c4ed040586b529cd5f2f7058d2296b0a204e | |
| parent | f156b778a8685e71d268719d1a86414fd6bdb970 (diff) | |
Add sysprop for tuning caching inactive layer
A system property, debug.sf.layer_caching_active_layer_timeout_ms, is added for user to specify milliseconds timeout to tune inactive layer heuristic.
Bug: 190228095
Test: adb root; adb shell setprop debug.sf.layer_caching_active_layer_timeout_ms 100; adb shell stop; adb shell start
Change-Id: I2607f0817af15f3a8ddcaa237b2a336c7edd315e
| -rw-r--r-- | services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/Flattener.h | 3 | ||||
| -rw-r--r-- | services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp | 11 |
2 files changed, 12 insertions, 2 deletions
diff --git a/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/Flattener.h b/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/Flattener.h index ca1d69d579..c76078d39a 100644 --- a/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/Flattener.h +++ b/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/planner/Flattener.h @@ -37,7 +37,7 @@ class Predictor; class Flattener { public: - Flattener(bool enableHolePunch = false) : mEnableHolePunch(enableHolePunch) {} + Flattener(bool enableHolePunch = false); void setDisplaySize(ui::Size size) { mDisplaySize = size; } @@ -162,6 +162,7 @@ private: size_t mCachedSetCreationCount = 0; size_t mCachedSetCreationCost = 0; std::unordered_map<size_t, size_t> mInvalidatedCachedSetAges; + std::chrono::nanoseconds mActiveLayerTimeout = kActiveLayerTimeout; static constexpr auto kActiveLayerTimeout = std::chrono::nanoseconds(150ms); }; diff --git a/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp b/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp index 233b5f2131..48fb51f7ac 100644 --- a/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp +++ b/services/surfaceflinger/CompositionEngine/src/planner/Flattener.cpp @@ -19,6 +19,7 @@ // #define LOG_NDEBUG 0 #define ATRACE_TAG ATRACE_TAG_GRAPHICS +#include <android-base/properties.h> #include <compositionengine/impl/planner/Flattener.h> #include <compositionengine/impl/planner/LayerState.h> @@ -59,6 +60,14 @@ bool isSameStack(const std::vector<const LayerState*>& incomingLayers, } // namespace +Flattener::Flattener(bool enableHolePunch) : mEnableHolePunch(enableHolePunch) { + const int timeoutInMs = + base::GetIntProperty(std::string("debug.sf.layer_caching_active_layer_timeout_ms"), 0); + if (timeoutInMs != 0) { + mActiveLayerTimeout = std::chrono::milliseconds(timeoutInMs); + } +} + NonBufferHash Flattener::flattenLayers(const std::vector<const LayerState*>& layers, NonBufferHash hash, time_point now) { ATRACE_CALL(); @@ -370,7 +379,7 @@ std::vector<Flattener::Run> Flattener::findCandidateRuns(time_point now) const { bool runHasFirstLayer = false; for (auto currentSet = mLayers.cbegin(); currentSet != mLayers.cend(); ++currentSet) { - const bool layerIsInactive = now - currentSet->getLastUpdate() > kActiveLayerTimeout; + const bool layerIsInactive = now - currentSet->getLastUpdate() > mActiveLayerTimeout; const bool layerHasBlur = currentSet->hasBlurBehind(); if (layerIsInactive && (firstLayer || runHasFirstLayer || !layerHasBlur) && !currentSet->hasHdrLayers() && !currentSet->hasProtectedLayers()) { |