#4758 Extra logging to track discard 6
Plus clamped some values and preventing decode from starting # Conflicts: # indra/newview/llviewertexture.cppmaster
parent
b8bc108ea7
commit
49caa5e179
|
|
@ -1548,7 +1548,7 @@ bool LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S
|
|||
if (discard_level < 0)
|
||||
{
|
||||
llassert(mCurrentDiscardLevel >= 0);
|
||||
discard_level = mCurrentDiscardLevel;
|
||||
discard_level = llmin(mCurrentDiscardLevel, MAX_DISCARD_LEVEL);
|
||||
}
|
||||
|
||||
// Actual image width/height = raw image width/height * 2^discard_level
|
||||
|
|
@ -1648,6 +1648,7 @@ bool LLImageGL::createGLTexture(S32 discard_level, const U8* data_in, bool data_
|
|||
discard_level = mCurrentDiscardLevel;
|
||||
}
|
||||
discard_level = llclamp(discard_level, 0, (S32)mMaxDiscardLevel);
|
||||
discard_level = llmin(discard_level, MAX_DISCARD_LEVEL);
|
||||
|
||||
if (main_thread // <--- always force creation of new_texname when not on main thread ...
|
||||
&& !defer_copy // <--- ... or defer copy is set
|
||||
|
|
|
|||
|
|
@ -1898,10 +1898,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
mHttpReplyOffset = 0;
|
||||
|
||||
mLoadedDiscard = mRequestedDiscard;
|
||||
if (mLoadedDiscard < 0)
|
||||
if (mLoadedDiscard < 0 || (mLoadedDiscard > MAX_DISCARD_LEVEL && mFormattedImage->getCodec() == IMG_CODEC_J2C))
|
||||
{
|
||||
LL_WARNS(LOG_TXT) << mID << " mLoadedDiscard is " << mLoadedDiscard
|
||||
<< ", should be >=0" << LL_ENDL;
|
||||
<< ", should be >=0 and <=" << MAX_DISCARD_LEVEL << LL_ENDL;
|
||||
}
|
||||
setState(DECODE_IMAGE);
|
||||
if (mWriteToCacheState != NOT_WRITE)
|
||||
|
|
@ -1963,14 +1963,27 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
LL_DEBUGS(LOG_TXT) << mID << " DECODE_IMAGE abort: mLoadedDiscard < 0" << LL_ENDL;
|
||||
return true;
|
||||
}
|
||||
|
||||
llassert_always(mFormattedImage.notNull());
|
||||
S32 discard = mHaveAllData && mFormattedImage->getCodec() != IMG_CODEC_J2C ? 0 : mLoadedDiscard;
|
||||
if (discard > MAX_DISCARD_LEVEL) // only warn for j2c
|
||||
{
|
||||
// We encode j2c with fixed amount of discard levels,
|
||||
// Trying to decode beyound that will fail.
|
||||
LL_WARNS(LOG_TXT) << "Decode entered with invalid discard. ID = " << mID << LL_ENDL;
|
||||
|
||||
//abort, don't decode
|
||||
setState(DONE);
|
||||
LL_DEBUGS(LOG_TXT) << mID << " DECODE_IMAGE abort: mLoadedDiscard > MAX_DISCARD_LEVEL" << LL_ENDL;
|
||||
return true;
|
||||
}
|
||||
|
||||
mDecodeTimer.reset();
|
||||
mRawImage = NULL;
|
||||
mAuxImage = NULL;
|
||||
llassert_always(mFormattedImage.notNull());
|
||||
|
||||
// if we have the entire image data (and the image is not J2C), decode the full res image
|
||||
// DO NOT decode a higher res j2c than was requested. This is a waste of time and memory.
|
||||
S32 discard = mHaveAllData && mFormattedImage->getCodec() != IMG_CODEC_J2C ? 0 : mLoadedDiscard;
|
||||
mDecoded = false;
|
||||
setState(DECODE_IMAGE_UPDATE);
|
||||
LL_DEBUGS(LOG_TXT) << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard
|
||||
|
|
|
|||
|
|
@ -2188,7 +2188,7 @@ bool LLViewerFetchedTexture::updateFetch()
|
|||
static LLCachedControl<U32> sTextureDiscardLevel(gSavedSettings, "TextureDiscardLevel");
|
||||
const U32 override_tex_discard_level = sTextureDiscardLevel();
|
||||
// </FS:Ansariel>
|
||||
if (override_tex_discard_level != 0)
|
||||
if (override_tex_discard_level != 0 && override_tex_discard_level <= MAX_DISCARD_LEVEL)
|
||||
{
|
||||
desired_discard = override_tex_discard_level;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue