diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 97f07e5952dc2a4eac28b833c2330850701cb55d..793a6a15f30571dd5936305699796d3c4d728ebe 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -10733,17 +10733,6 @@
       <key>Value</key>
     <integer>0</integer>
     </map>
-  <key>RenderAutoMuteByteLimit</key>
-  <map>
-    <key>Comment</key>
-    <string>If avatar attachment size exceed this value (in bytes) attachment will not be rendered. Excludes attachments worn by own avatar.</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>U32</string>
-    <key>Value</key>
-    <integer>0</integer>
-  </map>
   <key>RenderAvatarMaxNonImpostors</key>
   <map>
     <key>Comment</key>
@@ -14346,17 +14335,6 @@
     <key>Value</key>
     <integer>1</integer>
   </map>
-    <key>RenderDelayVBUpdate</key>
-    <map>
-      <key>Comment</key>
-      <string>Delay vertex buffer updates until just before rendering</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
     <key>SocialPhotoResolution</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 79d92adcc22cfb6d486fd0e18152fc275bf39d9c..dd4530dae049fb0e391c979f00b9ef33bd86f321 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -35,7 +35,6 @@ RenderAvatarMaxNonImpostors 1   16
 RenderAvatarMaxComplexity          1	350000
 RenderAutoMuteSurfaceAreaLimit     1	1000.0
 RenderCubeMap				1	1
-RenderDelayVBUpdate			1	0
 RenderFarClip				1	256
 RenderFlexTimeFactor		1	1.0
 RenderFogRatio				1	4.0
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 72deabd9f1afae5bb68ee63d07551d5d5e4824c9..ef7827e59629c6ab84097cfec6bdc3c18a16998d 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -35,7 +35,6 @@ RenderAvatarMaxNonImpostors     1   16
 RenderAvatarMaxComplexity              1	350000
 RenderAutoMuteSurfaceAreaLimit     1	1000.0
 RenderCubeMap				1	1
-RenderDelayVBUpdate			1	0
 RenderFarClip				1	256
 RenderFlexTimeFactor		1	1.0
 RenderFogRatio				1	4.0
diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp
index d4d4f641cf53bace24987eaec2ee8b6cbc778b58..9b06936c1c4b42c941bf355834af4b54407bfe71 100644
--- a/indra/newview/llcontrolavatar.cpp
+++ b/indra/newview/llcontrolavatar.cpp
@@ -312,8 +312,8 @@ void LLControlAvatar::updateVolumeGeom()
         }
     }
 
-    gPipeline.markRebuild(mRootVolp->mDrawable, LLDrawable::REBUILD_ALL, TRUE);
-    mRootVolp->markForUpdate(TRUE);
+    gPipeline.markRebuild(mRootVolp->mDrawable, LLDrawable::REBUILD_ALL);
+    mRootVolp->markForUpdate();
 
     // Note that attachment overrides aren't needed here, have already
     // been applied at the time the mControlAvatar was created, in
@@ -597,7 +597,7 @@ void LLControlAvatar::updateAnimations()
         //if (!mRootVolp->isAnySelected())
         {
             updateVolumeGeom();
-            mRootVolp->recursiveMarkForUpdate(TRUE);
+            mRootVolp->recursiveMarkForUpdate();
         }
     }
 
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index ea59a413fafd203cae84303f1fe343f0fc38c62c..9d1b02cd8ac3d53f2416e561924167400f66f148 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -149,7 +149,7 @@ void LLDrawable::unload()
 {
 	LLVOVolume *pVVol = getVOVolume();
 	pVVol->setNoLOD();
-	pVVol->markForUpdate(TRUE);
+	pVVol->markForUpdate();
 }
 
 // static
@@ -535,7 +535,7 @@ void LLDrawable::makeActive()
 
 		if (mVObjp->getPCode() == LL_PCODE_VOLUME)
 		{
-			gPipeline.markRebuild(this, LLDrawable::REBUILD_VOLUME, TRUE);
+			gPipeline.markRebuild(this, LLDrawable::REBUILD_VOLUME);
 		}
 		updatePartition();
 	}
@@ -583,7 +583,7 @@ void LLDrawable::makeStatic(BOOL warning_enabled)
 		
 		if (mVObjp->getPCode() == LL_PCODE_VOLUME)
 		{
-			gPipeline.markRebuild(this, LLDrawable::REBUILD_VOLUME, TRUE);
+			gPipeline.markRebuild(this, LLDrawable::REBUILD_VOLUME);
 		}		
 		
 		if (mSpatialBridge)
@@ -659,7 +659,7 @@ F32 LLDrawable::updateXform(BOOL undamped)
 
 			if (getVOVolume() && !isRoot())
 			{ //child prim snapping to some position, needs a rebuild
-				gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
+				gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION);
 			}
 		}
 	}
@@ -683,7 +683,7 @@ F32 LLDrawable::updateXform(BOOL undamped)
 	
 	if (vec*vec > MIN_INTERPOLATE_DISTANCE_SQUARED)
 	{ //scale change requires immediate rebuild
-		gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
+		gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION);
 	}
 	else if (!isRoot() && 
 		 (!mVObjp->getAngularVelocity().isExactlyZero() ||
@@ -693,7 +693,7 @@ F32 LLDrawable::updateXform(BOOL undamped)
 		if (!isState(LLDrawable::ANIMATED_CHILD))
 		{			
 			setState(LLDrawable::ANIMATED_CHILD);
-			gPipeline.markRebuild(this, LLDrawable::REBUILD_ALL, TRUE);
+			gPipeline.markRebuild(this, LLDrawable::REBUILD_ALL);
 			mVObjp->dirtySpatialGroup();
 		}
 	}
@@ -702,7 +702,7 @@ F32 LLDrawable::updateXform(BOOL undamped)
 			|| (1.f - dot(old_rot, target_rot)) > 0.f))
 	{ //fix for BUG-840, MAINT-2275, MAINT-1742, MAINT-2247
         mVObjp->shrinkWrap();
-		gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
+		gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION);
 	}
 	else if (!getVOVolume() && !isAvatar())
 	{
@@ -813,7 +813,7 @@ void LLDrawable::updatePartition()
 	else
 	{
 		//a child prim moved and needs its verts regenerated
-		gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
+		gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION);
 	}
 }
 
@@ -938,7 +938,7 @@ void LLDrawable::updateTexture()
 
 	if (getVOVolume())
 	{
-		gPipeline.markRebuild(this, LLDrawable::REBUILD_MATERIAL, TRUE);
+		gPipeline.markRebuild(this, LLDrawable::REBUILD_MATERIAL);
 	}
 }
 
@@ -981,7 +981,7 @@ void LLDrawable::shiftPos(const LLVector4a &shift_vector)
 
 		if (rebuild)
 		{
-			gPipeline.markRebuild(this, LLDrawable::REBUILD_ALL, TRUE);
+			gPipeline.markRebuild(this, LLDrawable::REBUILD_ALL);
 		}
 
 		for (S32 i = 0; i < getNumFaces(); i++)
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 5554112043b19ab6d2a8b389fd331d93113bea5e..3c71d3e49d3a64be8206f3cd92b647d9df1f1a53 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -211,7 +211,7 @@ void LLFace::destroy()
 			if (group)
 			{
 				group->dirtyGeom();
-				gPipeline.markRebuild(group, TRUE);
+				gPipeline.markRebuild(group);
 			}
 		}
 	}
@@ -250,7 +250,7 @@ void LLFace::setPool(LLFacePool* new_pool, LLViewerTexture *texturep)
 
 			if (mDrawablep)
 			{
-				gPipeline.markRebuild(mDrawablep, LLDrawable::REBUILD_ALL, TRUE);
+				gPipeline.markRebuild(mDrawablep, LLDrawable::REBUILD_ALL);
 			}
 		}
 		mGeomIndex = 0;
