Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 437e7e59 authored by Wei Wang's avatar Wei Wang Committed by Android (Google) Code Review
Browse files

Merge "Send load reset hint from SF in advance of frame"

parents a3232bf4 15ecd1ce
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ public:
    MOCK_METHOD(void, setExpensiveRenderingExpected, (DisplayId displayId, bool expected),
                (override));
    MOCK_METHOD(bool, isUsingExpensiveRendering, (), (override));
    MOCK_METHOD(void, notifyDisplayUpdateImminent, (), (override));
    MOCK_METHOD(void, notifyDisplayUpdateImminentAndCpuReset, (), (override));
    MOCK_METHOD(bool, usePowerHintSession, (), (override));
    MOCK_METHOD(bool, supportsPowerHintSession, (), (override));
    MOCK_METHOD(bool, isPowerHintSessionRunning, (), (override));
+10 −5
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ using android::hardware::power::Boost;
using android::hardware::power::IPower;
using android::hardware::power::IPowerHintSession;
using android::hardware::power::Mode;
using android::hardware::power::SessionHint;
using android::hardware::power::WorkDuration;

PowerAdvisor::~PowerAdvisor() = default;
@@ -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
    // early-boot dependency on Power HAL
    if (!mBootFinished.load()) {
@@ -154,7 +155,7 @@ void PowerAdvisor::notifyDisplayUpdateImminent() {
            return;
        }

        if (!halWrapper->notifyDisplayUpdateImminent()) {
        if (!halWrapper->notifyDisplayUpdateImminentAndCpuReset()) {
            // The HAL has become unavailable; attempt to reconnect later
            mReconnectPowerHal = true;
            return;
@@ -599,7 +600,7 @@ public:
        return ret.isOk();
    }

    bool notifyDisplayUpdateImminent() override {
    bool notifyDisplayUpdateImminentAndCpuReset() override {
        // Power HAL 1.x doesn't have a notification for this
        ALOGV("HIDL notifyUpdateImminent received but can't send");
        return true;
@@ -675,8 +676,12 @@ bool AidlPowerHalWrapper::setExpensiveRendering(bool enabled) {
    return ret.isOk();
}

bool AidlPowerHalWrapper::notifyDisplayUpdateImminent() {
    ALOGV("AIDL notifyDisplayUpdateImminent");
bool AidlPowerHalWrapper::notifyDisplayUpdateImminentAndCpuReset() {
    ALOGV("AIDL notifyDisplayUpdateImminentAndCpuReset");
    if (isPowerHintSessionRunning()) {
        mPowerHintSession->sendHint(SessionHint::CPU_LOAD_RESET);
    }

    if (!mHasDisplayUpdateImminent) {
        ALOGV("Skipped sending DISPLAY_UPDATE_IMMINENT because HAL doesn't support it");
        return true;
+4 −4
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ public:
    virtual void onBootFinished() = 0;
    virtual void setExpensiveRenderingExpected(DisplayId displayId, bool expected) = 0;
    virtual bool isUsingExpensiveRendering() = 0;
    virtual void notifyDisplayUpdateImminent() = 0;
    virtual void notifyDisplayUpdateImminentAndCpuReset() = 0;
    // Checks both if it supports and if it's enabled
    virtual bool usePowerHintSession() = 0;
    virtual bool supportsPowerHintSession() = 0;
@@ -106,7 +106,7 @@ public:
        virtual ~HalWrapper() = default;

        virtual bool setExpensiveRendering(bool enabled) = 0;
        virtual bool notifyDisplayUpdateImminent() = 0;
        virtual bool notifyDisplayUpdateImminentAndCpuReset() = 0;
        virtual bool supportsPowerHintSession() = 0;
        virtual bool isPowerHintSessionRunning() = 0;
        virtual void restartPowerHintSession() = 0;
@@ -126,7 +126,7 @@ public:
    void onBootFinished() override;
    void setExpensiveRenderingExpected(DisplayId displayId, bool expected) override;
    bool isUsingExpensiveRendering() override { return mNotifiedExpensiveRendering; };
    void notifyDisplayUpdateImminent() override;
    void notifyDisplayUpdateImminentAndCpuReset() override;
    bool usePowerHintSession() override;
    bool supportsPowerHintSession() override;
    bool isPowerHintSessionRunning() override;
@@ -289,7 +289,7 @@ public:
    static std::unique_ptr<HalWrapper> connect();

    bool setExpensiveRendering(bool enabled) override;
    bool notifyDisplayUpdateImminent() override;
    bool notifyDisplayUpdateImminentAndCpuReset() override;
    bool supportsPowerHintSession() override;
    bool isPowerHintSessionRunning() override;
    void restartPowerHintSession() override;
+1 −1
Original line number Diff line number Diff line
@@ -1823,7 +1823,7 @@ void SurfaceFlinger::scheduleCommit(FrameHint hint) {
    if (hint == FrameHint::kActive) {
        mScheduler->resetIdleTimer();
    }
    mPowerAdvisor->notifyDisplayUpdateImminent();
    mPowerAdvisor->notifyDisplayUpdateImminentAndCpuReset();
    mScheduler->scheduleFrame();
}

+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ public:
    MockAidlPowerHalWrapper();
    ~MockAidlPowerHalWrapper() 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, isPowerHintSessionRunning, (), (override));
    MOCK_METHOD(void, restartPowerHintSession, (), (override));
Loading