diff options
Diffstat (limited to 'indra/llappearance')
| -rw-r--r-- | indra/llappearance/lltexlayer.cpp | 29 | 
1 files changed, 18 insertions, 11 deletions
| diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp index e368ace35e..f72f47723f 100644 --- a/indra/llappearance/lltexlayer.cpp +++ b/indra/llappearance/lltexlayer.cpp @@ -1293,7 +1293,7 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC  {      if (!force_render && !hasMorph())      { -        LL_DEBUGS() << "skipping renderMorphMasks for " << getUUID() << LL_ENDL; +        LL_DEBUGS("Morph") << "skipping renderMorphMasks for " << getUUID() << LL_ENDL;          return;      }      LL_PROFILE_ZONE_SCOPED; @@ -1325,7 +1325,7 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC          success &= param->render( x, y, width, height );          if (!success && !force_render)          { -            LL_DEBUGS() << "Failed to render param " << param->getID() << " ; skipping morph mask." << LL_ENDL; +            LL_DEBUGS("Morph") << "Failed to render param " << param->getID() << " ; skipping morph mask." << LL_ENDL;              return;          }      } @@ -1365,7 +1365,7 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC              }              else              { -                LL_WARNS() << "Skipping rendering of " << getInfo()->mStaticImageFileName +                LL_WARNS("Morph") << "Skipping rendering of " << getInfo()->mStaticImageFileName                          << "; expected 1 or 4 components." << LL_ENDL;              }          } @@ -1404,8 +1404,8 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC                  // We can get bad morph masks during login, on minimize, and occasional gl errors.                  // We should only be doing this when we believe something has changed with respect to the user's appearance.          { -                       LL_DEBUGS("Avatar") << "gl alpha cache of morph mask not found, doing readback: " << getName() << LL_ENDL; -                        // clear out a slot if we have filled our cache +            LL_DEBUGS("Morph") << "gl alpha cache of morph mask not found, doing readback: " << getName() << LL_ENDL; +            // clear out a slot if we have filled our cache              S32 max_cache_entries = getTexLayerSet()->getAvatarAppearance()->isSelf() ? 4 : 1;              while ((S32)mAlphaCache.size() >= max_cache_entries)              { @@ -1446,13 +1446,20 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC  #if GL_VERSION_1_1                      glGetTexImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_RGBA, GL_UNSIGNED_BYTE, temp);  #endif - -                    U8* alpha_cursor = alpha_data; -                    U8* pixel        = temp; -                    for (int i = 0; i < pixels; i++) +                    GLenum error = glGetError(); +                    if (error != GL_NO_ERROR) +                    { +                        LL_INFOS("Morph") << "GL Error while reading back morph texture. Error code: " << error << LL_ENDL; +                    } +                    else                      { -                        *alpha_cursor++ = pixel[3]; -                        pixel += 4; +                        U8* alpha_cursor = alpha_data; +                        U8* pixel = temp; +                        for (int i = 0; i < pixels; i++) +                        { +                            *alpha_cursor++ = pixel[3]; +                            pixel += 4; +                        }                      }                      gGL.getTexUnit(0)->disable(); | 