@@ -332,7 +332,7 @@ void LLFace::dirtyTexture()
 
                     vobj->updateVisualComplexity();
 				}
-				gPipeline.markRebuild(drawablep, LLDrawable::REBUILD_VOLUME, FALSE);
+				gPipeline.markRebuild(drawablep, LLDrawable::REBUILD_VOLUME);
 			}
 		}
 	}
@@ -1174,6 +1174,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 		{
 			if (gDebugGL)
 			{
+                llassert(false);
 				LL_WARNS()	<< "Index buffer overflow!" << LL_ENDL;
 				LL_WARNS() << "Indices Count: " << mIndicesCount
 						<< " VF Num Indices: " << num_indices
@@ -1189,6 +1190,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 		{
 			if (gDebugGL)
 			{
+                llassert(false);
 				LL_WARNS() << "Vertex buffer overflow!" << LL_ENDL;
 			}
 			return FALSE;
diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp
index 500e3cc41b0f8da0af577d136e44d8924a5b63b4..c9370b49f1b19108c7f1109518d37ba1801ec782 100644
--- a/indra/newview/llflexibleobject.cpp
+++ b/indra/newview/llflexibleobject.cpp
@@ -348,7 +348,7 @@ void LLVolumeImplFlexible::doIdleUpdate()
 			if (mRenderRes == -1)
 			{
 				updateRenderRes();
-				gPipeline.markRebuild(drawablep, LLDrawable::REBUILD_POSITION, FALSE);
+				gPipeline.markRebuild(drawablep, LLDrawable::REBUILD_POSITION);
 			}
 			else
 			{
@@ -361,7 +361,7 @@ void LLVolumeImplFlexible::doIdleUpdate()
 				// MAINT-1890 Clamp the update period to ensure that the update_period is no greater than 32 frames
 				update_period = llclamp(update_period, 1U, 32U);
 
-				// We control how fast flexies update, buy splitting updates among frames
+				// We control how fast flexies update, buy splitting updates among frames   
 				U64 virtual_frame_num = LLTimer::getElapsedSeconds() / SEC_PER_FLEXI_FRAME;
 
 				if	(visible)
@@ -400,7 +400,7 @@ void LLVolumeImplFlexible::doIdleUpdate()
 							updateRenderRes();
 
                             mVO->shrinkWrap();
-							gPipeline.markRebuild(drawablep, LLDrawable::REBUILD_POSITION, FALSE);
+							gPipeline.markRebuild(drawablep, LLDrawable::REBUILD_POSITION);
 						}
 					}
 				}
diff --git a/indra/newview/llmanip.cpp b/indra/newview/llmanip.cpp
index 6589aa477ff45971a8b1d2835d35d83d060a8c10..feb691520f63f295183754b429e9520fb396a104 100644
--- a/indra/newview/llmanip.cpp
+++ b/indra/newview/llmanip.cpp
@@ -72,14 +72,14 @@ void LLManip::rebuild(LLViewerObject* vobj)
 	LLDrawable* drawablep = vobj->mDrawable;
 	if (drawablep && drawablep->getVOVolume())
 	{
-		gPipeline.markRebuild(drawablep,LLDrawable::REBUILD_VOLUME, TRUE);
+		gPipeline.markRebuild(drawablep,LLDrawable::REBUILD_VOLUME);
 		drawablep->setState(LLDrawable::MOVE_UNDAMPED); // force to UNDAMPED
 		drawablep->updateMove();
 		LLSpatialGroup* group = drawablep->getSpatialGroup();
 		if (group)
 		{
 			group->dirtyGeom();
-			gPipeline.markRebuild(group, TRUE);
+			gPipeline.markRebuild(group);
 		}
 
 		LLViewerObject::const_child_list_t& child_list = vobj->getChildren();
diff --git a/indra/newview/llsculptidsize.cpp b/indra/newview/llsculptidsize.cpp
index 3d5102902d33c5da5cd49833a2f7cb4e10944649..5d051d0ebf060bf093d1e48a408e0647701fbc39 100644
--- a/indra/newview/llsculptidsize.cpp
+++ b/indra/newview/llsculptidsize.cpp
@@ -85,29 +85,6 @@ void LLSculptIDSize::inc(const LLDrawable *pdrawable, int sz)
 		//trying insert the LLDrawable
 		mSizeInfo.get<tag_BY_DRAWABLE>().insert(Info(pdrawable, sz, nfo.mSharedSizeSum, sculptId));
 	}
-
-	static LLCachedControl<U32> render_auto_mute_byte_limit(gSavedSettings, "RenderAutoMuteByteLimit", 0U);
-
-	if (0 != render_auto_mute_byte_limit && total_size > render_auto_mute_byte_limit)
-	{
-		pair_iter_iter_BY_SCULPT_ID_t it_eqr = mSizeInfo.get<tag_BY_SCULPT_ID>().equal_range(sculptId);
-		for (; it_eqr.first != it_eqr.second; ++it_eqr.first)
-		{
-			const Info &i = *it_eqr.first;
-			LLVOVolume *pVVol = i.mDrawable->getVOVolume();
-			if (pVVol
-				&& !pVVol->isDead()
-				&& pVVol->isAttachment()
-				&& !pVVol->getAvatar()->isSelf()
-				&& LLVOVolume::NO_LOD != pVVol->getLOD()
-				)
-			{
-				addToUnloaded(sculptId);
-				//immediately
-				const_cast<LLDrawable*>(i.mDrawable)->unload();
-			}
-		}
-	}
 }
 
 void LLSculptIDSize::dec(const LLDrawable *pdrawable)
diff --git a/indra/newview/llsky.cpp b/indra/newview/llsky.cpp
index c5d49a81f141afecc99252dd5c589b658ce74f7f..4926b86b140520ea1c2023cad06b92757756a3ed 100644
--- a/indra/newview/llsky.cpp
+++ b/indra/newview/llsky.cpp
@@ -116,13 +116,13 @@ void LLSky::resetVertexBuffers()
 	if (gSky.mVOSkyp.notNull())
 	{
 		gPipeline.resetVertexBuffers(gSky.mVOSkyp->mDrawable);
-		gPipeline.markRebuild(gSky.mVOSkyp->mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+		gPipeline.markRebuild(gSky.mVOSkyp->mDrawable, LLDrawable::REBUILD_ALL);
 	}
 	if (gSky.mVOWLSkyp.notNull())
 	{
 		gSky.mVOWLSkyp->resetVertexBuffers();
 		gPipeline.resetVertexBuffers(gSky.mVOWLSkyp->mDrawable);
-		gPipeline.markRebuild(gSky.mVOWLSkyp->mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+		gPipeline.markRebuild(gSky.mVOWLSkyp->mDrawable, LLDrawable::REBUILD_ALL);
 	}
 }
 
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index f7df4286fe8f5e22ee77d87b83f52bf6ce22c03d..ed1c7c8dea27d8ff7824f5e92be542c7cc715236 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -246,7 +246,7 @@ BOOL LLSpatialGroup::addObject(LLDrawable *drawablep)
 		drawablep->setGroup(this);
 		setState(OBJECT_DIRTY | GEOM_DIRTY);
 		setOcclusionState(LLSpatialGroup::DISCARD_QUERY, LLSpatialGroup::STATE_MODE_ALL_CAMERAS);
-		gPipeline.markRebuild(this, TRUE);
+		gPipeline.markRebuild(this);
 		if (drawablep->isSpatialBridge())
 		{
 			mBridgeList.push_back((LLSpatialBridge*) drawablep);
@@ -368,7 +368,7 @@ BOOL LLSpatialGroup::removeObject(LLDrawable *drawablep, BOOL from_octree)
 	{
 		drawablep->setGroup(NULL);
 		setState(GEOM_DIRTY);
-		gPipeline.markRebuild(this, TRUE);
+		gPipeline.markRebuild(this);
 
 		if (drawablep->isSpatialBridge())
 		{
@@ -411,7 +411,7 @@ void LLSpatialGroup::shift(const LLVector4a &offset)
 		getSpatialPartition()->mPartitionType != LLViewerRegion::PARTITION_CONTROL_AV)
 	{
 		setState(GEOM_DIRTY);
-		gPipeline.markRebuild(this, TRUE);
+		gPipeline.markRebuild(this);
 	}
 }
 
@@ -537,7 +537,7 @@ LLSpatialGroup::LLSpatialGroup(OctreeNode* node, LLSpatialPartition* part) : LLO
 
 	sg_assert(mOctreeNode->getListenerCount() == 0);
 	setState(SG_INITIAL_STATE_MASK);
-	gPipeline.markRebuild(this, TRUE);
+	gPipeline.markRebuild(this);
     
     // let the reflection map manager know about this spatial group
     mReflectionProbe = gPipeline.mReflectionMapManager.registerSpatialGroup(this);
@@ -611,7 +611,7 @@ F32 LLSpatialPartition::calcDistance(LLSpatialGroup* group, LLCamera& camera)
 					//NOTE: If there is a trivial way to detect that alpha sorting here would not change the render order,
 					//not setting this node to dirty would be a very good thing
 					group->setState(LLSpatialGroup::ALPHA_DIRTY);
-					gPipeline.markRebuild(group, FALSE);
+					gPipeline.markRebuild(group);
 				}
 			}
 		}
