diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 3304ff7ebecdd8f1382064b6033eb39999a75079..e9501931eb851188d4caca961acab23debaa5411 100755
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1050,6 +1050,7 @@ void LLViewerFetchedTexture::loadFromFastCache()
 		{ 
 			//discard all oversized textures.
 			destroyRawImage();
+			llwarns << "oversized, setting as missing" << llendl;
 			setIsMissingAsset();
 			mRawDiscardLevel = INVALID_DISCARD_LEVEL ;
 		}
@@ -1316,6 +1317,7 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/)
 		// An inappropriately-sized image was uploaded (through a non standard client)
 		// We treat these images as missing assets which causes them to
 		// be renderd as 'missing image' and to stop requesting data
+		llwarns << "!size_ok, setting as missing" << llendl;
 		setIsMissingAsset();
 		destroyRawImage();
 		return FALSE;
@@ -1774,6 +1776,7 @@ bool LLViewerFetchedTexture::updateFetch()
 				{ 
 					//discard all oversized textures.
 					destroyRawImage();
+					llwarns << "oversize, setting as missing" << llendl;
 					setIsMissingAsset();
 					mRawDiscardLevel = INVALID_DISCARD_LEVEL ;
 					mIsFetching = FALSE ;
@@ -1803,6 +1806,7 @@ bool LLViewerFetchedTexture::updateFetch()
 				// We finished but received no data
 				if (current_discard < 0)
 				{
+					llwarns << "!mIsFetching, setting as missing" << llendl;
 					setIsMissingAsset();
 					desired_discard = -1;
 				}
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 6e7f6c9b32c1e360f8de626453bd1b61661eefa8..beadef34ba934e870ebb4aad69f207f6a9ed8b18 100755
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -1491,6 +1491,7 @@ void LLViewerTextureList::processImageNotInDatabase(LLMessageSystem *msg,void **
 	LLViewerFetchedTexture* image = gTextureList.findImage( image_id );
 	if( image )
 	{
+		llwarns << "not in db" << llendl;
 		image->setIsMissingAsset();
 	}
 }
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 735589414d6c7c179f4ee7c76bda1234262eebea..c654d9ea647c93795dbf785f1ff0de15036a264f 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4108,10 +4108,16 @@ std::string LLVOAvatar::bakedTextureOriginInfo()
 		{
 			has_host = true;
 		}
-		if (has_url && !has_host) result += "u"; // server-bake texture with url 
-		else if (has_host && !has_url) result += "h"; // old-style texture on sim
-		else if (has_host && has_url) result += "?"; // both origins?
-		else if (!has_host && !has_url) result += "n"; // no origin?
+		S32 discard = imagep->getDiscardLevel();
+		if (has_url && !has_host) result += discard ? "u" : "U"; // server-bake texture with url 
+		else if (has_host && !has_url) result += discard ? "h" : "H"; // old-style texture on sim
+		else if (has_host && has_url) result += discard ? "ERRx" : "ERRX"; // both origins?
+		else if (!has_host && !has_url) result += discard ? "ERRn" : "ERRN"; // no origin?
+		if (discard != 0)
+		{
+			result += llformat("(%d/%d)",discard,imagep->getDesiredDiscardLevel());
+		}
+
 	}
 	return result;
 }
@@ -6130,6 +6136,8 @@ LLMotion* LLVOAvatar::findMotion(const LLUUID& id) const
 	return mMotionController.findMotion(id);
 }
 
+// This is a semi-deprecated debugging tool - meshes will not show as
+// colorized if using deferred rendering.
 void LLVOAvatar::debugColorizeSubMeshes(U32 i, const LLColor4& color)
 {
 	if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
@@ -6244,29 +6252,7 @@ void LLVOAvatar::updateMeshTextures()
 		LLViewerTexLayerSet* layerset = getTexLayerSet(i);
 		if (use_lkg_baked_layer[i] && !isUsingLocalAppearance() )
 		{
-			LLViewerFetchedTexture* baked_img;
-#ifndef LL_RELEASE_FOR_DOWNLOAD
-			LLViewerFetchedTexture* existing_baked_img = LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[i].mLastTextureID);
-#endif
-			ETextureIndex te = ETextureIndex(mBakedTextureDatas[i].mTextureIndex);
-			const std::string url = getImageURL(te, mBakedTextureDatas[i].mLastTextureID);
-			if (!url.empty())
-			{
-				baked_img = LLViewerTextureManager::getFetchedTextureFromUrl(url, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, mBakedTextureDatas[i].mLastTextureID);
-			}
-			else
-			{
-				// Baked textures should be requested from the sim this avatar is on. JC
-				const LLHost target_host = getObjectHost();
-				if (!target_host.isOk())
-				{
-					llwarns << "updateMeshTextures: invalid host for object: " << getID() << llendl;
-				}
-
-				baked_img = LLViewerTextureManager::getFetchedTextureFromHost( mBakedTextureDatas[i].mLastTextureID, target_host );
-			}
-			llassert(baked_img == existing_baked_img);
-
+			LLViewerFetchedTexture* baked_img = LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[i].mLastTextureID);
 			mBakedTextureDatas[i].mIsUsed = TRUE;
 
 			debugColorizeSubMeshes(i,LLColor4::red);
@@ -7131,6 +7117,7 @@ void LLVOAvatar::getAnimNames( LLDynamicArray<std::string>* names )
 	names->put( "enter_away_from_keyboard_state" );
 }
 
+// static
 void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata )
 {
 	if (!userdata) return;
@@ -7149,7 +7136,7 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture
 		{
 			if (!aux_src->getData())
 			{
-				llerrs << "No auxiliary source data for onBakedTextureMasksLoaded" << llendl;
+				llerrs << "No auxiliary source (morph mask) data for image id " << id << llendl;
 				return;
 			}
 
@@ -7201,7 +7188,7 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture
 			}
 			if (!found_texture_id)
 			{
-				llinfos << "onBakedTextureMasksLoaded(): unexpected image id: " << id << llendl;
+				llinfos << "unexpected image id: " << id << llendl;
 			}
 			self->dirtyMesh();
 		}
@@ -7209,7 +7196,7 @@ void LLVOAvatar::onBakedTextureMasksLoaded( BOOL success, LLViewerFetchedTexture
 		{
             // this can happen when someone uses an old baked texture possibly provided by 
             // viewer-side baked texture caching
-			llwarns << "Masks loaded callback but NO aux source!" << llendl;
+			llwarns << "Masks loaded callback but NO aux source, id " << id << llendl;
 		}
 	}