diff options
-rw-r--r-- | libs/rs/rsContext.cpp | 3 | ||||
-rw-r--r-- | libs/rs/rsContext.h | 1 | ||||
-rw-r--r-- | libs/rs/rsProgram.cpp | 13 | ||||
-rw-r--r-- | libs/rs/rsProgram.h | 2 | ||||
-rw-r--r-- | libs/rs/rsProgramFragment.cpp | 4 | ||||
-rw-r--r-- | libs/rs/rsProgramFragment.h | 2 | ||||
-rw-r--r-- | libs/rs/rsProgramVertex.cpp | 4 | ||||
-rw-r--r-- | libs/rs/rsProgramVertex.h | 2 | ||||
-rw-r--r-- | libs/rs/rsShaderCache.cpp | 18 | ||||
-rw-r--r-- | libs/rs/rsShaderCache.h | 2 |
10 files changed, 32 insertions, 19 deletions
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp index 96c289e..8f56efa 100644 --- a/libs/rs/rsContext.cpp +++ b/libs/rs/rsContext.cpp @@ -239,7 +239,7 @@ void Context::timerPrint() void Context::setupCheck() { if (checkVersion2_0()) { - mShaderCache.lookup(mVertex.get(), mFragment.get()); + mShaderCache.lookup(this, mVertex.get(), mFragment.get()); mFragmentStore->setupGL2(this, &mStateFragmentStore); mFragment->setupGL2(this, &mStateFragment, &mShaderCache); @@ -272,6 +272,7 @@ void * Context::threadProc(void *vrsc) rsc->props.mLogTimes = getProp("debug.rs.profile"); rsc->props.mLogScripts = getProp("debug.rs.script"); rsc->props.mLogObjects = getProp("debug.rs.objects"); + rsc->props.mLogShaders = getProp("debug.rs.shaders"); ScriptTLSStruct *tlsStruct = new ScriptTLSStruct; if (!tlsStruct) { diff --git a/libs/rs/rsContext.h b/libs/rs/rsContext.h index 790aca6..dd0423e 100644 --- a/libs/rs/rsContext.h +++ b/libs/rs/rsContext.h @@ -164,6 +164,7 @@ public: bool mLogTimes; bool mLogScripts; bool mLogObjects; + bool mLogShaders; } props; void dumpDebug() const; diff --git a/libs/rs/rsProgram.cpp b/libs/rs/rsProgram.cpp index bcda5fb..e6d1e36 100644 --- a/libs/rs/rsProgram.cpp +++ b/libs/rs/rsProgram.cpp @@ -125,13 +125,15 @@ void Program::createShader() { } -bool Program::loadShader(uint32_t type) +bool Program::loadShader(Context *rsc, uint32_t type) { mShaderID = glCreateShader(type); rsAssert(mShaderID); - LOGV("Loading shader type %x, ID %i", type, mShaderID); - LOGE(mShader.string()); + if (rsc->props.mLogShaders) { + LOGV("Loading shader type %x, ID %i", type, mShaderID); + LOGV(mShader.string()); + } if (mShaderID) { const char * ss = mShader.string(); @@ -156,7 +158,10 @@ bool Program::loadShader(uint32_t type) } } } - LOGV("--Shader load result %x ", glGetError()); + + if (rsc->props.mLogShaders) { + LOGV("--Shader load result %x ", glGetError()); + } return true; } diff --git a/libs/rs/rsProgram.h b/libs/rs/rsProgram.h index e9837b7..003498e 100644 --- a/libs/rs/rsProgram.h +++ b/libs/rs/rsProgram.h @@ -72,7 +72,7 @@ protected: String8 mAttribNames[MAX_ATTRIBS]; String8 mUniformNames[MAX_UNIFORMS]; - bool loadShader(uint32_t type); + bool loadShader(Context *, uint32_t type); public: void forceDirty() const {mDirty = true;} diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp index 2d18c42..c353301 100644 --- a/libs/rs/rsProgramFragment.cpp +++ b/libs/rs/rsProgramFragment.cpp @@ -161,8 +161,8 @@ void ProgramFragment::setupGL2(const Context *rsc, ProgramFragmentState *state, //LOGE("sgl2 frag2 %x", glGetError()); } -void ProgramFragment::loadShader() { - Program::loadShader(GL_FRAGMENT_SHADER); +void ProgramFragment::loadShader(Context *rsc) { + Program::loadShader(rsc, GL_FRAGMENT_SHADER); } void ProgramFragment::createShader() diff --git a/libs/rs/rsProgramFragment.h b/libs/rs/rsProgramFragment.h index 1f548ad..14b4ec3 100644 --- a/libs/rs/rsProgramFragment.h +++ b/libs/rs/rsProgramFragment.h @@ -50,7 +50,7 @@ public: void setTexEnable(uint32_t slot, bool); virtual void createShader(); - virtual void loadShader(); + virtual void loadShader(Context *rsc); virtual void init(Context *rsc); diff --git a/libs/rs/rsProgramVertex.cpp b/libs/rs/rsProgramVertex.cpp index 9a2edfc..058cd73 100644 --- a/libs/rs/rsProgramVertex.cpp +++ b/libs/rs/rsProgramVertex.cpp @@ -108,8 +108,8 @@ void ProgramVertex::setupGL(const Context *rsc, ProgramVertexState *state) mDirty = false; } -void ProgramVertex::loadShader() { - Program::loadShader(GL_VERTEX_SHADER); +void ProgramVertex::loadShader(Context *rsc) { + Program::loadShader(rsc, GL_VERTEX_SHADER); } void ProgramVertex::createShader() diff --git a/libs/rs/rsProgramVertex.h b/libs/rs/rsProgramVertex.h index b3115a3..4748acc 100644 --- a/libs/rs/rsProgramVertex.h +++ b/libs/rs/rsProgramVertex.h @@ -49,7 +49,7 @@ public: void transformToScreen(const Context *, float *v4out, const float *v3in) const; virtual void createShader(); - virtual void loadShader(); + virtual void loadShader(Context *); virtual void init(Context *); diff --git a/libs/rs/rsShaderCache.cpp b/libs/rs/rsShaderCache.cpp index 4b16677..8e2af34 100644 --- a/libs/rs/rsShaderCache.cpp +++ b/libs/rs/rsShaderCache.cpp @@ -41,13 +41,13 @@ ShaderCache::~ShaderCache() free(mEntries); } -bool ShaderCache::lookup(ProgramVertex *vtx, ProgramFragment *frag) +bool ShaderCache::lookup(Context *rsc, ProgramVertex *vtx, ProgramFragment *frag) { if (!vtx->getShaderID()) { - vtx->loadShader(); + vtx->loadShader(rsc); } if (!frag->getShaderID()) { - frag->loadShader(); + frag->loadShader(rsc); } //LOGV("ShaderCache lookup vtx %i, frag %i", vtx->getShaderID(), frag->getShaderID()); @@ -115,15 +115,21 @@ bool ShaderCache::lookup(ProgramVertex *vtx, ProgramFragment *frag) } for (uint32_t ct=0; ct < vtx->getAttribCount(); ct++) { e->mVtxAttribSlots[ct] = glGetAttribLocation(pgm, vtx->getAttribName(ct)); - LOGV("vtx A, %s = %d\n", vtx->getAttribName(ct).string(), e->mVtxAttribSlots[ct]); + if (rsc->props.mLogShaders) { + LOGV("vtx A, %s = %d\n", vtx->getAttribName(ct).string(), e->mVtxAttribSlots[ct]); + } } for (uint32_t ct=0; ct < vtx->getUniformCount(); ct++) { e->mVtxUniformSlots[ct] = glGetUniformLocation(pgm, vtx->getUniformName(ct)); - LOGV("vtx U, %s = %d\n", vtx->getUniformName(ct).string(), e->mVtxUniformSlots[ct]); + if (rsc->props.mLogShaders) { + LOGV("vtx U, %s = %d\n", vtx->getUniformName(ct).string(), e->mVtxUniformSlots[ct]); + } } for (uint32_t ct=0; ct < vtx->getUniformCount(); ct++) { e->mFragUniformSlots[ct] = glGetUniformLocation(pgm, frag->getUniformName(ct)); - LOGV("frag U, %s = %d\n", frag->getUniformName(ct).string(), e->mFragUniformSlots[ct]); + if (rsc->props.mLogShaders) { + LOGV("frag U, %s = %d\n", frag->getUniformName(ct).string(), e->mFragUniformSlots[ct]); + } } } diff --git a/libs/rs/rsShaderCache.h b/libs/rs/rsShaderCache.h index 4d9f8ec..ede3734 100644 --- a/libs/rs/rsShaderCache.h +++ b/libs/rs/rsShaderCache.h @@ -33,7 +33,7 @@ public: ShaderCache(); virtual ~ShaderCache(); - bool lookup(ProgramVertex *, ProgramFragment *); + bool lookup(Context *rsc, ProgramVertex *, ProgramFragment *); void cleanupVertex(uint32_t id); void cleanupFragment(uint32_t id); |