Make the renderscript timing logging available by setting debug.rs.profile=1
diff --git a/rsContext.cpp b/rsContext.cpp index ab8d065..cc11ab2 100644 --- a/rsContext.cpp +++ b/rsContext.cpp
@@ -20,12 +20,16 @@ #include <ui/FramebufferNativeWindow.h> #include <ui/EGLUtils.h> +#include <cutils/properties.h> + #include <GLES/gl.h> #include <GLES/glext.h> using namespace android; using namespace android::renderscript; +bool g_logTimes = -1; + pthread_key_t Context::gThreadTLSKey = 0; void Context::initEGL() @@ -113,9 +117,9 @@ bool Context::runRootScript() { -#if RS_LOG_TIMES - timerSet(RS_TIMER_CLEAR_SWAP); -#endif + if (this->logTimes) { + timerSet(RS_TIMER_CLEAR_SWAP); + } rsAssert(mRootScript->mEnviroment.mIsRoot); eglQuerySurface(mEGL.mDisplay, mEGL.mSurface, EGL_WIDTH, &mEGL.mWidth); @@ -136,9 +140,9 @@ glClear(GL_COLOR_BUFFER_BIT); } -#if RS_LOG_TIMES - timerSet(RS_TIMER_SCRIPT); -#endif + if (this->logTimes) { + timerSet(RS_TIMER_SCRIPT); + } bool ret = runScript(mRootScript.get(), 0); return ret; } @@ -204,11 +208,19 @@ mVertex->setupGL(this, &mStateVertex); } +static bool get_log_times() +{ + char buf[PROPERTY_VALUE_MAX]; + property_get("debug.rs.profile", buf, "0"); + return 0 != strcmp(buf, "0"); +} void * Context::threadProc(void *vrsc) { Context *rsc = static_cast<Context *>(vrsc); + rsc->logTimes = get_log_times(); + rsc->initEGL(); ScriptTLSStruct *tlsStruct = new ScriptTLSStruct; @@ -240,16 +252,16 @@ if (mDraw) { mDraw = rsc->runRootScript(); -#if RS_LOG_TIMES - rsc->timerSet(RS_TIMER_CLEAR_SWAP); -#endif + if (rsc->logTimes) { + rsc->timerSet(RS_TIMER_CLEAR_SWAP); + } eglSwapBuffers(rsc->mEGL.mDisplay, rsc->mEGL.mSurface); -#if RS_LOG_TIMES - rsc->timerFrame(); - rsc->timerSet(RS_TIMER_INTERNAL); - rsc->timerPrint(); - rsc->timerReset(); -#endif + if (rsc->logTimes) { + rsc->timerFrame(); + rsc->timerSet(RS_TIMER_INTERNAL); + rsc->timerPrint(); + rsc->timerReset(); + } } if (rsc->mObjDestroy.mNeedToEmpty) { rsc->objDestroyOOBRun();
diff --git a/rsContext.h b/rsContext.h index 3e07f3e..1fb697a 100644 --- a/rsContext.h +++ b/rsContext.h
@@ -143,6 +143,8 @@ bool checkVersion1_1() const {return (mGL.mMajorVersion > 1) || (mGL.mMinorVersion >= 1); } bool checkVersion2_0() const {return mGL.mMajorVersion >= 2; } + bool logTimes; + protected: Device *mDev; @@ -215,7 +217,6 @@ uint64_t mTimeLastFrame; }; - } } #endif
diff --git a/rsThreadIO.cpp b/rsThreadIO.cpp index db4bb81..4072f06 100644 --- a/rsThreadIO.cpp +++ b/rsThreadIO.cpp
@@ -42,13 +42,13 @@ uint32_t cmdID = 0; uint32_t cmdSize = 0; ret = true; -#if RS_LOG_TIMES - con->timerSet(Context::RS_TIMER_IDLE); -#endif + if (con->logTimes) { + con->timerSet(Context::RS_TIMER_IDLE); + } const void * data = mToCore.get(&cmdID, &cmdSize); -#if RS_LOG_TIMES - con->timerSet(Context::RS_TIMER_INTERNAL); -#endif + if (con->logTimes) { + con->timerSet(Context::RS_TIMER_INTERNAL); + } waitForCommand = false; //LOGV("playCoreCommands 3 %i %i", cmdID, cmdSize);
diff --git a/rsUtils.h b/rsUtils.h index ec928db..63d73a1 100644 --- a/rsUtils.h +++ b/rsUtils.h
@@ -41,8 +41,6 @@ #define rsAssert(v) while(0) #endif -#define RS_LOG_TIMES 0 - template<typename T> T rsMin(T in1, T in2) {