diff options
Diffstat (limited to 'indra/llrender')
| -rw-r--r-- | indra/llrender/llglheaders.h | 5 | ||||
| -rw-r--r-- | indra/llrender/llimagegl.cpp | 17 | ||||
| -rw-r--r-- | indra/llrender/llimagegl.h | 2 | 
3 files changed, 16 insertions, 8 deletions
| diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h index a0727b8686..509de51f4d 100644 --- a/indra/llrender/llglheaders.h +++ b/indra/llrender/llglheaders.h @@ -993,7 +993,12 @@ extern void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);  }  #endif +#if __MAC_OS_X_VERSION_MAX_ALLOWED <= 1070 +#include <OpenGL/gl.h> +#else  #include <AGL/gl.h> +#endif +  #endif // LL_MESA / LL_WINDOWS / LL_DARWIN diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index a842211764..a4d7872ec2 100644 --- 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 --- 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; } | 
