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

Commit e25f352e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "TimeStats: bound the layer records and dump in SF dumpsys" into qt-dev

parents e84ab778 7eb58b7f
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -4885,6 +4885,9 @@ void SurfaceFlinger::dumpAllLocked(const DumpArgs& args, std::string& result) co
    result.append(mScheduler->doDump() + "\n");
    result.append(mScheduler->doDump() + "\n");
    StringAppendF(&result, "+  Smart video mode: %s\n\n", mUseSmart90ForVideo ? "on" : "off");
    StringAppendF(&result, "+  Smart video mode: %s\n\n", mUseSmart90ForVideo ? "on" : "off");
    result.append(mRefreshRateStats.doDump() + "\n");
    result.append(mRefreshRateStats.doDump() + "\n");

    result.append(mTimeStats->miniDump());
    result.append("\n");
}
}


const Vector<sp<Layer>>& SurfaceFlinger::getLayerSortedByZForHwcDisplay(DisplayId displayId) {
const Vector<sp<Layer>>& SurfaceFlinger::getLayerSortedByZForHwcDisplay(DisplayId displayId) {
+12 −1
Original line number Original line Diff line number Diff line
@@ -67,6 +67,16 @@ void TimeStats::parseArgs(bool asProto, const Vector<String16>& args, std::strin
    }
    }
}
}


std::string TimeStats::miniDump() {
    ATRACE_CALL();

    std::string result = "TimeStats miniDump:\n";
    std::lock_guard<std::mutex> lock(mMutex);
    android::base::StringAppendF(&result, "Number of tracked layers is %zu\n",
                                 mTimeStatsTracker.size());
    return result;
}

void TimeStats::incrementTotalFrames() {
void TimeStats::incrementTotalFrames() {
    if (!mEnabled.load()) return;
    if (!mEnabled.load()) return;


@@ -252,7 +262,8 @@ void TimeStats::setPostTime(int32_t layerID, uint64_t frameNumber, const std::st
          postTime);
          postTime);


    std::lock_guard<std::mutex> lock(mMutex);
    std::lock_guard<std::mutex> lock(mMutex);
    if (!mTimeStatsTracker.count(layerID) && layerNameIsValid(layerName)) {
    if (!mTimeStatsTracker.count(layerID) && mTimeStatsTracker.size() < MAX_NUM_LAYER_RECORDS &&
        layerNameIsValid(layerName)) {
        mTimeStatsTracker[layerID].layerName = layerName;
        mTimeStatsTracker[layerID].layerName = layerName;
    }
    }
    if (!mTimeStatsTracker.count(layerID)) return;
    if (!mTimeStatsTracker.count(layerID)) return;
+4 −2
Original line number Original line Diff line number Diff line
@@ -41,6 +41,7 @@ public:


    virtual void parseArgs(bool asProto, const Vector<String16>& args, std::string& result) = 0;
    virtual void parseArgs(bool asProto, const Vector<String16>& args, std::string& result) = 0;
    virtual bool isEnabled() = 0;
    virtual bool isEnabled() = 0;
    virtual std::string miniDump();


    virtual void incrementTotalFrames() = 0;
    virtual void incrementTotalFrames() = 0;
    virtual void incrementMissedFrames() = 0;
    virtual void incrementMissedFrames() = 0;
@@ -112,6 +113,7 @@ public:


    void parseArgs(bool asProto, const Vector<String16>& args, std::string& result) override;
    void parseArgs(bool asProto, const Vector<String16>& args, std::string& result) override;
    bool isEnabled() override;
    bool isEnabled() override;
    std::string miniDump() override;


    void incrementTotalFrames() override;
    void incrementTotalFrames() override;
    void incrementMissedFrames() override;
    void incrementMissedFrames() override;
@@ -137,8 +139,6 @@ public:
    void recordRefreshRate(uint32_t fps, nsecs_t duration) override;
    void recordRefreshRate(uint32_t fps, nsecs_t duration) override;
    void setPresentFenceGlobal(const std::shared_ptr<FenceTime>& presentFence) override;
    void setPresentFenceGlobal(const std::shared_ptr<FenceTime>& presentFence) override;


    // TODO(zzyiwei): Bound the timeStatsTracker with weighted LRU
    // static const size_t MAX_NUM_LAYER_RECORDS = 200;
    static const size_t MAX_NUM_TIME_RECORDS = 64;
    static const size_t MAX_NUM_TIME_RECORDS = 64;


private:
private:
@@ -159,6 +159,8 @@ private:
    std::unordered_map<int32_t, LayerRecord> mTimeStatsTracker;
    std::unordered_map<int32_t, LayerRecord> mTimeStatsTracker;
    PowerTime mPowerTime;
    PowerTime mPowerTime;
    GlobalRecord mGlobalRecord;
    GlobalRecord mGlobalRecord;

    static const size_t MAX_NUM_LAYER_RECORDS = 200;
};
};


} // namespace impl
} // namespace impl
+1 −0
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@ public:


    MOCK_METHOD3(parseArgs, void(bool, const Vector<String16>&, std::string&));
    MOCK_METHOD3(parseArgs, void(bool, const Vector<String16>&, std::string&));
    MOCK_METHOD0(isEnabled, bool());
    MOCK_METHOD0(isEnabled, bool());
    MOCK_METHOD0(miniDump, std::string());
    MOCK_METHOD0(incrementTotalFrames, void());
    MOCK_METHOD0(incrementTotalFrames, void());
    MOCK_METHOD0(incrementMissedFrames, void());
    MOCK_METHOD0(incrementMissedFrames, void());
    MOCK_METHOD0(incrementClientCompositionFrames, void());
    MOCK_METHOD0(incrementClientCompositionFrames, void());