diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2018-03-06 12:59:32 +0000 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2018-03-06 12:59:32 +0000 | 
| commit | 4156fb832c02f8ca07620ad9e0b0960320d57806 (patch) | |
| tree | 7d8f1ee68cc51f09b4299af4b60c1a4299cf73b0 | |
| parent | 8617e974272c71c768942e8e25e7e1761c003fb9 (diff) | |
MAINT-6363 Normal and specular maps should not be downloaded if ALM is off
| -rw-r--r-- | indra/llrender/llgltexture.h | 1 | ||||
| -rw-r--r-- | indra/newview/lltextureview.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llviewertexture.cpp | 17 | ||||
| -rw-r--r-- | indra/newview/llviewertexturelist.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 4 | 
6 files changed, 29 insertions, 11 deletions
diff --git a/indra/llrender/llgltexture.h b/indra/llrender/llgltexture.h index 45592ee077..70610d9626 100644 --- a/indra/llrender/llgltexture.h +++ b/indra/llrender/llgltexture.h @@ -49,6 +49,7 @@ public:  	enum EBoostLevel  	{  		BOOST_NONE 			= 0, +		BOOST_ALM			, //acts like NONE when ALM is on, max discard when ALM is off  		BOOST_AVATAR_BAKED	,  		BOOST_AVATAR		,  		BOOST_CLOUDS		, diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index b7786bcdd7..b504e50cf4 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -173,9 +173,9 @@ void LLTextureBar::draw()  	{  		color = LLColor4::green4;  	} -	else if (mImagep->getBoostLevel() > LLGLTexture::BOOST_NONE) +	else if (mImagep->getBoostLevel() > LLGLTexture::BOOST_ALM)  	{ -		color = LLColor4::magenta; +		color = LLColor4::magenta; // except none and alm  	}  	else if (mImagep->getDecodePriority() <= 0.0f)  	{ diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 5d49c888cf..624c48e945 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -4376,10 +4376,10 @@ void LLViewerObject::setTE(const U8 te, const LLTextureEntry &texture_entry)  	if (getTE(te)->getMaterialParams().notNull())  	{  		const LLUUID& norm_id = getTE(te)->getMaterialParams()->getNormalID(); -		mTENormalMaps[te] = LLViewerTextureManager::getFetchedTexture(norm_id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); +		mTENormalMaps[te] = LLViewerTextureManager::getFetchedTexture(norm_id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_ALM, LLViewerTexture::LOD_TEXTURE);  		const LLUUID& spec_id = getTE(te)->getMaterialParams()->getSpecularID(); -		mTESpecularMaps[te] = LLViewerTextureManager::getFetchedTexture(spec_id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); +		mTESpecularMaps[te] = LLViewerTextureManager::getFetchedTexture(spec_id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_ALM, LLViewerTexture::LOD_TEXTURE);  	}  } @@ -4502,14 +4502,14 @@ S32 LLViewerObject::setTETexture(const U8 te, const LLUUID& uuid)  S32 LLViewerObject::setTENormalMap(const U8 te, const LLUUID& uuid)  {  	LLViewerFetchedTexture *image = (uuid == LLUUID::null) ? NULL : LLViewerTextureManager::getFetchedTexture( -		uuid, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, LLHost()); +		uuid, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_ALM, LLViewerTexture::LOD_TEXTURE, 0, 0, LLHost());  	return setTENormalMapCore(te, image);  }  S32 LLViewerObject::setTESpecularMap(const U8 te, const LLUUID& uuid)  {  	LLViewerFetchedTexture *image = (uuid == LLUUID::null) ? NULL : LLViewerTextureManager::getFetchedTexture( -		uuid, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, LLHost()); +		uuid, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_ALM, LLViewerTexture::LOD_TEXTURE, 0, 0, LLHost());  	return setTESpecularMapCore(te, image);  } diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 2ad6198abd..39ffbfc989 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -718,6 +718,7 @@ void LLViewerTexture::setBoostLevel(S32 level)  	{  		mBoostLevel = level;  		if(mBoostLevel != LLViewerTexture::BOOST_NONE &&  +			mBoostLevel != LLViewerTexture::BOOST_ALM &&   			mBoostLevel != LLViewerTexture::BOOST_SELECTED &&   			mBoostLevel != LLViewerTexture::BOOST_ICON)  		{ @@ -1557,6 +1558,10 @@ void LLViewerFetchedTexture::processTextureStats()  		{  			mDesiredDiscardLevel = 0;  		} +		else if (!LLPipeline::sRenderDeferred && mBoostLevel == LLGLTexture::BOOST_ALM) +		{ +			mDesiredDiscardLevel = MAX_DISCARD_LEVEL + 1; +		}          else if (mDontDiscard && mBoostLevel == LLGLTexture::BOOST_ICON)          {              if (mFullWidth > MAX_IMAGE_SIZE_DEFAULT || mFullHeight > MAX_IMAGE_SIZE_DEFAULT) @@ -1824,8 +1829,9 @@ void LLViewerFetchedTexture::updateVirtualSize()  			{  				if(drawable->isRecentlyVisible())  				{ -					if (getBoostLevel() == LLViewerTexture::BOOST_NONE &&  -						drawable->getVObj() && drawable->getVObj()->isSelected()) +					if ((getBoostLevel() == LLViewerTexture::BOOST_NONE || getBoostLevel() == LLViewerTexture::BOOST_ALM) +						&& drawable->getVObj() +						&& drawable->getVObj()->isSelected())  					{  						setBoostLevel(LLViewerTexture::BOOST_SELECTED);  					} @@ -1842,6 +1848,7 @@ void LLViewerFetchedTexture::updateVirtualSize()  	if (getBoostLevel() ==  LLViewerTexture::BOOST_SELECTED &&   		gFrameTimeSeconds - mSelectedTime > SELECTION_RESET_TIME)  	{ +		// Could have been BOOST_ALM, but if user was working with this texture, better keep it as NONE  		setBoostLevel(LLViewerTexture::BOOST_NONE);  	} @@ -2115,7 +2122,7 @@ bool LLViewerFetchedTexture::updateFetch()  		// Load the texture progressively: we try not to rush to the desired discard too fast.  		// If the camera is not moving, we do not tweak the discard level notch by notch but go to the desired discard with larger boosted steps  		// This mitigates the "textures stay blurry" problem when loading while not killing the texture memory while moving around -		S32 delta_level = (mBoostLevel > LLGLTexture::BOOST_NONE) ? 2 : 1;  +		S32 delta_level = (mBoostLevel > LLGLTexture::BOOST_ALM) ? 2 : 1;   		if (current_discard < 0)  		{  			desired_discard = llmax(desired_discard, getMaxDiscardLevel() - delta_level); @@ -3127,6 +3134,10 @@ void LLViewerLODTexture::processTextureStats()  		if (mFullWidth > MAX_IMAGE_SIZE_DEFAULT || mFullHeight > MAX_IMAGE_SIZE_DEFAULT)  			mDesiredDiscardLevel = 1; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048  	} +	else if (!LLPipeline::sRenderDeferred && mBoostLevel == LLGLTexture::BOOST_ALM) +	{ +		mDesiredDiscardLevel = MAX_DISCARD_LEVEL + 1; +	}  	else if (mBoostLevel < LLGLTexture::BOOST_HIGH && mMaxVirtualSize <= 10.f)  	{  		// If the image has not been significantly visible in a while, we don't want it diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 45ea169fb8..4308405c64 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -509,6 +509,12 @@ LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id,  	LLPointer<LLViewerFetchedTexture> imagep = findImage(image_id, get_element_type(boost_priority));  	if (!imagep.isNull())  	{ +		if (boost_priority != LLViewerTexture::BOOST_ALM && imagep->getBoostLevel() == LLViewerTexture::BOOST_ALM) +		{ +			// Workaround: we need BOOST_ALM texture for something, 'rise' to NONE +			imagep->setDecodePriority(LLViewerTexture::BOOST_NONE); +		} +  		LLViewerFetchedTexture *texture = imagep.get();  		if (request_from_host.isOk() &&  			!texture->getTargetHost().isOk()) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 9958657246..9b0d9f4a7b 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -830,7 +830,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)  	{  		LLLightImageParams* params = (LLLightImageParams*) getParameterEntry(LLNetworkData::PARAMS_LIGHT_IMAGE);  		LLUUID id = params->getLightTexture(); -		mLightTexture = LLViewerTextureManager::getFetchedTexture(id); +		mLightTexture = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_ALM);  		if (mLightTexture.notNull())  		{  			F32 rad = getLightRadius(); @@ -3088,7 +3088,7 @@ LLViewerTexture* LLVOVolume::getLightTexture()  	{  		if (mLightTexture.isNull() || id != mLightTexture->getID())  		{ -			mLightTexture = LLViewerTextureManager::getFetchedTexture(id); +			mLightTexture = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, TRUE, LLGLTexture::BOOST_ALM);  		}  	}  	else  | 
