Skip to content

Commit 8dfc1d0

Browse files
committed
viewer#2653 LOD textures weren't taking callback discard into account
1 parent 4b5fa53 commit 8dfc1d0

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

indra/newview/llviewertexture.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1691,6 +1691,7 @@ void LLViewerFetchedTexture::processTextureStats()
16911691
if(mDesiredDiscardLevel > mMinDesiredDiscardLevel)//need to load more
16921692
{
16931693
mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel);
1694+
mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S32)mLoadedCallbackDesiredDiscardLevel);
16941695
mFullyLoaded = false;
16951696
}
16961697
//setDebugText("fully loaded");
@@ -1740,6 +1741,7 @@ void LLViewerFetchedTexture::processTextureStats()
17401741
log((F32)mFullHeight / mKnownDrawHeight) / log_2);
17411742
mDesiredDiscardLevel = llclamp(mDesiredDiscardLevel, (S8)0, (S8)getMaxDiscardLevel());
17421743
mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, mMinDesiredDiscardLevel);
1744+
mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S32)mLoadedCallbackDesiredDiscardLevel);
17431745
}
17441746
mKnownDrawSizeChanged = false;
17451747

@@ -2464,6 +2466,7 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()
24642466
if (mIsRawImageValid)
24652467
{
24662468
// If we have an existing raw image, we have a baseline for the raw and auxiliary quality levels.
2469+
current_raw_discard = mRawDiscardLevel;
24672470
best_raw_discard = llmin(best_raw_discard, mRawDiscardLevel);
24682471
best_aux_discard = llmin(best_aux_discard, mRawDiscardLevel); // We always decode the aux when we decode the base raw
24692472
current_aux_discard = llmin(current_aux_discard, best_aux_discard);
@@ -2922,10 +2925,12 @@ void LLViewerLODTexture::processTextureStats()
29222925
{
29232926
// If the image has not been significantly visible in a while, we don't want it
29242927
mDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel, (S8)(MAX_DISCARD_LEVEL + 1));
2928+
mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S32)mLoadedCallbackDesiredDiscardLevel);
29252929
}
29262930
else if (!mFullWidth || !mFullHeight)
29272931
{
29282932
mDesiredDiscardLevel = getMaxDiscardLevel();
2933+
mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S32)mLoadedCallbackDesiredDiscardLevel);
29292934
}
29302935
else
29312936
{
@@ -2995,6 +3000,7 @@ void LLViewerLODTexture::processTextureStats()
29953000
// stop requesting more
29963001
mDesiredDiscardLevel = current_discard;
29973002
}
3003+
mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S32)mLoadedCallbackDesiredDiscardLevel);
29983004
}
29993005

30003006
if(mForceToSaveRawImage && mDesiredSavedRawDiscardLevel >= 0)

0 commit comments

Comments
 (0)