@@ -783,7 +783,7 @@ void LLSpatialGroup::destroyGL(bool keep_occlusion)
 
 	if (!keep_occlusion)
 	{ //going to need a rebuild
-		gPipeline.markRebuild(this, TRUE);
+		gPipeline.markRebuild(this);
 	}
 
 	mLastUpdateTime = gFrameTimeSeconds;
@@ -1307,7 +1307,7 @@ class LLOctreeDirty : public OctreeTraveler
 			}
 			if (drawable->getVObj().notNull() && !group->getSpatialPartition()->mRenderByGroup)
 			{
-				gPipeline.markRebuild(drawable, LLDrawable::REBUILD_ALL, TRUE);
+				gPipeline.markRebuild(drawable, LLDrawable::REBUILD_ALL);
 			}
 		}
 
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index faeebc33ee98ca86c01849c58d5452f7f6565ca0..aae44091672f81b0ca4b325521e557d166b0e109 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -592,8 +592,6 @@ bool toggle_show_object_render_cost(const LLSD& newvalue)
 	return true;
 }
 
-void handleRenderAutoMuteByteLimitChanged(const LLSD& new_value);
-
 void handleTargetFPSChanged(const LLSD& newValue)
 {
     const auto targetFPS = gSavedSettings.getU32("TargetFPS");
@@ -826,7 +824,6 @@ void settings_setup_listeners()
     setting_setup_signal_listener(gSavedSettings, "SpellCheckDictionary", handleSpellCheckChanged);
     setting_setup_signal_listener(gSavedSettings, "LoginLocation", handleLoginLocationChanged);
     setting_setup_signal_listener(gSavedSettings, "DebugAvatarJoints", handleDebugAvatarJointsChanged);
-    setting_setup_signal_listener(gSavedSettings, "RenderAutoMuteByteLimit", handleRenderAutoMuteByteLimitChanged);
 
     setting_setup_signal_listener(gSavedSettings, "TargetFPS", handleTargetFPSChanged);
     setting_setup_signal_listener(gSavedSettings, "AutoTuneFPS", handleAutoTuneFPSChanged);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 7c4bd2b0698c76634d4f2f425eab21174055641e..d4c34a4e57a94bc7f9462465aaa0fc3ce94c5a01 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -4222,7 +4222,7 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data)
         //if (!avatarp->mRootVolp->isAnySelected())
         {
             avatarp->updateVolumeGeom();
-            avatarp->mRootVolp->recursiveMarkForUpdate(TRUE);
+            avatarp->mRootVolp->recursiveMarkForUpdate();
         }
     }
         
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 77b4804076b5fe02b69134423249620a59daccda..e67750af7cc16b71bde8679210d82152d302aabd 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -1051,7 +1051,7 @@ BOOL LLViewerObject::setDrawableParent(LLDrawable* parentp)
 		parentp->setState(LLDrawable::ACTIVE_CHILD);
 	}
 
-	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
+	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME);
 	if(	(old_parent != parentp && old_parent)
 		|| (parentp && parentp->isActive()))
 	{
@@ -2504,7 +2504,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
 		{
 // 			LL_DEBUGS() << "Clearing force invisible: " << mID << ":" << getPCodeString() << ":" << getPositionAgent() << LL_ENDL;
 			mDrawable->clearState(LLDrawable::FORCE_INVISIBLE);
-			gPipeline.markRebuild( mDrawable, LLDrawable::REBUILD_ALL, TRUE );
+			gPipeline.markRebuild( mDrawable, LLDrawable::REBUILD_ALL);
 		}
 	}
 
@@ -3166,7 +3166,7 @@ void LLViewerObject::linkControlAvatar()
             //if (!cav->mRootVolp->isAnySelected())
             {
                 cav->updateVolumeGeom();
-                cav->mRootVolp->recursiveMarkForUpdate(TRUE);
+                cav->mRootVolp->recursiveMarkForUpdate();
             }
         }
     }
@@ -4976,7 +4976,7 @@ void LLViewerObject::updateTEMaterialTextures(U8 te)
                         {
                             region->loadCacheMiscExtras(obj->getLocalID());
                         }
-                        obj->markForUpdate(FALSE);
+                        obj->markForUpdate();
                     }
                 });
         }
@@ -5210,7 +5210,7 @@ S32 LLViewerObject::setTEBumpmap(const U8 te, const U8 bump)
 		if (mDrawable.notNull() && retval)
 		{
 			gPipeline.markTextured(mDrawable);
-			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY, TRUE);
+			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY);
 		}
 	}
 	return retval;
@@ -5300,10 +5300,8 @@ S32 LLViewerObject::setTEMediaFlags(const U8 te, const U8 media_flags)
 		setChanged(TEXTURE);
 		if (mDrawable.notNull() && retval)
 		{
-			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_TCOORD, TRUE);
+			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_TCOORD);
 			gPipeline.markTextured(mDrawable);
-			// JC - probably only need this if changes texture coords
-			//gPipeline.markRebuild(mDrawable);
 		}
 	}
 	return retval;
@@ -6631,35 +6629,27 @@ void LLViewerObject::updateVolume(const LLVolumeParams& volume_params)
 	{
 		// Transmit the update to the simulator
 		sendShapeUpdate();
-		markForUpdate(TRUE);
+		markForUpdate();
 	}
 }
 
-void LLViewerObject::recursiveMarkForUpdate(BOOL priority)
+void LLViewerObject::recursiveMarkForUpdate()
 {
     for (LLViewerObject::child_list_t::iterator iter = mChildList.begin();
          iter != mChildList.end(); iter++)
     {
         LLViewerObject* child = *iter;
-        child->markForUpdate(priority);
+        child->markForUpdate();
     }
-    markForUpdate(priority);
+    markForUpdate();
 }
 
