diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index a86a0aac23f0895ab9d67bc8f9d0c9b5700c5381..311009064fda72c2b90c241d033a2a48ee4797cb 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -362,6 +362,7 @@ void LLImageGL::init(BOOL usemipmaps) mGLTextureCreated = FALSE ; mIsMask = FALSE; + mNeedsAlpahAndPickMask = TRUE ; } void LLImageGL::cleanup() @@ -1356,6 +1357,11 @@ void LLImageGL::setTarget(const LLGLenum target, const LLTexUnit::eTextureType b void LLImageGL::analyzeAlpha(const void* data_in, S32 w, S32 h) { + if(!mNeedsAlpahAndPickMask) + { + return ; + } + if (mFormatType != GL_UNSIGNED_BYTE) { llwarns << "Cannot analyze alpha for image with format type " << std::hex << mFormatType << std::dec << llendl; @@ -1416,6 +1422,11 @@ void LLImageGL::analyzeAlpha(const void* data_in, S32 w, S32 h) //---------------------------------------------------------------------------- void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in) { + if(!mNeedsAlpahAndPickMask) + { + return ; + } + if (mFormatType != GL_UNSIGNED_BYTE || mFormatPrimary != GL_RGBA) { diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index 09210b1ef180f24744ba934564a3964aa06de907..b58472d39845bdd759b73f2e0b8fd5d3ae096740 100644 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -167,6 +167,7 @@ class LLImageGL : public LLRefCount void init(BOOL usemipmaps); virtual void cleanup(); // Clean up the LLImageGL so it can be reinitialized. Be careful when using this in derived class destructors + void setNeedsAlpahAndPickMask(BOOL need_mask) {mNeedsAlpahAndPickMask = need_mask;} public: // Various GL/Rendering options S32 mTextureMemory; @@ -180,6 +181,7 @@ class LLImageGL : public LLRefCount S8 mAutoGenMips; BOOL mIsMask; + BOOL mNeedsAlpahAndPickMask; bool mGLTextureCreated ; LLGLuint mTexName;