diff options
| author | Oz Linden <oz@lindenlab.com> | 2012-08-15 17:07:10 -0400 | 
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2012-08-15 17:07:10 -0400 | 
| commit | 97106c2dea855e7a7a6378e0b6971d7a8226f1f6 (patch) | |
| tree | b1cc26bc18f8ec28fba94e0f91035bfb73d96452 /indra/llrender | |
| parent | 981190cf3151f436d370b841b1baa5a2a607b94d (diff) | |
| parent | f2eef652063f7f2aee7296ff41cf5d34272cc12b (diff) | |
merge changes for DRTVWR-194
Diffstat (limited to 'indra/llrender')
| -rwxr-xr-x[-rw-r--r--] | indra/llrender/llimagegl.cpp | 17 | ||||
| -rwxr-xr-x[-rw-r--r--] | indra/llrender/llimagegl.h | 2 | 
2 files changed, 11 insertions, 8 deletions
| diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index a842211764..a4d7872ec2 100644..100755 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -478,7 +478,7 @@ bool LLImageGL::checkSize(S32 width, S32 height)  	return check_power_of_two(width) && check_power_of_two(height);  } -void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents) +void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents, S32 discard_level)  {  	if (width != mWidth || height != mHeight || ncomponents != mComponents)  	{ @@ -511,6 +511,11 @@ void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents)  				width >>= 1;  				height >>= 1;  			} + +			if(discard_level > 0) +			{ +				mMaxDiscardLevel = llmax(mMaxDiscardLevel, (S8)discard_level); +			}  		}  		else  		{ @@ -860,14 +865,13 @@ BOOL LLImageGL::preAddToAtlas(S32 discard_level, const LLImageRaw* raw_image)  		llassert(mCurrentDiscardLevel >= 0);  		discard_level = mCurrentDiscardLevel;  	} -	discard_level = llclamp(discard_level, 0, (S32)mMaxDiscardLevel); - +	  	// Actual image width/height = raw image width/height * 2^discard_level  	S32 w = raw_image->getWidth() << discard_level;  	S32 h = raw_image->getHeight() << discard_level;  	// setSize may call destroyGLTexture if the size does not match -	setSize(w, h, raw_image->getComponents()); +	setSize(w, h, raw_image->getComponents(), discard_level);  	if( !mHasExplicitFormat )  	{ @@ -1264,8 +1268,7 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S  		llassert(mCurrentDiscardLevel >= 0);  		discard_level = mCurrentDiscardLevel;  	} -	discard_level = llclamp(discard_level, 0, (S32)mMaxDiscardLevel); - +	  	// Actual image width/height = raw image width/height * 2^discard_level  	S32 raw_w = imageraw->getWidth() ;  	S32 raw_h = imageraw->getHeight() ; @@ -1273,7 +1276,7 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S  	S32 h = raw_h << discard_level;  	// setSize may call destroyGLTexture if the size does not match -	setSize(w, h, imageraw->getComponents()); +	setSize(w, h, imageraw->getComponents(), discard_level);  	if( !mHasExplicitFormat )  	{ diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index e118c28c1b..cf3c484c79 100644..100755 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -100,7 +100,7 @@ protected:  public:  	virtual void dump();	// debugging info to llinfos -	void setSize(S32 width, S32 height, S32 ncomponents); +	void setSize(S32 width, S32 height, S32 ncomponents, S32 discard_level = -1);  	void setComponents(S32 ncomponents) { mComponents = (S8)ncomponents ;}  	void setAllowCompression(bool allow) { mAllowCompression = allow; } | 