-void LLViewerObject::markForUpdate(BOOL priority)
+void LLViewerObject::markForUpdate()
 {
 	if (mDrawable.notNull())
 	{
 		gPipeline.markTextured(mDrawable);
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY, priority);
-	}
-}
-
-void LLViewerObject::markForUnload(BOOL priority)
-{
-	if (mDrawable.notNull())
-	{
-		gPipeline.markRebuild(mDrawable, LLDrawable::FOR_UNLOAD, priority);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY);
 	}
 }
 
@@ -6885,7 +6875,7 @@ U32 LLViewerObject::getPartitionType() const
 	return LLViewerRegion::PARTITION_NONE; 
 }
 
-void LLViewerObject::dirtySpatialGroup(BOOL priority) const
+void LLViewerObject::dirtySpatialGroup() const
 {
 	if (mDrawable)
 	{
@@ -6893,7 +6883,7 @@ void LLViewerObject::dirtySpatialGroup(BOOL priority) const
 		if (group)
 		{
 			group->dirtyGeom();
-			gPipeline.markRebuild(group, priority);
+			gPipeline.markRebuild(group);
 		}
 	}
 }
@@ -6903,11 +6893,6 @@ void LLViewerObject::dirtyMesh()
 	if (mDrawable)
 	{
 		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
-		/*LLSpatialGroup* group = mDrawable->getSpatialGroup();
-		if (group)
-		{
-			group->dirtyMesh();
-		}*/
 	}
 }
 
@@ -6928,7 +6913,7 @@ void LLStaticViewerObject::updateDrawable(BOOL force_damped)
 	if (mDrawable.notNull())
 	{
 		mDrawable->updateXform(TRUE);
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
 	}
 	clearChanged(SHIFTED);
 }
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index a18d07d970aa95fc6358b036e72c9f8c21df99d8..bf82c43cd35bd2f265f55a05281f6c74ad56b595 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -449,9 +449,8 @@ class LLViewerObject
 	void setIcon(LLViewerTexture* icon_image);
 	void clearIcon();
 
-    void recursiveMarkForUpdate(BOOL priority);
-	virtual void markForUpdate(BOOL priority);
-	void markForUnload(BOOL priority);
+    void recursiveMarkForUpdate();
+	virtual void markForUpdate();
 	void updateVolume(const LLVolumeParams& volume_params);
 	virtual	void updateSpatialExtents(LLVector4a& min, LLVector4a& max);
 	virtual F32 getBinRadius();
@@ -594,7 +593,7 @@ class LLViewerObject
 
 	virtual S32 getLOD() const { return 3; } 
 	virtual U32 getPartitionType() const;
-	virtual void dirtySpatialGroup(BOOL priority = FALSE) const;
+	void dirtySpatialGroup() const;
 	virtual void dirtyMesh();
 
 	virtual LLNetworkData* getParameterEntry(U16 param_type) const;
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index ea2a955ab1a682554e4f6d0f7c1c577f24d18ef8..e576784db803b6936ce6506dd30cec6548a24b28 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -2075,7 +2075,7 @@ void LLViewerObjectList::findOrphans(LLViewerObject* objectp, U32 ip, U32 port)
 				// Make the drawable visible again and set the drawable parent
 				childp->mDrawable->clearState(LLDrawable::FORCE_INVISIBLE);
 				childp->setDrawableParent(objectp->mDrawable); // LLViewerObjectList::findOrphans()
-				gPipeline.markRebuild( childp->mDrawable, LLDrawable::REBUILD_ALL, TRUE );
+				gPipeline.markRebuild( childp->mDrawable, LLDrawable::REBUILD_ALL);
 			}
 
 			// Make certain particles, icon and HUD aren't hidden
diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp
index 449fd4ba43c8b253ad0969bfaad7ef3d5f2ca8df..0f20076b04e9ed0b23a356f50bba7e1a3a422b00 100644
--- a/indra/newview/llviewerpartsim.cpp
+++ b/indra/newview/llviewerpartsim.cpp
@@ -264,7 +264,7 @@ BOOL LLViewerPartGroup::addPart(LLViewerPart* part, F32 desired_size)
 		return FALSE;
 	}
 
-	gPipeline.markRebuild(mVOPartGroupp->mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+	gPipeline.markRebuild(mVOPartGroupp->mDrawable, LLDrawable::REBUILD_ALL);
 	
 	mParticles.push_back(part);
 	part->mSkipOffset=mSkippedTime;
@@ -426,7 +426,7 @@ void LLViewerPartGroup::updateParticles(const F32 lastdt)
 		// we removed one or more particles, so flag this group for update
 		if (mVOPartGroupp.notNull())
 		{
-			gPipeline.markRebuild(mVOPartGroupp->mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+			gPipeline.markRebuild(mVOPartGroupp->mDrawable, LLDrawable::REBUILD_ALL);
 		}
 		LLViewerPartSim::decPartCount(removed);
 	}
@@ -766,7 +766,7 @@ void LLViewerPartSim::updateSimulation()
 		{
 			if (vobj && !vobj->isDead())
 			{
-				gPipeline.markRebuild(vobj->mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+				gPipeline.markRebuild(vobj->mDrawable, LLDrawable::REBUILD_ALL);
 			}
 			mViewerPartGroups[i]->updateParticles(dt * visirate);
 			mViewerPartGroups[i]->mSkippedTime=0.0f;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 341ef57d8ce4481df0e6a8c6c267fa9901d079bb..55bda561f377bf1a8e2de50690c31e690b3705b6 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1872,7 +1872,7 @@ BOOL LLVOAvatar::lineSegmentIntersect(const LLVector4a& start, const LLVector4a&
 						LLDrawable* drawable = attached_object->mDrawable;
 						if (drawable->isState(LLDrawable::RIGGED))
 						{ //regenerate octree for rigged attachment
-							gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_RIGGED, TRUE);
+							gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_RIGGED);
 						}
 					}
 				}
@@ -2289,7 +2289,7 @@ void LLVOAvatar::restoreMeshData()
 	}
 
 	// force mesh update as LOD might not have changed to trigger this
-	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY, TRUE);
+	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY);
 }
 
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 82dfb1ca2a0d06bb1ba48a8f00de707da766244f..6e5b387b36b3cde5bfed92d4820a12bb8d646433 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1038,7 +1038,7 @@ void LLVOAvatarSelf::restoreMeshData()
 	updateAttachmentVisibility(gAgentCamera.getCameraMode());
 
 	// force mesh update as LOD might not have changed to trigger this
-	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY, TRUE);
+	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY);
 }
 
 
diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp
index 0bbf47e5e03bd0aed1e844f2d26d27b8f548f11b..b814f15232d7352483411e23584aed9791ddc75f 100644
--- a/indra/newview/llvograss.cpp
+++ b/indra/newview/llvograss.cpp
@@ -264,7 +264,7 @@ U32 LLVOGrass::processUpdateMessage(LLMessageSystem *mesgsys,
 
 	if (mDrawable)
 	{
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME);
 	}
 
 	return retval;
@@ -290,12 +290,12 @@ void LLVOGrass::idleUpdate(LLAgent &agent, const F64 &time)
 	if (!LLVOTree::isTreeRenderingStopped() && !mNumBlades)//restart grass rendering
 	{
 		mNumBlades = GRASS_MAX_BLADES;
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
 		return;
 	}
 	if (mPatch && (mLastPatchUpdateTime != mPatch->getLastUpdateTime()))
 	{
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME);
 	}
 
 	return;
@@ -348,7 +348,7 @@ BOOL LLVOGrass::updateLOD()
 		{
 			mNumBlades = 0 ;
             face->setSize(0, 0);
-			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
 		}
 		return TRUE ;
 	}
