diff options
Diffstat (limited to 'services/surfaceflinger/CompositionEngine/src/planner/Planner.cpp')
-rw-r--r-- | services/surfaceflinger/CompositionEngine/src/planner/Planner.cpp | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/services/surfaceflinger/CompositionEngine/src/planner/Planner.cpp b/services/surfaceflinger/CompositionEngine/src/planner/Planner.cpp index f077470c80..f5b1cee469 100644 --- a/services/surfaceflinger/CompositionEngine/src/planner/Planner.cpp +++ b/services/surfaceflinger/CompositionEngine/src/planner/Planner.cpp @@ -32,36 +32,46 @@ namespace android::compositionengine::impl::planner { namespace { -std::optional<Flattener::CachedSetRenderSchedulingTunables> buildFlattenerTuneables() { +std::optional<Flattener::Tunables::RenderScheduling> buildRenderSchedulingTunables() { if (!base::GetBoolProperty(std::string("debug.sf.enable_cached_set_render_scheduling"), true)) { return std::nullopt; } - auto renderDuration = std::chrono::nanoseconds( + const auto renderDuration = std::chrono::nanoseconds( base::GetUintProperty<uint64_t>(std::string("debug.sf.cached_set_render_duration_ns"), - Flattener::CachedSetRenderSchedulingTunables:: + Flattener::Tunables::RenderScheduling:: kDefaultCachedSetRenderDuration.count())); - auto maxDeferRenderAttempts = base::GetUintProperty< + const auto maxDeferRenderAttempts = base::GetUintProperty< size_t>(std::string("debug.sf.cached_set_max_defer_render_attmpts"), - Flattener::CachedSetRenderSchedulingTunables::kDefaultMaxDeferRenderAttempts); + Flattener::Tunables::RenderScheduling::kDefaultMaxDeferRenderAttempts); - return std::make_optional<Flattener::CachedSetRenderSchedulingTunables>( - Flattener::CachedSetRenderSchedulingTunables{ + return std::make_optional<Flattener::Tunables::RenderScheduling>( + Flattener::Tunables::RenderScheduling{ .cachedSetRenderDuration = renderDuration, .maxDeferRenderAttempts = maxDeferRenderAttempts, }); } +Flattener::Tunables buildFlattenerTuneables() { + const auto activeLayerTimeout = std::chrono::milliseconds( + base::GetIntProperty<int32_t>(std::string( + "debug.sf.layer_caching_active_layer_timeout_ms"), + Flattener::Tunables::kDefaultActiveLayerTimeout.count())); + const auto enableHolePunch = + base::GetBoolProperty(std::string("debug.sf.enable_hole_punch_pip"), + Flattener::Tunables::kDefaultEnableHolePunch); + return Flattener::Tunables{ + .mActiveLayerTimeout = activeLayerTimeout, + .mRenderScheduling = buildRenderSchedulingTunables(), + .mEnableHolePunch = enableHolePunch, + }; +} + } // namespace Planner::Planner(renderengine::RenderEngine& renderEngine) - // Implicitly, layer caching must also be enabled for the hole punch or - // predictor to have any effect. - // E.g., setprop debug.sf.enable_layer_caching 1, or - // adb shell service call SurfaceFlinger 1040 i32 1 [i64 <display ID>] : mFlattener(renderEngine, - base::GetBoolProperty(std::string("debug.sf.enable_hole_punch_pip"), true), buildFlattenerTuneables()) { mPredictorEnabled = base::GetBoolProperty(std::string("debug.sf.enable_planner_prediction"), false); |