From 9bee51c42eb8c3daffe7d6fa483edbb1689b94d2 Mon Sep 17 00:00:00 2001 From: Jason Sams Date: Wed, 5 Aug 2009 13:57:03 -0700 Subject: Remove useless slot from ProgramVertex. Optimize GL state setup. --- libs/rs/rsProgramFragment.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'libs/rs/rsProgramFragment.cpp') diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp index 628f93ec8d6d..ea507dc2fa42 100644 --- a/libs/rs/rsProgramFragment.cpp +++ b/libs/rs/rsProgramFragment.cpp @@ -39,8 +39,13 @@ ProgramFragment::~ProgramFragment() { } -void ProgramFragment::setupGL() +void ProgramFragment::setupGL(ProgramFragmentState *state) { + if ((state->mLast.get() == this) && !mDirty) { + return; + } + state->mLast.set(this); + for (uint32_t ct=0; ct < MAX_TEXTURE; ct++) { glActiveTexture(GL_TEXTURE0 + ct); if (!(mTextureEnableMask & (1 << ct)) || !mTextures[ct].get()) { @@ -90,8 +95,8 @@ void ProgramFragment::setupGL() } } - glActiveTexture(GL_TEXTURE0); + mDirty = false; } @@ -104,6 +109,7 @@ void ProgramFragment::bindTexture(uint32_t slot, Allocation *a) //LOGE("bindtex %i %p", slot, a); mTextures[slot].set(a); + mDirty = true; } void ProgramFragment::bindSampler(uint32_t slot, Sampler *s) @@ -114,6 +120,7 @@ void ProgramFragment::bindSampler(uint32_t slot, Sampler *s) } mSamplers[slot].set(s); + mDirty = true; } void ProgramFragment::setType(uint32_t slot, const Element *e, uint32_t dim) @@ -190,7 +197,7 @@ void rsi_ProgramFragmentBindTexture(Context *rsc, RsProgramFragment vpf, uint32_ ProgramFragment *pf = static_cast(vpf); pf->bindTexture(slot, static_cast(a)); if (pf == rsc->getFragment()) { - pf->setupGL(); + //pf->setupGL(); } } @@ -200,7 +207,7 @@ void rsi_ProgramFragmentBindSampler(Context *rsc, RsProgramFragment vpf, uint32_ pf->bindSampler(slot, static_cast(s)); if (pf == rsc->getFragment()) { - pf->setupGL(); + //pf->setupGL(); } } -- cgit v1.2.3-59-g8ed1b