Loading services/surfaceflinger/CompositionEngine/tests/MockPowerAdvisor.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -34,7 +34,7 @@ public: MOCK_METHOD(void, setExpensiveRenderingExpected, (DisplayId displayId, bool expected), MOCK_METHOD(void, setExpensiveRenderingExpected, (DisplayId displayId, bool expected), (override)); (override)); MOCK_METHOD(bool, isUsingExpensiveRendering, (), (override)); MOCK_METHOD(bool, isUsingExpensiveRendering, (), (override)); MOCK_METHOD(void, notifyDisplayUpdateImminent, (), (override)); MOCK_METHOD(void, notifyDisplayUpdateImminentAndCpuReset, (), (override)); MOCK_METHOD(bool, usePowerHintSession, (), (override)); MOCK_METHOD(bool, usePowerHintSession, (), (override)); MOCK_METHOD(bool, supportsPowerHintSession, (), (override)); MOCK_METHOD(bool, supportsPowerHintSession, (), (override)); MOCK_METHOD(bool, isPowerHintSessionRunning, (), (override)); MOCK_METHOD(bool, isPowerHintSessionRunning, (), (override)); Loading services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp +10 −5 Original line number Original line Diff line number Diff line Loading @@ -57,6 +57,7 @@ using android::hardware::power::Boost; using android::hardware::power::IPower; using android::hardware::power::IPower; using android::hardware::power::IPowerHintSession; using android::hardware::power::IPowerHintSession; using android::hardware::power::Mode; using android::hardware::power::Mode; using android::hardware::power::SessionHint; using android::hardware::power::WorkDuration; using android::hardware::power::WorkDuration; PowerAdvisor::~PowerAdvisor() = default; PowerAdvisor::~PowerAdvisor() = default; Loading Loading @@ -140,7 +141,7 @@ void PowerAdvisor::setExpensiveRenderingExpected(DisplayId displayId, bool expec } } } } void PowerAdvisor::notifyDisplayUpdateImminent() { void PowerAdvisor::notifyDisplayUpdateImminentAndCpuReset() { // Only start sending this notification once the system has booted so we don't introduce an // Only start sending this notification once the system has booted so we don't introduce an // early-boot dependency on Power HAL // early-boot dependency on Power HAL if (!mBootFinished.load()) { if (!mBootFinished.load()) { Loading @@ -154,7 +155,7 @@ void PowerAdvisor::notifyDisplayUpdateImminent() { return; return; } } if (!halWrapper->notifyDisplayUpdateImminent()) { if (!halWrapper->notifyDisplayUpdateImminentAndCpuReset()) { // The HAL has become unavailable; attempt to reconnect later // The HAL has become unavailable; attempt to reconnect later mReconnectPowerHal = true; mReconnectPowerHal = true; return; return; Loading Loading @@ -599,7 +600,7 @@ public: return ret.isOk(); return ret.isOk(); } } bool notifyDisplayUpdateImminent() override { bool notifyDisplayUpdateImminentAndCpuReset() override { // Power HAL 1.x doesn't have a notification for this // Power HAL 1.x doesn't have a notification for this ALOGV("HIDL notifyUpdateImminent received but can't send"); ALOGV("HIDL notifyUpdateImminent received but can't send"); return true; return true; Loading Loading @@ -675,8 +676,12 @@ bool AidlPowerHalWrapper::setExpensiveRendering(bool enabled) { return ret.isOk(); return ret.isOk(); } } bool AidlPowerHalWrapper::notifyDisplayUpdateImminent() { bool AidlPowerHalWrapper::notifyDisplayUpdateImminentAndCpuReset() { ALOGV("AIDL notifyDisplayUpdateImminent"); ALOGV("AIDL notifyDisplayUpdateImminentAndCpuReset"); if (isPowerHintSessionRunning()) { mPowerHintSession->sendHint(SessionHint::CPU_LOAD_RESET); } if (!mHasDisplayUpdateImminent) { if (!mHasDisplayUpdateImminent) { ALOGV("Skipped sending DISPLAY_UPDATE_IMMINENT because HAL doesn't support it"); ALOGV("Skipped sending DISPLAY_UPDATE_IMMINENT because HAL doesn't support it"); return true; return true; Loading services/surfaceflinger/DisplayHardware/PowerAdvisor.h +4 −4 Original line number Original line Diff line number Diff line Loading @@ -48,7 +48,7 @@ public: virtual void onBootFinished() = 0; virtual void onBootFinished() = 0; virtual void setExpensiveRenderingExpected(DisplayId displayId, bool expected) = 0; virtual void setExpensiveRenderingExpected(DisplayId displayId, bool expected) = 0; virtual bool isUsingExpensiveRendering() = 0; virtual bool isUsingExpensiveRendering() = 0; virtual void notifyDisplayUpdateImminent() = 0; virtual void notifyDisplayUpdateImminentAndCpuReset() = 0; // Checks both if it supports and if it's enabled // Checks both if it supports and if it's enabled virtual bool usePowerHintSession() = 0; virtual bool usePowerHintSession() = 0; virtual bool supportsPowerHintSession() = 0; virtual bool supportsPowerHintSession() = 0; Loading Loading @@ -106,7 +106,7 @@ public: virtual ~HalWrapper() = default; virtual ~HalWrapper() = default; virtual bool setExpensiveRendering(bool enabled) = 0; virtual bool setExpensiveRendering(bool enabled) = 0; virtual bool notifyDisplayUpdateImminent() = 0; virtual bool notifyDisplayUpdateImminentAndCpuReset() = 0; virtual bool supportsPowerHintSession() = 0; virtual bool supportsPowerHintSession() = 0; virtual bool isPowerHintSessionRunning() = 0; virtual bool isPowerHintSessionRunning() = 0; virtual void restartPowerHintSession() = 0; virtual void restartPowerHintSession() = 0; Loading @@ -126,7 +126,7 @@ public: void onBootFinished() override; void onBootFinished() override; void setExpensiveRenderingExpected(DisplayId displayId, bool expected) override; void setExpensiveRenderingExpected(DisplayId displayId, bool expected) override; bool isUsingExpensiveRendering() override { return mNotifiedExpensiveRendering; }; bool isUsingExpensiveRendering() override { return mNotifiedExpensiveRendering; }; void notifyDisplayUpdateImminent() override; void notifyDisplayUpdateImminentAndCpuReset() override; bool usePowerHintSession() override; bool usePowerHintSession() override; bool supportsPowerHintSession() override; bool supportsPowerHintSession() override; bool isPowerHintSessionRunning() override; bool isPowerHintSessionRunning() override; Loading Loading @@ -289,7 +289,7 @@ public: static std::unique_ptr<HalWrapper> connect(); static std::unique_ptr<HalWrapper> connect(); bool setExpensiveRendering(bool enabled) override; bool setExpensiveRendering(bool enabled) override; bool notifyDisplayUpdateImminent() override; bool notifyDisplayUpdateImminentAndCpuReset() override; bool supportsPowerHintSession() override; bool supportsPowerHintSession() override; bool isPowerHintSessionRunning() override; bool isPowerHintSessionRunning() override; void restartPowerHintSession() override; void restartPowerHintSession() override; Loading services/surfaceflinger/SurfaceFlinger.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -1823,7 +1823,7 @@ void SurfaceFlinger::scheduleCommit(FrameHint hint) { if (hint == FrameHint::kActive) { if (hint == FrameHint::kActive) { mScheduler->resetIdleTimer(); mScheduler->resetIdleTimer(); } } mPowerAdvisor->notifyDisplayUpdateImminent(); mPowerAdvisor->notifyDisplayUpdateImminentAndCpuReset(); mScheduler->scheduleFrame(); mScheduler->scheduleFrame(); } } Loading services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockAidlPowerHalWrapper.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -36,7 +36,7 @@ public: MockAidlPowerHalWrapper(); MockAidlPowerHalWrapper(); ~MockAidlPowerHalWrapper() override; ~MockAidlPowerHalWrapper() override; MOCK_METHOD(bool, setExpensiveRendering, (bool enabled), (override)); MOCK_METHOD(bool, setExpensiveRendering, (bool enabled), (override)); MOCK_METHOD(bool, notifyDisplayUpdateImminent, (), (override)); MOCK_METHOD(bool, notifyDisplayUpdateImminentAndCpuReset, (), (override)); MOCK_METHOD(bool, supportsPowerHintSession, (), (override)); MOCK_METHOD(bool, supportsPowerHintSession, (), (override)); MOCK_METHOD(bool, isPowerHintSessionRunning, (), (override)); MOCK_METHOD(bool, isPowerHintSessionRunning, (), (override)); MOCK_METHOD(void, restartPowerHintSession, (), (override)); MOCK_METHOD(void, restartPowerHintSession, (), (override)); Loading Loading
services/surfaceflinger/CompositionEngine/tests/MockPowerAdvisor.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -34,7 +34,7 @@ public: MOCK_METHOD(void, setExpensiveRenderingExpected, (DisplayId displayId, bool expected), MOCK_METHOD(void, setExpensiveRenderingExpected, (DisplayId displayId, bool expected), (override)); (override)); MOCK_METHOD(bool, isUsingExpensiveRendering, (), (override)); MOCK_METHOD(bool, isUsingExpensiveRendering, (), (override)); MOCK_METHOD(void, notifyDisplayUpdateImminent, (), (override)); MOCK_METHOD(void, notifyDisplayUpdateImminentAndCpuReset, (), (override)); MOCK_METHOD(bool, usePowerHintSession, (), (override)); MOCK_METHOD(bool, usePowerHintSession, (), (override)); MOCK_METHOD(bool, supportsPowerHintSession, (), (override)); MOCK_METHOD(bool, supportsPowerHintSession, (), (override)); MOCK_METHOD(bool, isPowerHintSessionRunning, (), (override)); MOCK_METHOD(bool, isPowerHintSessionRunning, (), (override)); Loading
services/surfaceflinger/DisplayHardware/PowerAdvisor.cpp +10 −5 Original line number Original line Diff line number Diff line Loading @@ -57,6 +57,7 @@ using android::hardware::power::Boost; using android::hardware::power::IPower; using android::hardware::power::IPower; using android::hardware::power::IPowerHintSession; using android::hardware::power::IPowerHintSession; using android::hardware::power::Mode; using android::hardware::power::Mode; using android::hardware::power::SessionHint; using android::hardware::power::WorkDuration; using android::hardware::power::WorkDuration; PowerAdvisor::~PowerAdvisor() = default; PowerAdvisor::~PowerAdvisor() = default; Loading Loading @@ -140,7 +141,7 @@ void PowerAdvisor::setExpensiveRenderingExpected(DisplayId displayId, bool expec } } } } void PowerAdvisor::notifyDisplayUpdateImminent() { void PowerAdvisor::notifyDisplayUpdateImminentAndCpuReset() { // Only start sending this notification once the system has booted so we don't introduce an // Only start sending this notification once the system has booted so we don't introduce an // early-boot dependency on Power HAL // early-boot dependency on Power HAL if (!mBootFinished.load()) { if (!mBootFinished.load()) { Loading @@ -154,7 +155,7 @@ void PowerAdvisor::notifyDisplayUpdateImminent() { return; return; } } if (!halWrapper->notifyDisplayUpdateImminent()) { if (!halWrapper->notifyDisplayUpdateImminentAndCpuReset()) { // The HAL has become unavailable; attempt to reconnect later // The HAL has become unavailable; attempt to reconnect later mReconnectPowerHal = true; mReconnectPowerHal = true; return; return; Loading Loading @@ -599,7 +600,7 @@ public: return ret.isOk(); return ret.isOk(); } } bool notifyDisplayUpdateImminent() override { bool notifyDisplayUpdateImminentAndCpuReset() override { // Power HAL 1.x doesn't have a notification for this // Power HAL 1.x doesn't have a notification for this ALOGV("HIDL notifyUpdateImminent received but can't send"); ALOGV("HIDL notifyUpdateImminent received but can't send"); return true; return true; Loading Loading @@ -675,8 +676,12 @@ bool AidlPowerHalWrapper::setExpensiveRendering(bool enabled) { return ret.isOk(); return ret.isOk(); } } bool AidlPowerHalWrapper::notifyDisplayUpdateImminent() { bool AidlPowerHalWrapper::notifyDisplayUpdateImminentAndCpuReset() { ALOGV("AIDL notifyDisplayUpdateImminent"); ALOGV("AIDL notifyDisplayUpdateImminentAndCpuReset"); if (isPowerHintSessionRunning()) { mPowerHintSession->sendHint(SessionHint::CPU_LOAD_RESET); } if (!mHasDisplayUpdateImminent) { if (!mHasDisplayUpdateImminent) { ALOGV("Skipped sending DISPLAY_UPDATE_IMMINENT because HAL doesn't support it"); ALOGV("Skipped sending DISPLAY_UPDATE_IMMINENT because HAL doesn't support it"); return true; return true; Loading
services/surfaceflinger/DisplayHardware/PowerAdvisor.h +4 −4 Original line number Original line Diff line number Diff line Loading @@ -48,7 +48,7 @@ public: virtual void onBootFinished() = 0; virtual void onBootFinished() = 0; virtual void setExpensiveRenderingExpected(DisplayId displayId, bool expected) = 0; virtual void setExpensiveRenderingExpected(DisplayId displayId, bool expected) = 0; virtual bool isUsingExpensiveRendering() = 0; virtual bool isUsingExpensiveRendering() = 0; virtual void notifyDisplayUpdateImminent() = 0; virtual void notifyDisplayUpdateImminentAndCpuReset() = 0; // Checks both if it supports and if it's enabled // Checks both if it supports and if it's enabled virtual bool usePowerHintSession() = 0; virtual bool usePowerHintSession() = 0; virtual bool supportsPowerHintSession() = 0; virtual bool supportsPowerHintSession() = 0; Loading Loading @@ -106,7 +106,7 @@ public: virtual ~HalWrapper() = default; virtual ~HalWrapper() = default; virtual bool setExpensiveRendering(bool enabled) = 0; virtual bool setExpensiveRendering(bool enabled) = 0; virtual bool notifyDisplayUpdateImminent() = 0; virtual bool notifyDisplayUpdateImminentAndCpuReset() = 0; virtual bool supportsPowerHintSession() = 0; virtual bool supportsPowerHintSession() = 0; virtual bool isPowerHintSessionRunning() = 0; virtual bool isPowerHintSessionRunning() = 0; virtual void restartPowerHintSession() = 0; virtual void restartPowerHintSession() = 0; Loading @@ -126,7 +126,7 @@ public: void onBootFinished() override; void onBootFinished() override; void setExpensiveRenderingExpected(DisplayId displayId, bool expected) override; void setExpensiveRenderingExpected(DisplayId displayId, bool expected) override; bool isUsingExpensiveRendering() override { return mNotifiedExpensiveRendering; }; bool isUsingExpensiveRendering() override { return mNotifiedExpensiveRendering; }; void notifyDisplayUpdateImminent() override; void notifyDisplayUpdateImminentAndCpuReset() override; bool usePowerHintSession() override; bool usePowerHintSession() override; bool supportsPowerHintSession() override; bool supportsPowerHintSession() override; bool isPowerHintSessionRunning() override; bool isPowerHintSessionRunning() override; Loading Loading @@ -289,7 +289,7 @@ public: static std::unique_ptr<HalWrapper> connect(); static std::unique_ptr<HalWrapper> connect(); bool setExpensiveRendering(bool enabled) override; bool setExpensiveRendering(bool enabled) override; bool notifyDisplayUpdateImminent() override; bool notifyDisplayUpdateImminentAndCpuReset() override; bool supportsPowerHintSession() override; bool supportsPowerHintSession() override; bool isPowerHintSessionRunning() override; bool isPowerHintSessionRunning() override; void restartPowerHintSession() override; void restartPowerHintSession() override; Loading
services/surfaceflinger/SurfaceFlinger.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -1823,7 +1823,7 @@ void SurfaceFlinger::scheduleCommit(FrameHint hint) { if (hint == FrameHint::kActive) { if (hint == FrameHint::kActive) { mScheduler->resetIdleTimer(); mScheduler->resetIdleTimer(); } } mPowerAdvisor->notifyDisplayUpdateImminent(); mPowerAdvisor->notifyDisplayUpdateImminentAndCpuReset(); mScheduler->scheduleFrame(); mScheduler->scheduleFrame(); } } Loading
services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockAidlPowerHalWrapper.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -36,7 +36,7 @@ public: MockAidlPowerHalWrapper(); MockAidlPowerHalWrapper(); ~MockAidlPowerHalWrapper() override; ~MockAidlPowerHalWrapper() override; MOCK_METHOD(bool, setExpensiveRendering, (bool enabled), (override)); MOCK_METHOD(bool, setExpensiveRendering, (bool enabled), (override)); MOCK_METHOD(bool, notifyDisplayUpdateImminent, (), (override)); MOCK_METHOD(bool, notifyDisplayUpdateImminentAndCpuReset, (), (override)); MOCK_METHOD(bool, supportsPowerHintSession, (), (override)); MOCK_METHOD(bool, supportsPowerHintSession, (), (override)); MOCK_METHOD(bool, isPowerHintSessionRunning, (), (override)); MOCK_METHOD(bool, isPowerHintSessionRunning, (), (override)); MOCK_METHOD(void, restartPowerHintSession, (), (override)); MOCK_METHOD(void, restartPowerHintSession, (), (override)); Loading