summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/graphics/android/GLWebViewState.cpp
diff options
context:
space:
mode:
authorNicolas Roard <nicolas@android.com>2011-02-28 14:05:24 -0800
committerNicolas Roard <nicolas@android.com>2011-03-01 07:42:49 -0800
commita5a134d46fff70c2381580d79047dd08368f63ee (patch)
tree564d507971c1f7ff321823c4df90ef10cc371274 /WebCore/platform/graphics/android/GLWebViewState.cpp
parent96468506dc6d0b7d039b7fed0cf189f3b1b980eb (diff)
downloadexternal_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.cpp41
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;
}