From 8f1ee7fdcf5c602aa87a93b727a696bb8e9eddb0 Mon Sep 17 00:00:00 2001 From: Ady Abraham Date: Fri, 5 Apr 2019 10:32:50 -0700 Subject: SurfaceFlinger: handle wallpaper scenario in Scheduler Use the fact that a layer contains wallpaper in Scheduler's algorithm when picking a refresh rate. Wallpaper should be presented in the lowest active refresh rate to preserve power. Test: systrace during wallpaper Bug: 124065567 Change-Id: Ibb18e62eaf1a6b9b3ab1ec18a3135fb17c8f57fc --- services/surfaceflinger/Layer.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'services/surfaceflinger/Layer.cpp') diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index de05f74a9b..b47497a33a 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -70,7 +70,10 @@ using base::StringAppendF; std::atomic Layer::sSequence{1}; Layer::Layer(const LayerCreationArgs& args) - : mFlinger(args.flinger), mName(args.name), mClientRef(args.client) { + : mFlinger(args.flinger), + mName(args.name), + mClientRef(args.client), + mWindowType(args.metadata.getInt32(METADATA_WINDOW_TYPE, 0)) { mCurrentCrop.makeInvalid(); uint32_t layerFlags = 0; @@ -115,7 +118,7 @@ Layer::Layer(const LayerCreationArgs& args) mFrameEventHistory.initializeCompositorTiming(compositorTiming); mFrameTracker.setDisplayRefreshPeriod(compositorTiming.interval); - mSchedulerLayerHandle = mFlinger->mScheduler->registerLayer(mName.c_str()); + mSchedulerLayerHandle = mFlinger->mScheduler->registerLayer(mName.c_str(), mWindowType); mFlinger->onLayerCreated(); } @@ -1300,6 +1303,7 @@ void Layer::miniDumpHeader(std::string& result) { result.append("-----------------------------\n"); result.append(" Layer name\n"); result.append(" Z | "); + result.append(" Window Type | "); result.append(" Comp Type | "); result.append(" Transform | "); result.append(" Disp Frame (LTRB) | "); @@ -1336,6 +1340,7 @@ void Layer::miniDump(std::string& result, const sp& displayDevice } else { StringAppendF(&result, " %10d | ", layerState.z); } + StringAppendF(&result, " %10d | ", mWindowType); StringAppendF(&result, "%10s | ", toString(getCompositionType(displayDevice)).c_str()); StringAppendF(&result, "%10s | ", toString(getCompositionLayer() ? compositionState.bufferTransform -- cgit v1.2.3-59-g8ed1b