am b6601961
: Merge "DO NOT MERGE Add "dumpsys SurfaceFlinger --dispsync"" into klp-modular-dev
* commit 'b66019615da8750588f1233a77b9c686b0a248c3': DO NOT MERGE Add "dumpsys SurfaceFlinger --dispsync"
This commit is contained in:
commit
39cde06aee
@ -20,6 +20,7 @@
|
|||||||
#define __STDC_LIMIT_MACROS
|
#define __STDC_LIMIT_MACROS
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
#include <cutils/log.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
|
} // namespace android
|
||||||
|
@ -99,6 +99,9 @@ public:
|
|||||||
// DispSync object.
|
// DispSync object.
|
||||||
status_t removeEventListener(const sp<Callback>& callback);
|
status_t removeEventListener(const sp<Callback>& callback);
|
||||||
|
|
||||||
|
// dump appends human-readable debug info to the result string.
|
||||||
|
void dump(String8& result) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void updateModelLocked();
|
void updateModelLocked();
|
||||||
|
@ -2202,6 +2202,13 @@ status_t SurfaceFlinger::dump(int fd, const Vector<String16>& args)
|
|||||||
clearStatsLocked(args, index, result);
|
clearStatsLocked(args, index, result);
|
||||||
dumpAll = false;
|
dumpAll = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((index < numArgs) &&
|
||||||
|
(args[index] == String16("--dispsync"))) {
|
||||||
|
index++;
|
||||||
|
mPrimaryDispSync.dump(result);
|
||||||
|
dumpAll = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dumpAll) {
|
if (dumpAll) {
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
using namespace android;
|
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
|
// When SF is launched in its own process, limit the number of
|
||||||
// binder threads to 4.
|
// binder threads to 4.
|
||||||
ProcessState::self()->setThreadPoolMaxThreadCount(4);
|
ProcessState::self()->setThreadPoolMaxThreadCount(4);
|
||||||
|
Loading…
Reference in New Issue
Block a user