Adding onscreen frame and script time for debugging.
Change-Id: I5780092d14d49dae556b9969b937c7768e705a64
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp
index d1784f3..61ef5d4 100644
--- a/libs/rs/rsContext.cpp
+++ b/libs/rs/rsContext.cpp
@@ -259,6 +259,44 @@
return 0 != strcmp(buf, "0");
}
+void Context::displayDebugStats()
+{
+ char buffer[128];
+ sprintf(buffer, "Frame %i ms, Script %i ms", mTimeMSLastFrame, mTimeMSLastScript);
+ float oldR = mStateVertex.color[0];
+ float oldG = mStateVertex.color[1];
+ float oldB = mStateVertex.color[2];
+ float oldA = mStateVertex.color[3];
+
+ float shadowCol = 0.2f;
+ mStateVertex.color[0] = shadowCol;
+ mStateVertex.color[1] = shadowCol;
+ mStateVertex.color[2] = shadowCol;
+ mStateVertex.color[3] = 1.0f;
+ if (!checkVersion2_0()) {
+ glColor4f(shadowCol, shadowCol, shadowCol, 1.0f);
+ }
+ mStateFont.renderText(buffer, 5, getHeight() - 5);
+
+ float textCol = 0.9f;
+ mStateVertex.color[0] = textCol;
+ mStateVertex.color[1] = textCol;
+ mStateVertex.color[2] = textCol;
+ mStateVertex.color[3] = 1.0f;
+ if (!checkVersion2_0()) {
+ glColor4f(textCol, textCol, textCol, 1.0f);
+ }
+ mStateFont.renderText(buffer, 4, getHeight() - 6);
+
+ mStateVertex.color[0] = oldR;
+ mStateVertex.color[1] = oldG;
+ mStateVertex.color[2] = oldB;
+ mStateVertex.color[3] = oldA;
+ if (!checkVersion2_0()) {
+ glColor4f(oldR, oldG, oldB, oldA);
+ }
+}
+
void * Context::threadProc(void *vrsc)
{
Context *rsc = static_cast<Context *>(vrsc);
@@ -271,6 +309,7 @@
rsc->props.mLogScripts = getProp("debug.rs.script");
rsc->props.mLogObjects = getProp("debug.rs.object");
rsc->props.mLogShaders = getProp("debug.rs.shader");
+ rsc->props.mLogVisual = getProp("debug.rs.visual");
ScriptTLSStruct *tlsStruct = new ScriptTLSStruct;
if (!tlsStruct) {
@@ -308,6 +347,11 @@
uint32_t targetTime = 0;
if (mDraw && rsc->mIsGraphicsContext) {
targetTime = rsc->runRootScript();
+
+ if(rsc->props.mLogVisual) {
+ rsc->displayDebugStats();
+ }
+
mDraw = targetTime && !rsc->mPaused;
rsc->timerSet(RS_TIMER_CLEAR_SWAP);
eglSwapBuffers(rsc->mEGL.mDisplay, rsc->mEGL.mSurface);
diff --git a/libs/rs/rsContext.h b/libs/rs/rsContext.h
index b8fffbf..2da3ab5 100644
--- a/libs/rs/rsContext.h
+++ b/libs/rs/rsContext.h
@@ -162,6 +162,7 @@
bool mLogScripts;
bool mLogObjects;
bool mLogShaders;
+ bool mLogVisual;
} props;
void dumpDebug() const;
@@ -257,6 +258,8 @@
void objDestroyOOBRun();
void objDestroyOOBDestroy();
+ void displayDebugStats();
+
private:
Context();