@@ -373,7 +373,7 @@ BOOL LLVOGrass::updateLOD()
 		{
 			face->setSize(mNumBlades*8, mNumBlades*12);
 		}
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
 	}
 	else if (num_blades <= (mNumBlades >> 1))
 	{
@@ -386,7 +386,7 @@ BOOL LLVOGrass::updateLOD()
 		{
 			face->setSize(mNumBlades*8, mNumBlades*12);
 		}
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
 		return TRUE;
 	}
 
@@ -737,7 +737,7 @@ void LLVOGrass::updateDrawable(BOOL force_damped)
 	if (mDrawable.notNull())
 	{
 		mDrawable->updateXform(TRUE);
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
 	}
 	clearChanged(SHIFTED);
 }
diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp
index ac302ef421849e416fb3298adabb7a8eddd858bb..3ac04cf665f335e9e60110646610b29d073dff0a 100644
--- a/indra/newview/llvopartgroup.cpp
+++ b/indra/newview/llvopartgroup.cpp
@@ -287,7 +287,7 @@ BOOL LLVOPartGroup::updateGeometry(LLDrawable *drawable)
 
 	if (group && group->isVisible())
 	{
-		dirtySpatialGroup(TRUE);
+		dirtySpatialGroup();
 	}
 
 	if (!num_parts)
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 273eeb930cdfc69a6fa3ba8ad9db0fb4f810722a..20621665fa85f6126f81aac824ced904a0af3289 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -585,7 +585,7 @@ void LLVOSky::restoreGL()
 
 	if (mDrawable)
 	{
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME);
 	}
 
 }
@@ -770,7 +770,7 @@ bool LLVOSky::updateSky()
 
         if (mDrawable.notNull() && mDrawable->getFace(0) && !mDrawable->getFace(0)->getVertexBuffer())
         {
-            gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
+            gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME);
         }
         mCubeMapUpdateStage = -1;
     }
diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp
index 067272ec44d1e4c15843c12a8af25b1393729d4d..3f5f56d378036b80fac1b3ca5488d00ec02f438b 100644
--- a/indra/newview/llvosurfacepatch.cpp
+++ b/indra/newview/llvosurfacepatch.cpp
@@ -150,7 +150,7 @@ BOOL LLVOSurfacePatch::updateGeometry(LLDrawable *drawable)
 {
     LL_PROFILE_ZONE_SCOPED;
 
-	dirtySpatialGroup(TRUE);
+	dirtySpatialGroup();
 	
 	S32 min_comp, max_comp, range;
 	min_comp = lltrunc(mPatchp->getMinComposition());
@@ -785,7 +785,7 @@ void LLVOSurfacePatch::dirtyGeom()
 {
 	if (mDrawable)
 	{
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
 		LLFace* facep = mDrawable->getFace(0);
 		if (facep)
 		{
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
index 0da77e4f8b5cd8f7801cc1dad537f90584388050..36e6da802b1fde073600429cdbb71355c26e065e 100644
--- a/indra/newview/llvotree.cpp
+++ b/indra/newview/llvotree.cpp
@@ -376,11 +376,11 @@ void LLVOTree::idleUpdate(LLAgent &agent, const F64 &time)
 
 	if (mReferenceBuffer.isNull())
 	{
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
 	}
 	else if (trunk_LOD != mTrunkLOD)
 	{
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, FALSE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
 	}
 	else
 	{
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index aa60578cee75940cf063901f7b665a3b269799d7..7c7b91eae86bf360f2dfcc802492412b697d328f 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -410,7 +410,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
 
 			if (setVolume(volume_params, 0))
 			{
-				markForUpdate(TRUE);
+				markForUpdate();
 			}
 		}
 
@@ -421,10 +421,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
 		//
 
 		S32 result = unpackTEMessage(mesgsys, _PREHASH_ObjectData, (S32) block_num);
-		if (result & teDirtyBits)
-		{
-			updateTEData();
-		}
+		
 		if (result & TEM_CHANGE_MEDIA)
 		{
 			retval |= MEDIA_FLAGS_CHANGED;
@@ -446,7 +443,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
 
 			if (setVolume(volume_params, 0))
 			{
-				markForUpdate(TRUE);
+				markForUpdate();
 			}
 			S32 res2 = unpackTEMessage(*dp);
 			if (TEM_INVALID == res2)
@@ -464,10 +461,6 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
 			}
 			else 
 			{
-				if (res2 & teDirtyBits) 
-				{
-					updateTEData();
-				}
 				if (res2 & TEM_CHANGE_MEDIA)
 				{
 					retval |= MEDIA_FLAGS_CHANGED;
@@ -529,8 +522,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
 				S32 result = unpackTEMessage(tdp);
 				if (result & teDirtyBits)
 				{
-					updateTEData();
-                    if (mDrawable)
+					if (mDrawable)
                     { //on the fly TE updates break batches, isolate in octree
                         shrinkWrap();
                     }
@@ -755,24 +747,7 @@ void LLVOVolume::animateTextures()
 void LLVOVolume::updateTextures()
 {
     LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;
-	//const F32 TEXTURE_AREA_REFRESH_TIME = 1.f; // seconds
-	//if (mTextureUpdateTimer.getElapsedTimeF32() > TEXTURE_AREA_REFRESH_TIME)
-	{
-		updateTextureVirtualSize();
-
-		/*if (mDrawable.notNull() && !isVisible() && !mDrawable->isActive())
-		{ //delete vertex buffer to free up some VRAM
-			LLSpatialGroup* group  = mDrawable->getSpatialGroup();
-			if (group && (group->mVertexBuffer.notNull() || !group->mBufferMap.empty() || !group->mDrawMap.empty()))
-			{
-				group->destroyGL(true);
-
-				//flag the group as having changed geometry so it gets a rebuild next time
-				//it becomes visible
-				group->setState(LLSpatialGroup::GEOM_DIRTY | LLSpatialGroup::MESH_DIRTY | LLSpatialGroup::NEW_DRAWINFO);
-			}
-		}*/
-    }
+    updateTextureVirtualSize();
 }
 
 BOOL LLVOVolume::isVisible() const 
@@ -884,7 +859,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
 			if ((vsize < MIN_TEX_ANIM_SIZE && old_size > MIN_TEX_ANIM_SIZE) ||
 				(vsize > MIN_TEX_ANIM_SIZE && old_size < MIN_TEX_ANIM_SIZE))
 			{
-				gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_TCOORD, FALSE);
+				gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_TCOORD);
 			}
 		}
 				
@@ -935,7 +910,7 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
 				(texture_discard < current_discard || //texture has more data than last rebuild
 				current_discard < 0)) //no previous rebuild
 			{
-				gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, FALSE);
+				gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME);
 				mSculptChanged = TRUE;
 			}
 
@@ -1017,7 +992,7 @@ void LLVOVolume::setScale(const LLVector3 &scale, BOOL damped)
 
 		//since drawable transforms do not include scale, changing volume scale
 		//requires an immediate rebuild of volume verts.
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_POSITION, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_POSITION);
 
         if (mDrawable)
         {
@@ -1250,7 +1225,7 @@ void LLVOVolume::updateVisualComplexity()
 void LLVOVolume::notifyMeshLoaded()
 { 
 	mSculptChanged = TRUE;
-	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY, TRUE);
+	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_GEOMETRY);
 
     LLVOAvatar *av = getAvatar();
     if (av && !isAnimatedObject())
@@ -1381,7 +1356,7 @@ void LLVOVolume::sculpt()
 			LLVOVolume* volume = (*(mSculptTexture->getVolumeList(LLRender::SCULPT_TEX)))[i];
 			if (volume != this && volume->getVolume() == getVolume())
 			{
-				gPipeline.markRebuild(volume->mDrawable, LLDrawable::REBUILD_GEOMETRY, FALSE);
+				gPipeline.markRebuild(volume->mDrawable, LLDrawable::REBUILD_GEOMETRY);
 			}
 		}
 	}
