Merge change 26728 into eclair
* changes: Make the renderscript timing logging available by setting debug.rs.profile=1
This commit is contained in:
@@ -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::runScript(Script *s, uint32_t launchID)
|
||||
|
||||
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 @@ bool Context::runRootScript()
|
||||
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 @@ void Context::setupCheck()
|
||||
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 @@ void * Context::threadProc(void *vrsc)
|
||||
|
||||
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();
|
||||
|
||||
@@ -143,6 +143,8 @@ public:
|
||||
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 @@ private:
|
||||
uint64_t mTimeLastFrame;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -42,13 +42,13 @@ bool ThreadIO::playCoreCommands(Context *con, bool waitForCommand)
|
||||
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);
|
||||
|
||||
|
||||
@@ -41,8 +41,6 @@ namespace renderscript {
|
||||
#define rsAssert(v) while(0)
|
||||
#endif
|
||||
|
||||
#define RS_LOG_TIMES 0
|
||||
|
||||
template<typename T>
|
||||
T rsMin(T in1, T in2)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user