Added some glFlushes to lessen framestalls
This commit is contained in:
@@ -119,6 +119,8 @@ void LLTexUnit::refreshState(void)
|
||||
// We set dirty to true so that the tex unit knows to ignore caching
|
||||
// and we reset the cached tex unit state
|
||||
|
||||
gGL.flush();
|
||||
|
||||
glActiveTextureARB(GL_TEXTURE0_ARB + mIndex);
|
||||
|
||||
//
|
||||
@@ -163,6 +165,7 @@ void LLTexUnit::activate(void)
|
||||
|
||||
if ((S32)gGL.mCurrTextureUnitIndex != mIndex || gGL.mDirty)
|
||||
{
|
||||
gGL.flush();
|
||||
glActiveTextureARB(GL_TEXTURE0_ARB + mIndex);
|
||||
gGL.mCurrTextureUnitIndex = mIndex;
|
||||
}
|
||||
@@ -180,6 +183,7 @@ void LLTexUnit::enable(eTextureType type)
|
||||
disable(); // Force a disable of a previous texture type if it's enabled.
|
||||
}
|
||||
mCurrTexType = type;
|
||||
gGL.flush();
|
||||
if (mIndex < gGLManager.mNumTextureUnits)
|
||||
{
|
||||
glEnable(sGLTextureType[type]);
|
||||
@@ -195,6 +199,7 @@ void LLTexUnit::disable(void)
|
||||
{
|
||||
activate();
|
||||
unbind(mCurrTexType);
|
||||
gGL.flush();
|
||||
if (mIndex < gGLManager.mNumTextureUnits)
|
||||
{
|
||||
glDisable(sGLTextureType[mCurrTexType]);
|
||||
@@ -279,6 +284,7 @@ bool LLTexUnit::bind(LLImageGL* texture, bool for_rendering, bool forceBind)
|
||||
}
|
||||
if ((mCurrTexture != texture->getTexName()) || forceBind)
|
||||
{
|
||||
gGL.flush();
|
||||
activate();
|
||||
enable(texture->getTarget());
|
||||
mCurrTexture = texture->getTexName();
|
||||
@@ -406,6 +412,8 @@ void LLTexUnit::setTextureAddressMode(eTextureAddressMode mode)
|
||||
{
|
||||
if (mIndex < 0 || mCurrTexture == 0) return;
|
||||
|
||||
gGL.flush();
|
||||
|
||||
activate();
|
||||
|
||||
glTexParameteri (sGLTextureType[mCurrTexType], GL_TEXTURE_WRAP_S, sGLAddressMode[mode]);
|
||||
@@ -420,6 +428,8 @@ void LLTexUnit::setTextureFilteringOption(LLTexUnit::eTextureFilterOptions optio
|
||||
{
|
||||
if (mIndex < 0 || mCurrTexture == 0) return;
|
||||
|
||||
gGL.flush();
|
||||
|
||||
if (option == TFO_POINT)
|
||||
{
|
||||
glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
@@ -472,6 +482,8 @@ void LLTexUnit::setTextureBlendType(eTextureBlendType type)
|
||||
return;
|
||||
}
|
||||
|
||||
gGL.flush();
|
||||
|
||||
activate();
|
||||
mCurrBlendType = type;
|
||||
S32 scale_amount = 1;
|
||||
@@ -588,6 +600,7 @@ void LLTexUnit::setTextureCombiner(eTextureBlendOp op, eTextureBlendSrc src1, eT
|
||||
if (mCurrBlendType != TB_COMBINE || gGL.mDirty)
|
||||
{
|
||||
mCurrBlendType = TB_COMBINE;
|
||||
gGL.flush();
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
|
||||
}
|
||||
|
||||
@@ -598,6 +611,8 @@ void LLTexUnit::setTextureCombiner(eTextureBlendOp op, eTextureBlendSrc src1, eT
|
||||
return;
|
||||
}
|
||||
|
||||
gGL.flush();
|
||||
|
||||
// Get the gl source enums according to the eTextureBlendSrc sources passed in
|
||||
GLint source1 = getTextureSource(src1);
|
||||
GLint source2 = getTextureSource(src2);
|
||||
@@ -730,6 +745,7 @@ void LLTexUnit::setColorScale(S32 scale)
|
||||
if (mCurrColorScale != scale || gGL.mDirty)
|
||||
{
|
||||
mCurrColorScale = scale;
|
||||
gGL.flush();
|
||||
glTexEnvi( GL_TEXTURE_ENV, GL_RGB_SCALE, scale );
|
||||
}
|
||||
}
|
||||
@@ -739,6 +755,7 @@ void LLTexUnit::setAlphaScale(S32 scale)
|
||||
if (mCurrAlphaScale != scale || gGL.mDirty)
|
||||
{
|
||||
mCurrAlphaScale = scale;
|
||||
gGL.flush();
|
||||
glTexEnvi( GL_TEXTURE_ENV, GL_ALPHA_SCALE, scale );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user