@@ -1619,7 +1594,7 @@ BOOL LLVOVolume::updateLOD()
 
 	if (lod_changed)
 	{
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, FALSE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME);
 		mLODChanged = TRUE;
 	}
 	else
@@ -1648,7 +1623,7 @@ BOOL LLVOVolume::setDrawableParent(LLDrawable* parentp)
 	if (!mDrawable->isRoot())
 	{
 		// rebuild vertices in parent relative space
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME);
 
 		if (mDrawable->isActive() && !parentp->isActive())
 		{
@@ -1700,7 +1675,7 @@ BOOL LLVOVolume::setParent(LLViewerObject* parent)
 		if (ret && mDrawable)
 		{
 			gPipeline.markMoved(mDrawable);
-			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
+			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME);
 		}
         onReparent(old_parent, parent);
 	}
@@ -2088,7 +2063,7 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable)
 	LLSpatialGroup* group = drawable->getSpatialGroup();
 	if (group)
 	{
-		group->dirtyMesh();
+        gPipeline.markRebuild(group);
 	}
 
 	updateRelativeXform();
@@ -2105,7 +2080,7 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable)
 
 	if (mVolumeChanged || mFaceMappingChanged)
 	{
-		dirtySpatialGroup(drawable->isState(LLDrawable::IN_REBUILD_Q1));
+		dirtySpatialGroup();
 
 		bool was_regen_faces = false;
         should_update_octree_bounds = true;
@@ -2127,7 +2102,7 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable)
 	}
 	else if (mLODChanged || mSculptChanged || mColorChanged)
 	{
-		dirtySpatialGroup(drawable->isState(LLDrawable::IN_REBUILD_Q1));
+		dirtySpatialGroup();
 		compiled = TRUE;
         lodOrSculptChanged(drawable, compiled, should_update_octree_bounds);
 		
@@ -2298,7 +2273,7 @@ S32 LLVOVolume::setTEColor(const U8 te, const LLColor4& color)
 			gPipeline.markTextured(mDrawable);
 			//treat this alpha change as an LoD update since render batches may need to get rebuilt
 			mLODChanged = TRUE;
-			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, FALSE);
+			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME);
 		}
 		retval = LLPrimitive::setTEColor(te, color);
 		if (mDrawable.notNull() && retval)
@@ -2514,16 +2489,6 @@ S32 LLVOVolume::setTEScaleT(const U8 te, const F32 t)
 	return res;
 }
 
-
-void LLVOVolume::updateTEData()
-{
-	/*if (mDrawable.notNull())
-	{
-		mFaceMappingChanged = TRUE;
-		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_MATERIAL, TRUE);
-	}*/
-}
-
 bool LLVOVolume::hasMedia() const
 {
 	bool result = false;
@@ -3666,7 +3631,7 @@ BOOL LLVOVolume::setIsFlexible(BOOL is_flexible)
 		res = setVolume(volume_params, 1);
 		if (res)
 		{
-			markForUpdate(TRUE);
+			markForUpdate();
 		}
 	}
 	return res;
@@ -3714,7 +3679,7 @@ void LLVOVolume::onSetExtendedMeshFlags(U32 flags)
 	if (/*!getRootEdit()->isAnySelected() &&*/ mDrawable.notNull())
     {
         // Need to trigger rebuildGeom(), which is where control avatars get created/removed
-        getRootEdit()->recursiveMarkForUpdate(TRUE);
+        getRootEdit()->recursiveMarkForUpdate();
     }
     if (isAttachment() && getAvatarAncestor())
     {
@@ -4451,13 +4416,13 @@ void LLVOVolume::setSelected(BOOL sel)
 	LLViewerObject::setSelected(sel);
     if (isAnimatedObject())
     {
-        getRootEdit()->recursiveMarkForUpdate(TRUE);
+        getRootEdit()->recursiveMarkForUpdate();
     }
     else
     {
         if (mDrawable.notNull())
         {
-            markForUpdate(TRUE);
+            markForUpdate();
         }
     }
 }
@@ -4554,14 +4519,14 @@ const LLMatrix4& LLVOVolume::getWorldMatrix(LLXformMatrix* xform) const
 	return xform->getWorldMatrix();
 }
 
-void LLVOVolume::markForUpdate(BOOL priority)
+void LLVOVolume::markForUpdate()
 { 
     if (mDrawable)
     {
         shrinkWrap();
     }
 
-    LLViewerObject::markForUpdate(priority); 
+    LLViewerObject::markForUpdate(); 
     mVolumeChanged = TRUE; 
 }
 
@@ -5497,81 +5462,6 @@ void LLVolumeGeometryManager::getGeometry(LLSpatialGroup* group)
 
 }
 
-void handleRenderAutoMuteByteLimitChanged(const LLSD& new_value)
-{
-	static LLCachedControl<U32> render_auto_mute_byte_limit(gSavedSettings, "RenderAutoMuteByteLimit", 0U);
-
-	if (0 != render_auto_mute_byte_limit)
-	{
-		//for unload
-		LLSculptIDSize::container_BY_SIZE_view::iterator
-			itL = LLSculptIDSize::instance().getSizeInfo().get<LLSculptIDSize::tag_BY_SIZE>().lower_bound(render_auto_mute_byte_limit),
-			itU = LLSculptIDSize::instance().getSizeInfo().get<LLSculptIDSize::tag_BY_SIZE>().end();
-
-		for (; itL != itU; ++itL)
-		{
-			const LLSculptIDSize::Info &nfo = *itL;
-			LLVOVolume *pVVol = nfo.getPtrLLDrawable()->getVOVolume();
-			if (pVVol
-				&& !pVVol->isDead()
-				&& pVVol->isAttachment()
-				&& !pVVol->getAvatar()->isSelf()
-				&& LLVOVolume::NO_LOD != pVVol->getLOD()
-				)
-			{
-				//postponed
-				pVVol->markForUnload();
-				LLSculptIDSize::instance().addToUnloaded(nfo.getSculptId());
-			}
-		}
-
-		//for load if it was unload
-		itL = LLSculptIDSize::instance().getSizeInfo().get<LLSculptIDSize::tag_BY_SIZE>().begin();
-		itU = LLSculptIDSize::instance().getSizeInfo().get<LLSculptIDSize::tag_BY_SIZE>().upper_bound(render_auto_mute_byte_limit);
-
-		for (; itL != itU; ++itL)
-		{
-			const LLSculptIDSize::Info &nfo = *itL;
-			LLVOVolume *pVVol = nfo.getPtrLLDrawable()->getVOVolume();
-			if (pVVol
-				&& !pVVol->isDead()
-				&& pVVol->isAttachment()
-				&& !pVVol->getAvatar()->isSelf()
-				&& LLVOVolume::NO_LOD == pVVol->getLOD()
-				)
-			{
-				LLSculptIDSize::instance().remFromUnloaded(nfo.getSculptId());
-				pVVol->updateLOD();
-				pVVol->markForUpdate(TRUE);
-			}
-		}
-	}
-	else
-	{
-		LLSculptIDSize::instance().clearUnloaded();
-
-		LLSculptIDSize::container_BY_SIZE_view::iterator
-			itL = LLSculptIDSize::instance().getSizeInfo().get<LLSculptIDSize::tag_BY_SIZE>().begin(),
-			itU = LLSculptIDSize::instance().getSizeInfo().get<LLSculptIDSize::tag_BY_SIZE>().end();
-
-		for (; itL != itU; ++itL)
-		{
-			const LLSculptIDSize::Info &nfo = *itL;
-			LLVOVolume *pVVol = nfo.getPtrLLDrawable()->getVOVolume();
-			if (pVVol
-				&& !pVVol->isDead()
-				&& pVVol->isAttachment()
-				&& !pVVol->getAvatar()->isSelf()
-				&& LLVOVolume::NO_LOD == pVVol->getLOD()
-				) 
-			{
-				pVVol->updateLOD();
-				pVVol->markForUpdate(TRUE);
-			}
-		}
-	}
-}
-
 // add a face pointer to a list of face pointers without going over MAX_COUNT faces
 template<typename T>
 static inline void add_face(T*** list, U32* count, T* face)
