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

Commit 39cde06a authored by Andy McFadden's avatar Andy McFadden Committed by Android Git Automerger
Browse files

am b6601961: Merge "DO NOT MERGE Add "dumpsys SurfaceFlinger --dispsync"" into klp-modular-dev

* commit 'b6601961':
  DO NOT MERGE Add "dumpsys SurfaceFlinger --dispsync"
parents 127b798f b6601961
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#define __STDC_LIMIT_MACROS

#include <math.h>
#include <inttypes.h>

#include <cutils/log.h>

@@ -487,4 +488,49 @@ void DispSync::resetErrorLocked() {
    }
}

void DispSync::dump(String8& result) const {
    Mutex::Autolock lock(mMutex);
    result.appendFormat("mPeriod: %"PRId64" ns\n", mPeriod);
    result.appendFormat("mPhase: %"PRId64" ns\n", mPhase);
    result.appendFormat("mError: %"PRId64" ns (sqrt: %.1f)\n",
            mError, sqrt(mError));
    result.appendFormat("mNumResyncSamplesSincePresent: %d (max %d)\n",
            mNumResyncSamplesSincePresent, MAX_RESYNC_SAMPLES_WITHOUT_PRESENT);
    result.appendFormat("mNumResyncSamples: %d (max %d)\n",
            mNumResyncSamples, MAX_RESYNC_SAMPLES);

    result.appendFormat("mResyncSamples:\n");
    nsecs_t previous = -1;
    for (size_t i = 0; i < mNumResyncSamples; i++) {
        size_t idx = (mFirstResyncSample + i) % MAX_RESYNC_SAMPLES;
        nsecs_t sampleTime = mResyncSamples[idx];
        if (i == 0) {
            result.appendFormat("  %"PRId64"\n", sampleTime);
        } else {
            result.appendFormat("  %"PRId64" (+%"PRId64")\n",
                    sampleTime, sampleTime - previous);
        }
        previous = sampleTime;
    }

    result.appendFormat("mPresentFences / mPresentTimes [%d]:\n",
            NUM_PRESENT_SAMPLES);
    previous = 0;
    for (size_t i = 0; i < NUM_PRESENT_SAMPLES; i++) {
        size_t idx = (i + mPresentSampleOffset) % NUM_PRESENT_SAMPLES;
        bool signaled = mPresentFences[idx] == NULL;
        nsecs_t presentTime = mPresentTimes[idx];
        if (!signaled) {
            result.appendFormat("  [unsignaled fence]\n");
        } else if (previous == 0) {
            result.appendFormat("  %"PRId64"\n", presentTime);
        } else {
            result.appendFormat("  %"PRId64" (+%"PRId64" / %.3f)\n",
                    presentTime, presentTime - previous,
                    (presentTime - previous) / (double) mPeriod);
        }
        previous = presentTime;
    }
}

} // namespace android
+3 −0
Original line number Diff line number Diff line
@@ -99,6 +99,9 @@ public:
    // DispSync object.
    status_t removeEventListener(const sp<Callback>& callback);

    // dump appends human-readable debug info to the result string.
    void dump(String8& result) const;

private:

    void updateModelLocked();
+7 −0
Original line number Diff line number Diff line
@@ -2202,6 +2202,13 @@ status_t SurfaceFlinger::dump(int fd, const Vector<String16>& args)
                clearStatsLocked(args, index, result);
                dumpAll = false;
            }

            if ((index < numArgs) &&
                    (args[index] == String16("--dispsync"))) {
                index++;
                mPrimaryDispSync.dump(result);
                dumpAll = false;
            }
        }

        if (dumpAll) {
+1 −1
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@

using namespace android;

int main(int argc, char** argv) {
int main(int, char**) {
    // When SF is launched in its own process, limit the number of
    // binder threads to 4.
    ProcessState::self()->setThreadPoolMaxThreadCount(4);