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

Commit ba421a88 authored by Marin Shalamanov's avatar Marin Shalamanov
Browse files

Dump RefreshRateConfigs

Add RefreshRateConfigs dump to SurfaceFligner dumpsys, dumping the
current display mode and the list of supported display modes.
This is very useful for debugging because SF works with two types of
IDs  (HwcConfigIndexType and hal::HWConfigId).

Bug: 161776961
Test: adb shell dumpsys SurfaceFlinger
Change-Id: I628b842d46308a140b2985398672b4dce2e4b952
parent 4608442d
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -719,4 +719,26 @@ int RefreshRateConfigs::getRefreshRateDividerForUid(uid_t uid) const {
    return static_cast<int>(numPeriods);
}

void RefreshRateConfigs::dump(std::string& result) const {
    std::lock_guard lock(mLock);
    base::StringAppendF(&result, "DesiredDisplayConfigSpecs (DisplayManager): %s\n\n",
                        mDisplayManagerPolicy.toString().c_str());
    scheduler::RefreshRateConfigs::Policy currentPolicy = *getCurrentPolicyLocked();
    if (mOverridePolicy && currentPolicy != mDisplayManagerPolicy) {
        base::StringAppendF(&result, "DesiredDisplayConfigSpecs (Override): %s\n\n",
                            currentPolicy.toString().c_str());
    }

    auto config = mCurrentRefreshRate->hwcConfig;
    base::StringAppendF(&result, "Current config: %s\n", mCurrentRefreshRate->toString().c_str());

    result.append("Refresh rates:\n");
    for (const auto& [id, refreshRate] : mRefreshRates) {
        config = refreshRate->hwcConfig;
        base::StringAppendF(&result, "\t%s\n", refreshRate->toString().c_str());
    }

    result.append("\n");
}

} // namespace android::scheduler
+2 −0
Original line number Diff line number Diff line
@@ -322,6 +322,8 @@ public:
    // Returns a divider for the current refresh rate
    int getRefreshRateDividerForUid(uid_t) const EXCLUDES(mLock);

    void dump(std::string& result) const EXCLUDES(mLock);

private:
    friend class RefreshRateConfigsTest;

+2 −8
Original line number Diff line number Diff line
@@ -4374,16 +4374,10 @@ void SurfaceFlinger::dumpVSync(std::string& result) const {
                  "      present offset: %9" PRId64 " ns\t     VSYNC period: %9" PRId64 " ns\n\n",
                  dispSyncPresentTimeOffset, getVsyncPeriodFromHWC());

    scheduler::RefreshRateConfigs::Policy policy = mRefreshRateConfigs->getDisplayManagerPolicy();
    StringAppendF(&result, "DesiredDisplayConfigSpecs (DisplayManager): %s\n\n",
                  policy.toString().c_str());
    mRefreshRateConfigs->dump(result);

    StringAppendF(&result, "(config override by backdoor: %s)\n\n",
                  mDebugDisplayConfigSetByBackdoor ? "yes" : "no");
    scheduler::RefreshRateConfigs::Policy currentPolicy = mRefreshRateConfigs->getCurrentPolicy();
    if (currentPolicy != policy) {
        StringAppendF(&result, "DesiredDisplayConfigSpecs (Override): %s\n\n",
                      currentPolicy.toString().c_str());
    }

    mScheduler->dump(mAppConnectionHandle, result);
    mScheduler->dumpVsync(result);