@@ -5608,7 +5498,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 
 	if (!group->hasState(LLSpatialGroup::GEOM_DIRTY | LLSpatialGroup::ALPHA_DIRTY))
 	{
-		if (group->hasState(LLSpatialGroup::MESH_DIRTY) && !LLPipeline::sDelayVBUpdate)
+		if (group->hasState(LLSpatialGroup::MESH_DIRTY))
 		{
 			rebuildMesh(group);
 		}
@@ -6062,7 +5952,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 
 	group->mGeometryBytes = geometryBytes;
 
-	if (!LLPipeline::sDelayVBUpdate)
 	{
 		//drawables have been rebuilt, clear rebuild status
 		for (LLSpatialGroup::element_iter drawable_iter = group->getDataBegin(); drawable_iter != group->getDataEnd(); ++drawable_iter)
@@ -6078,12 +5967,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 	group->mLastUpdateTime = gFrameTimeSeconds;
 	group->mBuilt = 1.f;
 	group->clearState(LLSpatialGroup::GEOM_DIRTY | LLSpatialGroup::ALPHA_DIRTY);
-
-	if (LLPipeline::sDelayVBUpdate)
-	{
-		group->setState(LLSpatialGroup::MESH_DIRTY | LLSpatialGroup::NEW_DRAWINFO);
-	}
-
 }
 
 void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
@@ -6135,7 +6018,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
 									vobj->getRelativeXform(), vobj->getRelativeXformInvTrans(), face->getGeomIndex()))
 								{ //something's gone wrong with the vertex buffer accounting, rebuild this group 
 									group->dirtyGeom();
-									gPipeline.markRebuild(group, TRUE);
+									gPipeline.markRebuild(group);
 								}
 
                                 buff->unmapBuffer();
@@ -6497,7 +6380,6 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
 				//for debugging, set last time face was updated vs moved
 				facep->updateRebuildFlags();
 
-				if (!LLPipeline::sDelayVBUpdate)
 				{ //copy face geometry into vertex buffer
 					LLDrawable* drawablep = facep->getDrawable();
 					LLVOVolume* vobj = drawablep->getVOVolume();
diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h
index d509a7e2ab7764637fcf328d78030d87f3e33690..acba18383f9fc6fd8ea75a14bfb684df2623b2e7 100644
--- a/indra/newview/llvovolume.h
+++ b/indra/newview/llvovolume.h
@@ -179,8 +179,7 @@ class LLVOVolume : public LLViewerObject
 	F32 getVObjRadius() const override				{ return mVObjRadius; };
 				const LLMatrix4& getWorldMatrix(LLXformMatrix* xform) const override;
 
-				void	markForUpdate(BOOL priority) override;
-				void	markForUnload()							{ LLViewerObject::markForUnload(TRUE); mVolumeChanged = TRUE; }
+				void	markForUpdate() override;
 				void    faceMappingChanged() override           { mFaceMappingChanged=TRUE; }
 
 	/*virtual*/ void	onShift(const LLVector4a &shift_vector) override; // Called when the drawable shifts
@@ -422,8 +421,7 @@ class LLVOVolume : public LLViewerObject
 	S32	computeLODDetail(F32 distance, F32 radius, F32 lod_factor);
 	BOOL calcLOD();
 	LLFace* addFace(S32 face_index);
-	void updateTEData();
-
+	
 	// stats tracking for render complexity
 	static S32 mRenderComplexity_last;
 	static S32 mRenderComplexity_current;
diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp
index 86e4853280939d0a409314e7dd7a8ce16c71f138..9b2871c6a9928c5311a7799f11923d993c7ff05e 100644
--- a/indra/newview/llvowlsky.cpp
+++ b/indra/newview/llvowlsky.cpp
@@ -124,7 +124,7 @@ void LLVOWLSky::resetVertexBuffers()
 	mStarsVerts = nullptr;
     mFsSkyVerts = nullptr;
 
-	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
 }
 	
 void LLVOWLSky::cleanupGL()
@@ -139,7 +139,7 @@ void LLVOWLSky::cleanupGL()
 void LLVOWLSky::restoreGL()
 {
 	LLDrawPoolWLSky::restoreGL();
-	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
 }
 
 BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 7f1db9b61ea8af83e7ffdff9ec6bfcfe49bdae69..9960ce7bd0632d88006b0c37324eb1a938038994 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -283,7 +283,6 @@ bool	LLPipeline::sRenderHighlight = true;
 LLRender::eTexIndex LLPipeline::sRenderHighlightTextureChannel = LLRender::DIFFUSE_MAP;
 bool	LLPipeline::sForceOldBakedUpload = false;
 S32		LLPipeline::sUseOcclusion = 0;
-bool	LLPipeline::sDelayVBUpdate = true;
 bool	LLPipeline::sAutoMaskAlphaDeferred = true;
 bool	LLPipeline::sAutoMaskAlphaNonDeferred = false;
 bool	LLPipeline::sRenderTransparentWater = true;
@@ -474,7 +473,6 @@ void LLPipeline::init()
 	connectRefreshCachedSettingsSafe("RenderAutoMaskAlphaNonDeferred");
 	connectRefreshCachedSettingsSafe("RenderUseFarClip");
 	connectRefreshCachedSettingsSafe("RenderAvatarMaxNonImpostors");
-	connectRefreshCachedSettingsSafe("RenderDelayVBUpdate");
 	connectRefreshCachedSettingsSafe("UseOcclusion");
 	// DEPRECATED -- connectRefreshCachedSettingsSafe("WindLightUseAtmosShaders");
 	// DEPRECATED -- connectRefreshCachedSettingsSafe("RenderDeferred");
@@ -953,7 +951,6 @@ void LLPipeline::refreshCachedSettings()
 	LLPipeline::sUseFarClip = gSavedSettings.getBOOL("RenderUseFarClip");
 	LLVOAvatar::sMaxNonImpostors = gSavedSettings.getU32("RenderAvatarMaxNonImpostors");
 	LLVOAvatar::updateImpostorRendering(LLVOAvatar::sMaxNonImpostors);
-	LLPipeline::sDelayVBUpdate = gSavedSettings.getBOOL("RenderDelayVBUpdate");
 
 	LLPipeline::sUseOcclusion = 
 			(!gUseWireframe
@@ -1759,7 +1756,7 @@ void LLPipeline::createObject(LLViewerObject* vobj)
 		vobj->setDrawableParent(NULL); // LLPipeline::addObject 2
 	}
 
-	markRebuild(drawablep, LLDrawable::REBUILD_ALL, TRUE);
+	markRebuild(drawablep, LLDrawable::REBUILD_ALL);
 
 	if (drawablep->getVOVolume() && RenderAnimateRes)
 	{
@@ -1875,10 +1872,10 @@ void LLPipeline::updateMovedList(LLDrawable::drawable_vector_t& moved_list)
 			{ //will likely not receive any future world matrix updates
 				// -- this keeps attachments from getting stuck in space and falling off your avatar
 				drawablep->clearState(LLDrawable::ANIMATED_CHILD);
-				markRebuild(drawablep, LLDrawable::REBUILD_VOLUME, TRUE);
+				markRebuild(drawablep, LLDrawable::REBUILD_VOLUME);
 				if (drawablep->getVObj())
 				{
-					drawablep->getVObj()->dirtySpatialGroup(TRUE);
+					drawablep->getVObj()->dirtySpatialGroup();
 				}
 			}
 			iter = moved_list.erase(curiter);
@@ -2977,67 +2974,31 @@ void LLPipeline::markMeshDirty(LLSpatialGroup* group)
 	mMeshDirtyGroup.push_back(group);
 }
 
