diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llrender/llimagegl.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolbump.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llspatialpartition.cpp | 9 | ||||
| -rw-r--r-- | indra/newview/llspatialpartition.h | 2 | ||||
| -rw-r--r-- | indra/newview/llstartup.cpp | 32 | ||||
| -rw-r--r-- | indra/newview/llviewerregion.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llviewertexture.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/llviewertexture.h | 1 | ||||
| -rw-r--r-- | indra/newview/llvocache.cpp | 18 | ||||
| -rwxr-xr-x | indra/newview/llvovolume.cpp | 7 | 
10 files changed, 69 insertions, 29 deletions
| diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 9ca3a23d52..7188b0fa44 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -1424,7 +1424,7 @@ void LLImageGL::deleteDeadTextures()  		{  			LLTexUnit* tex_unit = gGL.getTexUnit(i); -			if (tex_unit->getCurrTexture() == tex) +			if (tex_unit && tex_unit->getCurrTexture() == tex)  			{  				tex_unit->unbind(tex_unit->getCurrType());  				stop_glerror(); @@ -1887,6 +1887,7 @@ BOOL LLImageGL::getMask(const LLVector2 &tc)  void LLImageGL::setCategory(S32 category)   { +#if 0 //turn this off temporarily because it is not in use now.  	if(!gAuditTexture)  	{  		return ; @@ -1907,6 +1908,7 @@ void LLImageGL::setCategory(S32 category)  			mCategory = -1 ;  		}  	} +#endif  }  //for debug use  diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index 6f71c54f79..0742250b0b 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -155,6 +155,7 @@ void LLStandardBumpmap::addstandard()  			LLViewerTextureManager::getFetchedTexture(LLUUID(bump_image_id));	  		gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setBoostLevel(LLViewerTexture::BOOST_BUMP) ;  		gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->setLoadedCallback(LLBumpImageList::onSourceStandardLoaded, 0, TRUE, FALSE, NULL, NULL ); +		gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage->forceToSaveRawImage(0) ;  		LLStandardBumpmap::sStandardBumpmapCount++;  	} @@ -1078,6 +1079,7 @@ LLViewerTexture* LLBumpImageList::getBrightnessDarknessImage(LLViewerFetchedText  			{  				src_image->setBoostLevel(LLViewerTexture::BOOST_BUMP) ;  				src_image->setLoadedCallback( callback_func, 0, TRUE, FALSE, new LLUUID(src_image->getID()), NULL ); +				src_image->forceToSaveRawImage(0) ;  			}  		}  	} diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index e23b431457..fd17781a2e 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -523,6 +523,11 @@ void LLSpatialGroup::clearDrawMap()  	mDrawMap.clear();  } +BOOL LLSpatialGroup::isHUDGroup()  +{ +	return mSpatialPartition && mSpatialPartition->isHUDPartition() ;  +} +  BOOL LLSpatialGroup::isRecentlyVisible() const  {  	return (LLDrawable::getCurrentFrame() - mVisible[LLViewerCamera::sCurCameraID]) < LLDrawable::getMinVisFrameRange() ; @@ -4155,6 +4160,10 @@ void LLSpatialGroup::drawObjectBox(LLColor4 col)  	drawBox(mObjectBounds[0], size);  } +bool LLSpatialPartition::isHUDPartition()  +{  +	return mPartitionType == LLViewerRegion::PARTITION_HUD ; +}   BOOL LLSpatialPartition::isVisible(const LLVector3& v)  { diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index 54d5d36f6e..11955540c6 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -282,6 +282,7 @@ public:  	LLSpatialGroup(OctreeNode* node, LLSpatialPartition* part); +	BOOL isHUDGroup() ;  	BOOL isDead()							{ return isState(DEAD); }  	BOOL isState(U32 state) const;	  	BOOL isOcclusionState(U32 state) const	{ return mOcclusionState[LLViewerCamera::sCurCameraID] & state ? TRUE : FALSE; } @@ -470,6 +471,7 @@ public:  	S32 cull(LLCamera &camera, std::vector<LLDrawable *>* results = NULL, BOOL for_select = FALSE); // Cull on arbitrary frustum  	BOOL isVisible(const LLVector3& v); +	bool isHUDPartition() ;  	virtual LLSpatialBridge* asBridge() { return NULL; }  	virtual BOOL isBridge() { return asBridge() != NULL; } diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 7991233ace..880b437404 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -2556,22 +2556,32 @@ void init_start_screen(S32 location_id)  	else if(!start_image_bmp->load(temp_str) )  	{  		LL_WARNS("AppInit") << "Bitmap load failed" << LL_ENDL; -		return; +		gStartTexture = NULL;  	} +	else +	{ +		gStartImageWidth = start_image_bmp->getWidth(); +		gStartImageHeight = start_image_bmp->getHeight(); -	gStartImageWidth = start_image_bmp->getWidth(); -	gStartImageHeight = start_image_bmp->getHeight(); +		LLPointer<LLImageRaw> raw = new LLImageRaw; +		if (!start_image_bmp->decode(raw, 0.0f)) +		{ +			LL_WARNS("AppInit") << "Bitmap decode failed" << LL_ENDL; +			gStartTexture = NULL; +		} +		else +		{ +			raw->expandToPowerOfTwo(); +			gStartTexture = LLViewerTextureManager::getLocalTexture(raw.get(), FALSE) ; +		} +	} -	LLPointer<LLImageRaw> raw = new LLImageRaw; -	if (!start_image_bmp->decode(raw, 0.0f)) +	if(gStartTexture.isNull())  	{ -		LL_WARNS("AppInit") << "Bitmap decode failed" << LL_ENDL; -		gStartTexture = NULL; -		return; +		gStartTexture = LLViewerTexture::sBlackImagep ; +		gStartImageWidth = gStartTexture->getWidth() ; +		gStartImageHeight = gStartTexture->getHeight() ;  	} - -	raw->expandToPowerOfTwo(); -	gStartTexture = LLViewerTextureManager::getLocalTexture(raw.get(), FALSE) ;  } diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index db2dc531db..17f908d73f 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1193,6 +1193,7 @@ LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLViewerObjec  	eCacheUpdateResult result = CACHE_UPDATE_ADDED;  	if (mImpl->mCacheMap.size() > MAX_OBJECT_CACHE_ENTRIES)  	{ +		delete mImpl->mCacheMap.begin()->second ;  		mImpl->mCacheMap.erase(mImpl->mCacheMap.begin());  		result = CACHE_UPDATE_REPLACED; diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 5fcc57bc91..70509f9a9f 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -66,6 +66,7 @@  // statics  LLPointer<LLViewerTexture>        LLViewerTexture::sNullImagep = NULL; +LLPointer<LLViewerTexture>        LLViewerTexture::sBlackImagep = NULL;  LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sMissingAssetImagep = NULL;  LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sWhiteImagep = NULL;  LLPointer<LLViewerFetchedTexture> LLViewerFetchedTexture::sDefaultImagep = NULL; @@ -295,17 +296,23 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromHost(const  void LLViewerTextureManager::init()  { -	LLPointer<LLImageRaw> raw = new LLImageRaw(1,1,3); -	raw->clear(0x77, 0x77, 0x77, 0xFF); -	LLViewerTexture::sNullImagep = LLViewerTextureManager::getLocalTexture(raw.get(), TRUE) ; - -#if 1 -	LLPointer<LLViewerFetchedTexture> imagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT); -	LLViewerFetchedTexture::sDefaultImagep = imagep; +	{ +		LLPointer<LLImageRaw> raw = new LLImageRaw(1,1,3); +		raw->clear(0x77, 0x77, 0x77, 0xFF); +		LLViewerTexture::sNullImagep = LLViewerTextureManager::getLocalTexture(raw.get(), TRUE) ; +	}  	const S32 dim = 128;  	LLPointer<LLImageRaw> image_raw = new LLImageRaw(dim,dim,3);  	U8* data = image_raw->getData(); +	 +	memset(data, 0, dim * dim * 3) ; +	LLViewerTexture::sBlackImagep = LLViewerTextureManager::getLocalTexture(image_raw.get(), TRUE) ; + +#if 1 +	LLPointer<LLViewerFetchedTexture> imagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT); +	LLViewerFetchedTexture::sDefaultImagep = imagep; +	  	for (S32 i = 0; i<dim; i++)  	{  		for (S32 j = 0; j<dim; j++) @@ -359,6 +366,7 @@ void LLViewerTextureManager::cleanup()  	LLImageGL::sDefaultGLTexture = NULL ;  	LLViewerTexture::sNullImagep = NULL; +	LLViewerTexture::sBlackImagep = NULL;  	LLViewerFetchedTexture::sDefaultImagep = NULL;	  	LLViewerFetchedTexture::sSmokeImagep = NULL;  	LLViewerFetchedTexture::sMissingAssetImagep = NULL; diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index c5b8c8923a..de528927b4 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -330,6 +330,7 @@ public:  	static BOOL sUseTextureAtlas ;  	static LLPointer<LLViewerTexture> sNullImagep; // Null texture for non-textured objects. +	static LLPointer<LLViewerTexture> sBlackImagep;	// Texture to show NOTHING (pure black)  }; diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index f0b5b50feb..6d457434b5 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -621,16 +621,20 @@ void LLVOCache::readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::voca  				S32 num_entries;  				success = check_read(&apr_file, &num_entries, sizeof(S32)) ; -				for (S32 i = 0; success && i < num_entries; i++) +				if(success)  				{ -					LLVOCacheEntry* entry = new LLVOCacheEntry(&apr_file); -					if (!entry->getLocalID()) +					for (S32 i = 0; i < num_entries; i++)  					{ -						llwarns << "Aborting cache file load for " << filename << ", cache file corruption!" << llendl; -						delete entry ; -						success = false ; +						LLVOCacheEntry* entry = new LLVOCacheEntry(&apr_file); +						if (!entry->getLocalID()) +						{ +							llwarns << "Aborting cache file load for " << filename << ", cache file corruption!" << llendl; +							delete entry ; +							success = false ; +							break ; +						} +						cache_entry_map[entry->getLocalID()] = entry;  					} -					cache_entry_map[entry->getLocalID()] = entry;  				}  			}  		}		 diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index eb3ed3c379..528c7acbc8 100755 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -4490,6 +4490,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::  		std::sort(faces.begin(), faces.end(), LLFace::CompareDistanceGreater());  	} +	bool hud_group = group->isHUDGroup() ;  	std::vector<LLFace*>::iterator face_iter = faces.begin();  	LLSpatialGroup::buffer_map_t buffer_map; @@ -4760,7 +4761,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::  					registerFace(group, facep, LLRenderPass::PASS_INVISI_SHINY);  					registerFace(group, facep, LLRenderPass::PASS_INVISIBLE);  				} -				else if (LLPipeline::sRenderDeferred) +				else if (LLPipeline::sRenderDeferred && !hud_group)  				{ //deferred rendering  					if (te->getFullbright())  					{ //register in post deferred fullbright shiny pass @@ -4798,7 +4799,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::  				else if (fullbright || bake_sunlight)  				{ //fullbright  					registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT); -					if (LLPipeline::sRenderDeferred && LLPipeline::sRenderBump && te->getBumpmap()) +					if (LLPipeline::sRenderDeferred && !hud_group && LLPipeline::sRenderBump && te->getBumpmap())  					{ //if this is the deferred render and a bump map is present, register in post deferred bump  						registerFace(group, facep, LLRenderPass::PASS_POST_BUMP);  					} @@ -4824,7 +4825,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::  			}  			//not sure why this is here, and looks like it might cause bump mapped objects to get rendered redundantly -- davep 5/11/2010 -			if (!is_alpha && !LLPipeline::sRenderDeferred) +			if (!is_alpha && (hud_group || !LLPipeline::sRenderDeferred))  			{  				llassert((mask & LLVertexBuffer::MAP_NORMAL) || fullbright);  				facep->setPoolType((fullbright) ? LLDrawPool::POOL_FULLBRIGHT : LLDrawPool::POOL_SIMPLE); | 
