diff options
author | Nicolas Roard <nicolas@android.com> | 2011-02-28 14:05:24 -0800 |
---|---|---|
committer | Nicolas Roard <nicolas@android.com> | 2011-03-01 07:42:49 -0800 |
commit | a5a134d46fff70c2381580d79047dd08368f63ee (patch) | |
tree | 564d507971c1f7ff321823c4df90ef10cc371274 /WebCore/platform/graphics/android/GLWebViewState.cpp | |
parent | 96468506dc6d0b7d039b7fed0cf189f3b1b980eb (diff) | |
download | external_webkit-a5a134d46fff70c2381580d79047dd08368f63ee.zip external_webkit-a5a134d46fff70c2381580d79047dd08368f63ee.tar.gz external_webkit-a5a134d46fff70c2381580d79047dd08368f63ee.tar.bz2 |
GL perfs measurement
Change-Id: Id6e0b8199f82c44de0e7b1b7e7eb42bdb96bf908
Diffstat (limited to 'WebCore/platform/graphics/android/GLWebViewState.cpp')
-rw-r--r-- | WebCore/platform/graphics/android/GLWebViewState.cpp | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/WebCore/platform/graphics/android/GLWebViewState.cpp b/WebCore/platform/graphics/android/GLWebViewState.cpp index c65b763..c25a6e8 100644 --- a/WebCore/platform/graphics/android/GLWebViewState.cpp +++ b/WebCore/platform/graphics/android/GLWebViewState.cpp @@ -34,11 +34,14 @@ #include "TilesManager.h" #include <wtf/CurrentTime.h> -#ifdef DEBUG - #include <cutils/log.h> #include <wtf/text/CString.h> +#undef XLOGC +#define XLOGC(...) android_printLog(ANDROID_LOG_DEBUG, "GLWebViewState", __VA_ARGS__) + +#ifdef DEBUG + #undef XLOG #define XLOG(...) android_printLog(ANDROID_LOG_DEBUG, "GLWebViewState", __VA_ARGS__) @@ -84,6 +87,11 @@ GLWebViewState::GLWebViewState(android::Mutex* buttonMutex) #ifdef DEBUG_COUNT ClassTracker::instance()->increment("GLWebViewState"); #endif +#ifdef MEASURES_PERF + m_timeCounter = 0; + m_totalTimeCounter = 0; + m_measurePerfs = false; +#endif } GLWebViewState::~GLWebViewState() @@ -119,6 +127,12 @@ void GLWebViewState::setBaseLayer(BaseLayerAndroid* layer, const IntRect& rect, } inval(rect); +#ifdef MEASURES_PERF + if (m_measurePerfs && !showVisualIndicator) + dumpMeasures(); + m_measurePerfs = showVisualIndicator; +#endif + TilesManager::instance()->setShowVisualIndicator(showVisualIndicator); } @@ -302,6 +316,19 @@ void GLWebViewState::setViewport(SkRect& viewport, float scale) m_tiledPageB->updateBaseTileSize(); } +#ifdef MEASURES_PERF +void GLWebViewState::dumpMeasures() +{ + for (int i = 0; i < m_timeCounter; i++) { + XLOGC("%d delay: %d ms", m_totalTimeCounter + i, + static_cast<int>(m_delayTimes[i]*1000)); + m_delayTimes[i] = 0; + } + m_totalTimeCounter += m_timeCounter; + m_timeCounter = 0; +} +#endif // MEASURES_PERF + bool GLWebViewState::drawGL(IntRect& rect, SkRect& viewport, float scale, SkColor color) { glFinish(); @@ -320,7 +347,17 @@ bool GLWebViewState::drawGL(IntRect& rect, SkRect& viewport, float scale, SkColo m_baseLayerLock.unlock(); if (!baseLayer) return false; + bool ret = baseLayer->drawGL(rect, viewport, scale, color); + +#ifdef MEASURES_PERF + if (m_measurePerfs) { + m_delayTimes[m_timeCounter++] = delta; + if (m_timeCounter >= MAX_MEASURES_PERF) + dumpMeasures(); + } +#endif + SkSafeUnref(baseLayer); return ret; } |