-void LLPipeline::markRebuild(LLSpatialGroup* group, bool priority)
+void LLPipeline::markRebuild(LLSpatialGroup* group)
 {
 	if (group && !group->isDead() && group->getSpatialPartition())
 	{
-		if (group->getSpatialPartition()->mPartitionType == LLViewerRegion::PARTITION_HUD)
+		if (!group->hasState(LLSpatialGroup::IN_BUILD_Q1))
 		{
-			priority = true;
-		}
-
-		if (priority)
-		{
-			if (!group->hasState(LLSpatialGroup::IN_BUILD_Q1))
-			{
-				llassert_always(!mGroupQ1Locked);
-
-				mGroupQ1.push_back(group);
-				group->setState(LLSpatialGroup::IN_BUILD_Q1);
-
-				if (group->hasState(LLSpatialGroup::IN_BUILD_Q2))
-				{
-					LLSpatialGroup::sg_vector_t::iterator iter = std::find(mGroupQ2.begin(), mGroupQ2.end(), group);
-					if (iter != mGroupQ2.end())
-					{
-						mGroupQ2.erase(iter);
-					}
-					group->clearState(LLSpatialGroup::IN_BUILD_Q2);
-				}
-			}
-		}
-		else if (!group->hasState(LLSpatialGroup::IN_BUILD_Q2 | LLSpatialGroup::IN_BUILD_Q1))
-		{
-			llassert_always(!mGroupQ2Locked);
-			mGroupQ2.push_back(group);
-			group->setState(LLSpatialGroup::IN_BUILD_Q2);
+			llassert_always(!mGroupQ1Locked);
 
+			mGroupQ1.push_back(group);
+			group->setState(LLSpatialGroup::IN_BUILD_Q1);
 		}
 	}
 }
 
-void LLPipeline::markRebuild(LLDrawable *drawablep, LLDrawable::EDrawableFlags flag, bool priority)
+void LLPipeline::markRebuild(LLDrawable *drawablep, LLDrawable::EDrawableFlags flag)
 {
 	if (drawablep && !drawablep->isDead() && assertInitialized())
 	{
-		if (!drawablep->isState(LLDrawable::BUILT))
-		{
-			priority = true;
-		}
-		if (priority)
+		if (!drawablep->isState(LLDrawable::IN_REBUILD_Q1))
 		{
-			if (!drawablep->isState(LLDrawable::IN_REBUILD_Q1))
-			{
-				mBuildQ1.push_back(drawablep);
-				drawablep->setState(LLDrawable::IN_REBUILD_Q1); // mark drawable as being in priority queue
-			}
+			mBuildQ1.push_back(drawablep);
+			drawablep->setState(LLDrawable::IN_REBUILD_Q1); // mark drawable as being in priority queue
 		}
-		else if (!drawablep->isState(LLDrawable::IN_REBUILD_Q2))
-		{
-			mBuildQ2.push_back(drawablep);
-			drawablep->setState(LLDrawable::IN_REBUILD_Q2); // need flag here because it is just a list
-		}
-		if (flag & (LLDrawable::REBUILD_VOLUME | LLDrawable::REBUILD_POSITION))
+
+        if (flag & (LLDrawable::REBUILD_VOLUME | LLDrawable::REBUILD_POSITION))
 		{
 			drawablep->getVObj()->setChanged(LLXform::SILHOUETTE);
 		}
@@ -3083,7 +3044,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 				markVisible(drawablep, camera);
 			}
 
-			if (!sDelayVBUpdate)
 			{ //rebuild mesh as soon as we know it's visible
 				group->rebuildMesh();
 			}
@@ -3139,7 +3099,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 			group->setVisible();
 			stateSort(group, camera);
 
-			if (!sDelayVBUpdate)
 			{ //rebuild mesh as soon as we know it's visible
 				group->rebuildMesh();
 			}
@@ -10759,7 +10718,7 @@ void LLPipeline::hideObject( const LLUUID& id )
 void LLPipeline::hideDrawable( LLDrawable *pDrawable )
 {
 	pDrawable->setState( LLDrawable::FORCE_INVISIBLE );
-	markRebuild( pDrawable, LLDrawable::REBUILD_ALL, TRUE );
+	markRebuild( pDrawable, LLDrawable::REBUILD_ALL);
 	//hide the children
 	LLViewerObject::const_child_list_t& child_list = pDrawable->getVObj()->getChildren();
 	for ( LLViewerObject::child_list_t::const_iterator iter = child_list.begin();
@@ -10770,14 +10729,14 @@ void LLPipeline::hideDrawable( LLDrawable *pDrawable )
 		if ( drawable )
 		{
 			drawable->setState( LLDrawable::FORCE_INVISIBLE );
-			markRebuild( drawable, LLDrawable::REBUILD_ALL, TRUE );
+			markRebuild( drawable, LLDrawable::REBUILD_ALL);
 		}
 	}
 }
 void LLPipeline::unhideDrawable( LLDrawable *pDrawable )
 {
 	pDrawable->clearState( LLDrawable::FORCE_INVISIBLE );
-	markRebuild( pDrawable, LLDrawable::REBUILD_ALL, TRUE );
+	markRebuild( pDrawable, LLDrawable::REBUILD_ALL);
 	//restore children
 	LLViewerObject::const_child_list_t& child_list = pDrawable->getVObj()->getChildren();
 	for ( LLViewerObject::child_list_t::const_iterator iter = child_list.begin();
@@ -10788,7 +10747,7 @@ void LLPipeline::unhideDrawable( LLDrawable *pDrawable )
 		if ( drawable )
 		{
 			drawable->clearState( LLDrawable::FORCE_INVISIBLE );
-			markRebuild( drawable, LLDrawable::REBUILD_ALL, TRUE );
+			markRebuild( drawable, LLDrawable::REBUILD_ALL);
 		}
 	}
 }
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 7eede30d8fbaeb90cd1129a2ec4695b16c9864ce..3b6a11b3789a01653b26be1b1f5c2025d0c57e0d 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -191,8 +191,8 @@ class LLPipeline
 	void        markShift(LLDrawable *drawablep);
 	void        markTextured(LLDrawable *drawablep);
 	void		markGLRebuild(LLGLUpdate* glu);
-	void		markRebuild(LLSpatialGroup* group, bool priority = false);
-	void        markRebuild(LLDrawable *drawablep, LLDrawable::EDrawableFlags flag = LLDrawable::REBUILD_ALL, bool priority = false);
+	void		markRebuild(LLSpatialGroup* group);
+	void        markRebuild(LLDrawable *drawablep, LLDrawable::EDrawableFlags flag = LLDrawable::REBUILD_ALL);
 	void		markPartitionMove(LLDrawable* drawablep);
 	void		markMeshDirty(LLSpatialGroup* group);
 
@@ -637,7 +637,6 @@ class LLPipeline
 	static bool				sShowHUDAttachments;
 	static bool				sForceOldBakedUpload; // If true will not use capabilities to upload baked textures.
 	static S32				sUseOcclusion;  // 0 = no occlusion, 1 = read only, 2 = read/write
-	static bool				sDelayVBUpdate;
 	static bool				sAutoMaskAlphaDeferred;
 	static bool				sAutoMaskAlphaNonDeferred;
 	static bool				sRenderTransparentWater;