diff options
| author | Mathias Agopian <mathias@google.com> | 2009-09-17 01:35:28 -0700 |
|---|---|---|
| committer | Mathias Agopian <mathias@google.com> | 2009-09-17 01:35:28 -0700 |
| commit | bcef9ac35da08b9f7f8a4728af94c23a7a010669 (patch) | |
| tree | c13c342c0265bc0b94608695d90e3edb6f54a918 /libs | |
| parent | 76f0111845f0886f522cfe1eb5ec1dee34181f7c (diff) | |
| download | frameworks_base-bcef9ac35da08b9f7f8a4728af94c23a7a010669.zip frameworks_base-bcef9ac35da08b9f7f8a4728af94c23a7a010669.tar.gz frameworks_base-bcef9ac35da08b9f7f8a4728af94c23a7a010669.tar.bz2 | |
add basic time stats for surfaces lock time
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/surfaceflinger/SurfaceFlinger.cpp | 5 | ||||
| -rw-r--r-- | libs/ui/SharedBufferStack.cpp | 16 |
2 files changed, 18 insertions, 3 deletions
diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp index a352431..31b5128 100644 --- a/libs/surfaceflinger/SurfaceFlinger.cpp +++ b/libs/surfaceflinger/SurfaceFlinger.cpp @@ -1521,6 +1521,7 @@ status_t SurfaceFlinger::dump(int fd, const Vector<String16>& args) /*** Layer ***/ sp<Layer> l = LayerBase::dynamicCast< Layer* >(layer.get()); if (l != 0) { + SharedBufferStack::Statistics stats = l->lcblk->getStats(); result.append( l->lcblk->dump(" ") ); sp<const Buffer> buf0(l->getBuffer(0)); sp<const Buffer> buf1(l->getBuffer(1)); @@ -1539,10 +1540,10 @@ status_t SurfaceFlinger::dump(int fd, const Vector<String16>& args) snprintf(buffer, SIZE, " " "format=%2d, [%3ux%3u:%3u] [%3ux%3u:%3u]," - " freezeLock=%p\n", + " freezeLock=%p, dq-q-time=%u us\n", l->pixelFormat(), w0, h0, s0, w1, h1, s1, - l->getFreezeLock().get()); + l->getFreezeLock().get(), stats.totalTime); result.append(buffer); buffer[0] = 0; } diff --git a/libs/ui/SharedBufferStack.cpp b/libs/ui/SharedBufferStack.cpp index 7789a3f..9ad4349 100644 --- a/libs/ui/SharedBufferStack.cpp +++ b/libs/ui/SharedBufferStack.cpp @@ -276,6 +276,8 @@ ssize_t SharedBufferClient::dequeue() LOGW("dequeue: tail=%d, head=%d, avail=%d, queued=%d", tail, stack.head, stack.available, stack.queued); } + + const nsecs_t dequeueTime = systemTime(SYSTEM_TIME_THREAD); //LOGD("[%d] about to dequeue a buffer", // mSharedStack->identity); @@ -296,6 +298,8 @@ ssize_t SharedBufferClient::dequeue() LOGD_IF(DEBUG_ATOMICS, "dequeued=%d, tail=%d, %s", dequeued, tail, dump("").string()); + mDequeueTime[dequeued] = dequeueTime; + return dequeued; } @@ -312,7 +316,7 @@ status_t SharedBufferClient::undoDequeue(int buf) status_t SharedBufferClient::lock(int buf) { LockCondition condition(this, buf); - status_t err = waitForCondition(condition); + status_t err = waitForCondition(condition); return err; } @@ -321,6 +325,9 @@ status_t SharedBufferClient::queue(int buf) QueueUpdate update(this); status_t err = updateCondition( update ); LOGD_IF(DEBUG_ATOMICS, "queued=%d, %s", buf, dump("").string()); + SharedBufferStack& stack( *mSharedStack ); + const nsecs_t now = systemTime(SYSTEM_TIME_THREAD); + stack.stats.totalTime = ns2us(now - mDequeueTime[buf]); return err; } @@ -393,5 +400,12 @@ Region SharedBufferServer::getDirtyRegion(int buffer) const return stack.getDirtyRegion(buffer); } +SharedBufferStack::Statistics SharedBufferServer::getStats() const +{ + SharedBufferStack& stack( *mSharedStack ); + return stack.stats; +} + + // --------------------------------------------------------------------------- }; // namespace android |
