diff options
| author | Michael Pohoreski <ptolemy@lindenlab.com> | 2021-09-22 22:26:15 +0000 | 
|---|---|---|
| committer | Michael Pohoreski <ptolemy@lindenlab.com> | 2021-09-22 22:26:15 +0000 | 
| commit | 68be3018ab1dcaf31e9a67cd0fc4d996b535d17f (patch) | |
| tree | ba1590cb68a6ab9ad1f44760c1978db05c1be8f3 /indra/newview | |
| parent | b1c32db37f74de715b4d6f9e98653f482e05df51 (diff) | |
| parent | aa1d3ff8fd79ebcaf6423199a91eb470a94461df (diff) | |
Merged in SL-16014 (pull request #692)
SL-16014
Approved-by: Euclid Linden
Approved-by: Dave Parks
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llappviewer.cpp | 88 | ||||
| -rw-r--r-- | indra/newview/lldrawable.cpp | 45 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolavatar.cpp | 126 | ||||
| -rw-r--r-- | indra/newview/llface.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llspatialpartition.cpp | 14 | ||||
| -rw-r--r-- | indra/newview/llviewerobjectlist.cpp | 16 | 
6 files changed, 283 insertions, 24 deletions
| diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 94f0b31ecd..879cc6fc85 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1358,7 +1358,8 @@ void LLAppViewer::initMaxHeapSize()  }  static LLTrace::BlockTimerStatHandle FTM_MESSAGES("System Messages"); -static LLTrace::BlockTimerStatHandle FTM_SLEEP("Sleep"); +static LLTrace::BlockTimerStatHandle FTM_SLEEP1("Sleep1"); +static LLTrace::BlockTimerStatHandle FTM_SLEEP2("Sleep2");  static LLTrace::BlockTimerStatHandle FTM_YIELD("Yield");  static LLTrace::BlockTimerStatHandle FTM_TEXTURE_CACHE("Texture Cache"); @@ -1420,13 +1421,17 @@ bool LLAppViewer::frame()  bool LLAppViewer::doFrame()  { +	LL_RECORD_BLOCK_TIME(FTM_FRAME); +  	LLEventPump& mainloop(LLEventPumps::instance().obtain("mainloop"));  	LLSD newFrame; -	LL_RECORD_BLOCK_TIME(FTM_FRAME); -	LLTrace::BlockTimer::processTimes(); -	LLTrace::get_frame_recording().nextPeriod(); -	LLTrace::BlockTimer::logStats(); +	{ +		LL_PROFILE_ZONE_NAMED( "df blocktimer" ) +		LLTrace::BlockTimer::processTimes(); +		LLTrace::get_frame_recording().nextPeriod(); +		LLTrace::BlockTimer::logStats(); +	}  	LLTrace::get_thread_recorder()->pullFromChildren(); @@ -1434,6 +1439,7 @@ bool LLAppViewer::doFrame()  	LL_CLEAR_CALLSTACKS();  	{ +		LL_PROFILE_ZONE_NAMED( "df processMiscNativeEvents" )  		pingMainloopTimeout("Main:MiscNativeWindowEvents");  		if (gViewerWindow) @@ -1442,7 +1448,10 @@ bool LLAppViewer::doFrame()  			gViewerWindow->getWindow()->processMiscNativeEvents();  		} -		pingMainloopTimeout("Main:GatherInput"); +		{ +			LL_PROFILE_ZONE_NAMED( "df gatherInput" ) +			pingMainloopTimeout("Main:GatherInput"); +		}  		if (gViewerWindow)  		{ @@ -1466,13 +1475,21 @@ bool LLAppViewer::doFrame()  			}  		} -		// canonical per-frame event -		mainloop.post(newFrame); -		// give listeners a chance to run -		llcoro::suspend(); +		{ +			LL_PROFILE_ZONE_NAMED( "df mainloop" ) +			// canonical per-frame event +			mainloop.post(newFrame); +		} + +		{ +			LL_PROFILE_ZONE_NAMED( "df suspend" ) +			// give listeners a chance to run +			llcoro::suspend(); +		}  		if (!LLApp::isExiting())  		{ +			LL_PROFILE_ZONE_NAMED( "df JoystickKeyboard" )  			pingMainloopTimeout("Main:JoystickKeyboard");  			// Scan keyboard for movement keys.  Command keys and typing @@ -1493,12 +1510,18 @@ bool LLAppViewer::doFrame()  			// Update state based on messages, user input, object idle.  			{ -				pauseMainloopTimeout(); // *TODO: Remove. Messages shouldn't be stalling for 20+ seconds! +				{ +					LL_PROFILE_ZONE_NAMED( "df pauseMainloopTimeout" ) +					pauseMainloopTimeout(); // *TODO: Remove. Messages shouldn't be stalling for 20+ seconds! +				}  				LL_RECORD_BLOCK_TIME(FTM_IDLE);  				idle(); -				resumeMainloopTimeout(); +				{ +					LL_PROFILE_ZONE_NAMED( "df resumeMainloopTimeout" ) +					resumeMainloopTimeout(); +				}  			}  			if (gDoDisconnect && (LLStartUp::getStartupState() == STATE_STARTED)) @@ -1513,6 +1536,7 @@ bool LLAppViewer::doFrame()  			// *TODO: Should we run display() even during gHeadlessClient?  DK 2011-02-18  			if (!LLApp::isExiting() && !gHeadlessClient && gViewerWindow)  			{ +				LL_PROFILE_ZONE_NAMED( "df Display" )  				pingMainloopTimeout("Main:Display");  				gGLActive = TRUE; @@ -1525,34 +1549,45 @@ bool LLAppViewer::doFrame()  					U64 elapsed_time = LLTimer::getTotalTime() - last_call;  					if (elapsed_time < mMinMicroSecPerFrame)  					{ -						LL_RECORD_BLOCK_TIME(FTM_SLEEP); +						//LL_RECORD_BLOCK_TIME(FTM_SLEEP1); +						LL_PROFILE_ZONE_WARN( "Sleep1" )  						// llclamp for when time function gets funky  						U64 sleep_time = llclamp(mMinMicroSecPerFrame - elapsed_time, (U64)1, (U64)1e6); + +						LL_PROFILE_ZONE_NUM( sleep_time )  						micro_sleep(sleep_time, 0);  					}  				}  				last_call = LLTimer::getTotalTime(); -				pingMainloopTimeout("Main:Snapshot"); -				LLFloaterSnapshot::update(); // take snapshots +				{ +					LL_PROFILE_ZONE_NAMED( "df Snapshot" ) +					pingMainloopTimeout("Main:Snapshot"); +					LLFloaterSnapshot::update(); // take snapshots  					LLFloaterOutfitSnapshot::update(); -				gGLActive = FALSE; +					gGLActive = FALSE; +				}  			}  		} -		pingMainloopTimeout("Main:Sleep"); +		{ +			LL_PROFILE_ZONE_NAMED( "df pauseMainloopTimeout" ) +			pingMainloopTimeout("Main:Sleep"); -		pauseMainloopTimeout(); +			pauseMainloopTimeout(); +		}  		// Sleep and run background threads  		{ -			LL_RECORD_BLOCK_TIME(FTM_SLEEP); +			//LL_RECORD_BLOCK_TIME(SLEEP2); +			LL_PROFILE_ZONE_WARN( "Sleep2" )  			// yield some time to the os based on command line option  			static LLCachedControl<S32> yield_time(gSavedSettings, "YieldTime", -1);  			if(yield_time >= 0)  			{  				LL_RECORD_BLOCK_TIME(FTM_YIELD); +				LL_PROFILE_ZONE_NUM( yield_time )  				ms_sleep(yield_time);  			} @@ -1615,16 +1650,22 @@ bool LLAppViewer::doFrame()  				total_io_pending += io_pending ;  			} -			gMeshRepo.update() ; + +			{ +				LL_PROFILE_ZONE_NAMED( "df gMeshRepo" ) +				gMeshRepo.update() ; +			}  			if(!total_work_pending) //pause texture fetching threads if nothing to process.  			{ +				LL_PROFILE_ZONE_NAMED( "df getTextureCache" )  				LLAppViewer::getTextureCache()->pause();  				LLAppViewer::getImageDecodeThread()->pause();  				LLAppViewer::getTextureFetch()->pause();  			}  			if(!total_io_pending) //pause file threads if nothing to process.  			{ +				LL_PROFILE_ZONE_NAMED( "df LLVFSThread" )  				LLVFSThread::sLocal->pause();  				LLLFSThread::sLocal->pause();  			} @@ -1632,6 +1673,7 @@ bool LLAppViewer::doFrame()  			//texture fetching debugger  			if(LLTextureFetchDebugger::isEnabled())  			{ +				LL_PROFILE_ZONE_NAMED( "df tex_fetch_debugger_instance" )  				LLFloaterTextureFetchDebugger* tex_fetch_debugger_instance =  					LLFloaterReg::findTypedInstance<LLFloaterTextureFetchDebugger>("tex_fetch_debugger");  				if(tex_fetch_debugger_instance) @@ -1640,8 +1682,10 @@ bool LLAppViewer::doFrame()  				}  			} -			resumeMainloopTimeout(); - +			{ +				LL_PROFILE_ZONE_NAMED( "df resumeMainloopTimeout" ) +				resumeMainloopTimeout(); +			}  			pingMainloopTimeout("Main:End");  		}  	} diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 507af56cb0..30c4a21e1c 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -101,6 +101,8 @@ LLDrawable::LLDrawable(LLViewerObject *vobj, bool new_entry)  void LLDrawable::init(bool new_entry)  { +	LL_PROFILE_ZONE_SCOPED +  	// mXform  	mParent = NULL;  	mRenderType = 0; @@ -232,6 +234,8 @@ void LLDrawable::markDead()  LLVOVolume* LLDrawable::getVOVolume() const  { +	LL_PROFILE_ZONE_SCOPED +  	LLViewerObject* objectp = mVObjp;  	if ( !isDead() && objectp && (objectp->getPCode() == LL_PCODE_VOLUME))  	{ @@ -335,6 +339,7 @@ static LLTrace::BlockTimerStatHandle FTM_ALLOCATE_FACE("Allocate Face");  LLFace*	LLDrawable::addFace(LLFacePool *poolp, LLViewerTexture *texturep)  { +	LL_PROFILE_ZONE_SCOPED  	LLFace *face;  	{ @@ -363,6 +368,8 @@ LLFace*	LLDrawable::addFace(LLFacePool *poolp, LLViewerTexture *texturep)  LLFace*	LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep)  { +	LL_PROFILE_ZONE_SCOPED +  	LLFace *face;  	{ @@ -387,6 +394,8 @@ LLFace*	LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep)  LLFace*	LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep, LLViewerTexture *normalp)  { +	LL_PROFILE_ZONE_SCOPED +  	LLFace *face;  	face = new LLFace(this, mVObjp); @@ -408,6 +417,8 @@ LLFace*	LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep,  LLFace*	LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep, LLViewerTexture *normalp, LLViewerTexture *specularp)  { +	LL_PROFILE_ZONE_SCOPED +  	LLFace *face;  	face = new LLFace(this, mVObjp); @@ -430,6 +441,8 @@ LLFace*	LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep,  void LLDrawable::setNumFaces(const S32 newFaces, LLFacePool *poolp, LLViewerTexture *texturep)  { +	LL_PROFILE_ZONE_SCOPED +  	if (newFaces == (S32)mFaces.size())  	{  		return; @@ -453,6 +466,8 @@ void LLDrawable::setNumFaces(const S32 newFaces, LLFacePool *poolp, LLViewerText  void LLDrawable::setNumFacesFast(const S32 newFaces, LLFacePool *poolp, LLViewerTexture *texturep)  { +	LL_PROFILE_ZONE_SCOPED +  	if (newFaces <= (S32)mFaces.size() && newFaces >= (S32)mFaces.size()/2)  	{  		return; @@ -476,6 +491,8 @@ void LLDrawable::setNumFacesFast(const S32 newFaces, LLFacePool *poolp, LLViewer  void LLDrawable::mergeFaces(LLDrawable* src)  { +	LL_PROFILE_ZONE_SCOPED +  	U32 face_count = mFaces.size() + src->mFaces.size();  	mFaces.reserve(face_count); @@ -509,6 +526,8 @@ void LLDrawable::updateMaterial()  void LLDrawable::makeActive()  {		 +	LL_PROFILE_ZONE_SCOPED +  #if !LL_RELEASE_FOR_DOWNLOAD  	if (mVObjp.notNull())  	{ @@ -572,6 +591,8 @@ void LLDrawable::makeActive()  void LLDrawable::makeStatic(BOOL warning_enabled)  { +	LL_PROFILE_ZONE_SCOPED +  	if (isState(ACTIVE) &&   		!isState(ACTIVE_CHILD) &&   		!mVObjp->isAttachment() &&  @@ -618,6 +639,8 @@ void LLDrawable::makeStatic(BOOL warning_enabled)  // Returns "distance" between target destination and resulting xfrom  F32 LLDrawable::updateXform(BOOL undamped)  { +	LL_PROFILE_ZONE_SCOPED +  	BOOL damped = !undamped;  	// Position @@ -769,6 +792,8 @@ void LLDrawable::moveUpdatePipeline(BOOL moved)  void LLDrawable::movePartition()  { +	LL_PROFILE_ZONE_SCOPED +  	LLSpatialPartition* part = getSpatialPartition();  	if (part)  	{ @@ -813,6 +838,8 @@ BOOL LLDrawable::updateMoveUndamped()  void LLDrawable::updatePartition()  { +	LL_PROFILE_ZONE_SCOPED +  	if (!getVOVolume())  	{  		movePartition(); @@ -830,6 +857,8 @@ void LLDrawable::updatePartition()  BOOL LLDrawable::updateMoveDamped()  { +	LL_PROFILE_ZONE_SCOPED +  	F32 dist_squared = updateXform(FALSE);  	mGeneration++; @@ -853,6 +882,8 @@ BOOL LLDrawable::updateMoveDamped()  void LLDrawable::updateDistance(LLCamera& camera, bool force_update)  { +	LL_PROFILE_ZONE_SCOPED +  	if (LLViewerCamera::sCurCameraID != LLViewerCamera::CAMERA_WORLD)  	{  		LL_WARNS() << "Attempted to update distance for non-world camera." << LL_ENDL; @@ -957,6 +988,8 @@ void LLDrawable::updateTexture()  BOOL LLDrawable::updateGeometry(BOOL priority)  { +	LL_PROFILE_ZONE_SCOPED +  	llassert(mVObjp.notNull());  	BOOL res = mVObjp->updateGeometry(this);  	return res; @@ -1034,6 +1067,8 @@ const LLVector3& LLDrawable::getBounds(LLVector3& min, LLVector3& max) const  void LLDrawable::updateSpatialExtents()  { +	LL_PROFILE_ZONE_SCOPED +  	if (mVObjp)  	{  		const LLVector4a* exts = getSpatialExtents(); @@ -1164,6 +1199,8 @@ void LLDrawable::setGroup(LLViewerOctreeGroup *groupp)  LLSpatialPartition* LLDrawable::getSpatialPartition()  {  +	LL_PROFILE_ZONE_SCOPED +  	LLSpatialPartition* retval = NULL;  	if (!mVObjp ||  @@ -1247,6 +1284,8 @@ LLSpatialBridge::LLSpatialBridge(LLDrawable* root, BOOL render_by_group, U32 dat  	LLDrawable(root->getVObj(), true),  	LLSpatialPartition(data_mask, render_by_group, GL_STREAM_DRAW_ARB, regionp)  { +	LL_PROFILE_ZONE_SCOPED +  	mBridge = this;  	mDrawable = root;  	root->setSpatialBridge(this); @@ -1292,6 +1331,8 @@ void LLSpatialBridge::destroyTree()  void LLSpatialBridge::updateSpatialExtents()  { +	LL_PROFILE_ZONE_SCOPED +  	LLSpatialGroup* root = (LLSpatialGroup*) mOctree->getListener(0);  	{ @@ -1455,6 +1496,8 @@ public:  void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector<LLDrawable*>* results, BOOL for_select)  { +	LL_PROFILE_ZONE_SCOPED +  	if (!gPipeline.hasRenderType(mDrawableType))  	{  		return; @@ -1552,6 +1595,8 @@ void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector<LLDrawable*>*  void LLSpatialBridge::updateDistance(LLCamera& camera_in, bool force_update)  { +	LL_PROFILE_ZONE_SCOPED +  	if (mDrawable == NULL)  	{  		markDead(); diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index c04142ab47..4f615d6107 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -121,6 +121,8 @@ LLDrawPoolAvatar::~LLDrawPoolAvatar()  // virtual  BOOL LLDrawPoolAvatar::isDead()  { +    LL_PROFILE_ZONE_SCOPED +      if (!LLFacePool::isDead())      {          return FALSE; @@ -138,11 +140,15 @@ BOOL LLDrawPoolAvatar::isDead()  S32 LLDrawPoolAvatar::getShaderLevel() const  { +    LL_PROFILE_ZONE_SCOPED +  	return (S32) LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_AVATAR);  }  void LLDrawPoolAvatar::prerender()  { +    LL_PROFILE_ZONE_SCOPED +  	mShaderLevel = LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_AVATAR);  	sShaderLevel = mShaderLevel; @@ -169,6 +175,8 @@ void LLDrawPoolAvatar::prerender()  LLMatrix4& LLDrawPoolAvatar::getModelView()  { +    LL_PROFILE_ZONE_SCOPED +  	static LLMatrix4 ret;  	ret.initRows(LLVector4(gGLModelView+0), @@ -257,6 +265,8 @@ void LLDrawPoolAvatar::endDeferredPass(S32 pass)  void LLDrawPoolAvatar::renderDeferred(S32 pass)  { +    LL_PROFILE_ZONE_SCOPED +  	render(pass);  } @@ -267,6 +277,8 @@ S32 LLDrawPoolAvatar::getNumPostDeferredPasses()  void LLDrawPoolAvatar::beginPostDeferredPass(S32 pass)  { +    LL_PROFILE_ZONE_SCOPED +  	switch (pass)  	{  	case 0: @@ -295,6 +307,8 @@ void LLDrawPoolAvatar::beginPostDeferredPass(S32 pass)  void LLDrawPoolAvatar::beginPostDeferredAlpha()  { +    LL_PROFILE_ZONE_SCOPED +  	sSkipOpaque = TRUE;  	sShaderLevel = mShaderLevel;  	sVertexProgram = &gDeferredAvatarAlphaProgram; @@ -309,6 +323,8 @@ void LLDrawPoolAvatar::beginPostDeferredAlpha()  void LLDrawPoolAvatar::beginDeferredRiggedAlpha()  { +    LL_PROFILE_ZONE_SCOPED +  	sVertexProgram = &gDeferredSkinnedAlphaProgram;  	gPipeline.bindDeferredShader(*sVertexProgram);  	sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP); @@ -317,6 +333,8 @@ void LLDrawPoolAvatar::beginDeferredRiggedAlpha()  void LLDrawPoolAvatar::beginDeferredRiggedMaterialAlpha(S32 pass)  { +    LL_PROFILE_ZONE_SCOPED +  	switch (pass)  	{  	case 0: pass = 1; break; @@ -343,6 +361,8 @@ void LLDrawPoolAvatar::beginDeferredRiggedMaterialAlpha(S32 pass)  void LLDrawPoolAvatar::endDeferredRiggedAlpha()  { +    LL_PROFILE_ZONE_SCOPED +  	LLVertexBuffer::unbind();  	gPipeline.unbindDeferredShader(*sVertexProgram);  	sDiffuseChannel = 0; @@ -353,6 +373,8 @@ void LLDrawPoolAvatar::endDeferredRiggedAlpha()  void LLDrawPoolAvatar::endPostDeferredPass(S32 pass)  { +    LL_PROFILE_ZONE_SCOPED +  	switch (pass)  	{  	case 0: @@ -381,6 +403,8 @@ void LLDrawPoolAvatar::endPostDeferredPass(S32 pass)  void LLDrawPoolAvatar::endPostDeferredAlpha()  { +    LL_PROFILE_ZONE_SCOPED +  	// if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done  	sRenderingSkinned = FALSE;  	sSkipOpaque = FALSE; @@ -392,6 +416,8 @@ void LLDrawPoolAvatar::endPostDeferredAlpha()  void LLDrawPoolAvatar::renderPostDeferred(S32 pass)  { +    LL_PROFILE_ZONE_SCOPED +  	static const S32 actual_pass[] =  	{ //map post deferred pass numbers to what render() expects  		2, //skinned @@ -647,6 +673,8 @@ void LLDrawPoolAvatar::renderShadow(S32 pass)  S32 LLDrawPoolAvatar::getNumPasses()  { +    LL_PROFILE_ZONE_SCOPED +  	if (LLPipeline::sImpostorRender)  	{  		return 8; @@ -660,6 +688,8 @@ S32 LLDrawPoolAvatar::getNumPasses()  S32 LLDrawPoolAvatar::getNumDeferredPasses()  { +    LL_PROFILE_ZONE_SCOPED +  	if (LLPipeline::sImpostorRender)  	{  		return 19; @@ -780,6 +810,8 @@ void LLDrawPoolAvatar::endRenderPass(S32 pass)  void LLDrawPoolAvatar::beginImpostor()  { +    LL_PROFILE_ZONE_SCOPED +  	if (!LLPipeline::sReflectionRender)  	{  		LLVOAvatar::sRenderDistance = llclamp(LLVOAvatar::sRenderDistance, 16.f, 256.f); @@ -798,6 +830,8 @@ void LLDrawPoolAvatar::beginImpostor()  void LLDrawPoolAvatar::endImpostor()  { +    LL_PROFILE_ZONE_SCOPED +  	if (LLGLSLShader::sNoFixedFunction)  	{  		gImpostorProgram.unbind(); @@ -807,6 +841,8 @@ void LLDrawPoolAvatar::endImpostor()  void LLDrawPoolAvatar::beginRigid()  { +    LL_PROFILE_ZONE_SCOPED +  	if (gPipeline.canUseVertexShaders())  	{  		if (LLPipeline::sUnderWaterRender) @@ -840,6 +876,8 @@ void LLDrawPoolAvatar::beginRigid()  void LLDrawPoolAvatar::endRigid()  { +    LL_PROFILE_ZONE_SCOPED +  	sShaderLevel = mShaderLevel;  	if (sVertexProgram != NULL)  	{ @@ -849,6 +887,8 @@ void LLDrawPoolAvatar::endRigid()  void LLDrawPoolAvatar::beginDeferredImpostor()  { +    LL_PROFILE_ZONE_SCOPED +  	if (!LLPipeline::sReflectionRender)  	{  		LLVOAvatar::sRenderDistance = llclamp(LLVOAvatar::sRenderDistance, 16.f, 256.f); @@ -865,6 +905,8 @@ void LLDrawPoolAvatar::beginDeferredImpostor()  void LLDrawPoolAvatar::endDeferredImpostor()  { +    LL_PROFILE_ZONE_SCOPED +  	sShaderLevel = mShaderLevel;  	sVertexProgram->disableTexture(LLViewerShaderMgr::DEFERRED_NORMAL);  	sVertexProgram->disableTexture(LLViewerShaderMgr::SPECULAR_MAP); @@ -876,6 +918,8 @@ void LLDrawPoolAvatar::endDeferredImpostor()  void LLDrawPoolAvatar::beginDeferredRigid()  { +    LL_PROFILE_ZONE_SCOPED +  	sVertexProgram = &gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;  	sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);  	sVertexProgram->bind(); @@ -892,6 +936,8 @@ void LLDrawPoolAvatar::beginDeferredRigid()  void LLDrawPoolAvatar::endDeferredRigid()  { +    LL_PROFILE_ZONE_SCOPED +  	sShaderLevel = mShaderLevel;  	sVertexProgram->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);  	sVertexProgram->unbind(); @@ -901,6 +947,8 @@ void LLDrawPoolAvatar::endDeferredRigid()  void LLDrawPoolAvatar::beginSkinned()  { +    LL_PROFILE_ZONE_SCOPED +  	if (sShaderLevel > 0)  	{  		if (LLPipeline::sUnderWaterRender) @@ -967,6 +1015,8 @@ void LLDrawPoolAvatar::beginSkinned()  void LLDrawPoolAvatar::endSkinned()  { +    LL_PROFILE_ZONE_SCOPED +  	// if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done  	if (sShaderLevel > 0)  	{ @@ -991,6 +1041,8 @@ void LLDrawPoolAvatar::endSkinned()  void LLDrawPoolAvatar::beginRiggedSimple()  { +    LL_PROFILE_ZONE_SCOPED +  	if (sShaderLevel > 0)  	{  		if (LLPipeline::sUnderWaterRender) @@ -1031,6 +1083,8 @@ void LLDrawPoolAvatar::beginRiggedSimple()  void LLDrawPoolAvatar::endRiggedSimple()  { +    LL_PROFILE_ZONE_SCOPED +  	LLVertexBuffer::unbind();  	if (sShaderLevel > 0 || gPipeline.canUseVertexShaders())  	{ @@ -1041,27 +1095,37 @@ void LLDrawPoolAvatar::endRiggedSimple()  void LLDrawPoolAvatar::beginRiggedAlpha()  { +    LL_PROFILE_ZONE_SCOPED +  	beginRiggedSimple();  }  void LLDrawPoolAvatar::endRiggedAlpha()  { +    LL_PROFILE_ZONE_SCOPED +  	endRiggedSimple();  }  void LLDrawPoolAvatar::beginRiggedFullbrightAlpha()  { +    LL_PROFILE_ZONE_SCOPED +  	beginRiggedFullbright();  }  void LLDrawPoolAvatar::endRiggedFullbrightAlpha()  { +    LL_PROFILE_ZONE_SCOPED +  	endRiggedFullbright();  }  void LLDrawPoolAvatar::beginRiggedGlow()  { +    LL_PROFILE_ZONE_SCOPED +  	if (sShaderLevel > 0)  	{  		if (LLPipeline::sUnderWaterRender) @@ -1108,11 +1172,15 @@ void LLDrawPoolAvatar::beginRiggedGlow()  void LLDrawPoolAvatar::endRiggedGlow()  { +    LL_PROFILE_ZONE_SCOPED +  	endRiggedFullbright();  }  void LLDrawPoolAvatar::beginRiggedFullbright()  { +    LL_PROFILE_ZONE_SCOPED +  	if (sShaderLevel > 0)  	{  		if (LLPipeline::sUnderWaterRender) @@ -1170,6 +1238,8 @@ void LLDrawPoolAvatar::beginRiggedFullbright()  void LLDrawPoolAvatar::endRiggedFullbright()  { +    LL_PROFILE_ZONE_SCOPED +  	LLVertexBuffer::unbind();  	if (sShaderLevel > 0 || gPipeline.canUseVertexShaders())  	{ @@ -1180,6 +1250,8 @@ void LLDrawPoolAvatar::endRiggedFullbright()  void LLDrawPoolAvatar::beginRiggedShinySimple()  { +    LL_PROFILE_ZONE_SCOPED +  	if (sShaderLevel > 0)  	{  		if (LLPipeline::sUnderWaterRender) @@ -1220,6 +1292,8 @@ void LLDrawPoolAvatar::beginRiggedShinySimple()  void LLDrawPoolAvatar::endRiggedShinySimple()  { +    LL_PROFILE_ZONE_SCOPED +  	LLVertexBuffer::unbind();  	if (sShaderLevel > 0 || gPipeline.canUseVertexShaders())  	{ @@ -1231,6 +1305,8 @@ void LLDrawPoolAvatar::endRiggedShinySimple()  void LLDrawPoolAvatar::beginRiggedFullbrightShiny()  { +    LL_PROFILE_ZONE_SCOPED +  	if (sShaderLevel > 0)  	{  		if (LLPipeline::sUnderWaterRender) @@ -1296,6 +1372,8 @@ void LLDrawPoolAvatar::beginRiggedFullbrightShiny()  void LLDrawPoolAvatar::endRiggedFullbrightShiny()  { +    LL_PROFILE_ZONE_SCOPED +  	LLVertexBuffer::unbind();  	if (sShaderLevel > 0 || gPipeline.canUseVertexShaders())  	{ @@ -1308,6 +1386,8 @@ void LLDrawPoolAvatar::endRiggedFullbrightShiny()  void LLDrawPoolAvatar::beginDeferredRiggedSimple()  { +    LL_PROFILE_ZONE_SCOPED +  	sVertexProgram = &gDeferredSkinnedDiffuseProgram;  	sDiffuseChannel = 0;  	sVertexProgram->bind(); @@ -1323,6 +1403,8 @@ void LLDrawPoolAvatar::beginDeferredRiggedSimple()  void LLDrawPoolAvatar::endDeferredRiggedSimple()  { +    LL_PROFILE_ZONE_SCOPED +  	LLVertexBuffer::unbind();  	sVertexProgram->unbind();  	sVertexProgram = NULL; @@ -1330,6 +1412,8 @@ void LLDrawPoolAvatar::endDeferredRiggedSimple()  void LLDrawPoolAvatar::beginDeferredRiggedBump()  { +    LL_PROFILE_ZONE_SCOPED +  	sVertexProgram = &gDeferredSkinnedBumpProgram;  	sVertexProgram->bind();      if (LLPipeline::sRenderingHUDs) @@ -1346,6 +1430,8 @@ void LLDrawPoolAvatar::beginDeferredRiggedBump()  void LLDrawPoolAvatar::endDeferredRiggedBump()  { +    LL_PROFILE_ZONE_SCOPED +  	LLVertexBuffer::unbind();  	sVertexProgram->disableTexture(LLViewerShaderMgr::BUMP_MAP);  	sVertexProgram->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP); @@ -1357,6 +1443,8 @@ void LLDrawPoolAvatar::endDeferredRiggedBump()  void LLDrawPoolAvatar::beginDeferredRiggedMaterial(S32 pass)  { +    LL_PROFILE_ZONE_SCOPED +  	if (pass == 1 ||  		pass == 5 ||  		pass == 9 || @@ -1387,6 +1475,8 @@ void LLDrawPoolAvatar::beginDeferredRiggedMaterial(S32 pass)  void LLDrawPoolAvatar::endDeferredRiggedMaterial(S32 pass)  { +    LL_PROFILE_ZONE_SCOPED +  	if (pass == 1 ||  		pass == 5 ||  		pass == 9 || @@ -1407,6 +1497,8 @@ void LLDrawPoolAvatar::endDeferredRiggedMaterial(S32 pass)  void LLDrawPoolAvatar::beginDeferredSkinned()  { +    LL_PROFILE_ZONE_SCOPED +  	sShaderLevel = mShaderLevel;  	sVertexProgram = &gDeferredAvatarProgram;  	sRenderingSkinned = TRUE; @@ -1428,6 +1520,8 @@ void LLDrawPoolAvatar::beginDeferredSkinned()  void LLDrawPoolAvatar::endDeferredSkinned()  { +    LL_PROFILE_ZONE_SCOPED +  	// if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done  	sRenderingSkinned = FALSE;  	sVertexProgram->unbind(); @@ -1740,6 +1834,8 @@ void LLDrawPoolAvatar::getRiggedGeometry(      LLVolume* volume,      const LLVolumeFace& vol_face)  { +    LL_PROFILE_ZONE_SCOPED +      face->setGeomIndex(0);      face->setIndicesIndex(0); @@ -2040,6 +2136,8 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(  void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)  { +    LL_PROFILE_ZONE_SCOPED +  	if (!avatar->shouldRenderRigged())  	{  		return; @@ -2332,16 +2430,22 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)  void LLDrawPoolAvatar::renderDeferredRiggedSimple(LLVOAvatar* avatar)  { +    LL_PROFILE_ZONE_SCOPED +  	renderRigged(avatar, RIGGED_DEFERRED_SIMPLE);  }  void LLDrawPoolAvatar::renderDeferredRiggedBump(LLVOAvatar* avatar)  { +    LL_PROFILE_ZONE_SCOPED +  	renderRigged(avatar, RIGGED_DEFERRED_BUMP);  }  void LLDrawPoolAvatar::renderDeferredRiggedMaterial(LLVOAvatar* avatar, S32 pass)  { +    LL_PROFILE_ZONE_SCOPED +  	renderRigged(avatar, pass);  } @@ -2396,27 +2500,37 @@ void LLDrawPoolAvatar::updateRiggedVertexBuffers(LLVOAvatar* avatar)  void LLDrawPoolAvatar::renderRiggedSimple(LLVOAvatar* avatar)  { +    LL_PROFILE_ZONE_SCOPED +  	renderRigged(avatar, RIGGED_SIMPLE);  }  void LLDrawPoolAvatar::renderRiggedFullbright(LLVOAvatar* avatar)  { +    LL_PROFILE_ZONE_SCOPED +  	renderRigged(avatar, RIGGED_FULLBRIGHT);  }  void LLDrawPoolAvatar::renderRiggedShinySimple(LLVOAvatar* avatar)  { +    LL_PROFILE_ZONE_SCOPED +  	renderRigged(avatar, RIGGED_SHINY);  }  void LLDrawPoolAvatar::renderRiggedFullbrightShiny(LLVOAvatar* avatar)  { +    LL_PROFILE_ZONE_SCOPED +  	renderRigged(avatar, RIGGED_FULLBRIGHT_SHINY);  }  void LLDrawPoolAvatar::renderRiggedAlpha(LLVOAvatar* avatar)  { +    LL_PROFILE_ZONE_SCOPED +  	if (!mRiggedFace[RIGGED_ALPHA].empty())  	{  		LLGLEnable blend(GL_BLEND); @@ -2434,6 +2548,8 @@ void LLDrawPoolAvatar::renderRiggedAlpha(LLVOAvatar* avatar)  void LLDrawPoolAvatar::renderRiggedFullbrightAlpha(LLVOAvatar* avatar)  { +    LL_PROFILE_ZONE_SCOPED +  	if (!mRiggedFace[RIGGED_FULLBRIGHT_ALPHA].empty())  	{  		LLGLEnable blend(GL_BLEND); @@ -2451,6 +2567,8 @@ void LLDrawPoolAvatar::renderRiggedFullbrightAlpha(LLVOAvatar* avatar)  void LLDrawPoolAvatar::renderRiggedGlow(LLVOAvatar* avatar)  { +    LL_PROFILE_ZONE_SCOPED +  	if (!mRiggedFace[RIGGED_GLOW].empty())  	{  		LLGLEnable blend(GL_BLEND); @@ -2478,6 +2596,8 @@ void LLDrawPoolAvatar::renderRiggedGlow(LLVOAvatar* avatar)  //-----------------------------------------------------------------------------  LLViewerTexture *LLDrawPoolAvatar::getDebugTexture()  { +    LL_PROFILE_ZONE_SCOPED +  	if (mReferences.empty())  	{  		return NULL; @@ -2501,6 +2621,8 @@ LLColor3 LLDrawPoolAvatar::getDebugColor() const  void LLDrawPoolAvatar::addRiggedFace(LLFace* facep, U32 type)  { +    LL_PROFILE_ZONE_SCOPED +      llassert (facep->isState(LLFace::RIGGED));      llassert(getType() == LLDrawPool::POOL_AVATAR || getType() == LLDrawPool::POOL_CONTROL_AV);      if (facep->getPool() && facep->getPool() != this) @@ -2523,6 +2645,8 @@ void LLDrawPoolAvatar::addRiggedFace(LLFace* facep, U32 type)  void LLDrawPoolAvatar::removeRiggedFace(LLFace* facep)  { +    LL_PROFILE_ZONE_SCOPED +      llassert (facep->isState(LLFace::RIGGED));      llassert(getType() == LLDrawPool::POOL_AVATAR || getType() == LLDrawPool::POOL_CONTROL_AV);      if (facep->getPool() != this) @@ -2560,7 +2684,7 @@ LLVertexBufferAvatar::LLVertexBufferAvatar()  : LLVertexBuffer(sDataMask,   	GL_STREAM_DRAW_ARB) //avatars are always stream draw due to morph targets  { - +    LL_PROFILE_ZONE_SCOPED  } diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 6e55d8f66a..34448a780d 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -241,6 +241,8 @@ void LLFace::setPool(LLFacePool* pool)  void LLFace::setPool(LLFacePool* new_pool, LLViewerTexture *texturep)  { +	LL_PROFILE_ZONE_SCOPED +  	if (!new_pool)  	{  		LL_ERRS() << "Setting pool to null!" << LL_ENDL; @@ -320,6 +322,8 @@ void LLFace::setSpecularMap(LLViewerTexture* tex)  void LLFace::dirtyTexture()  { +	LL_PROFILE_ZONE_SCOPED +  	LLDrawable* drawablep = getDrawable();  	if (mVObjp.notNull() && mVObjp->getVolume()) @@ -535,6 +539,8 @@ void LLFace::updateCenterAgent()  void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)  { +	LL_PROFILE_ZONE_SCOPED +  	if (mDrawablep == NULL || mDrawablep->getSpatialGroup() == NULL)  	{  		return; @@ -606,6 +612,8 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)  void renderFace(LLDrawable* drawable, LLFace *face)  { +	LL_PROFILE_ZONE_SCOPED +      LLVOVolume* vobj = drawable->getVOVolume();      if (vobj)      { @@ -892,6 +900,8 @@ bool less_than_max_mag(const LLVector4a& vec)  BOOL LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f,                               const LLMatrix4& mat_vert_in, BOOL global_volume)  { +	LL_PROFILE_ZONE_SCOPED +  	//get bounding box  	if (mDrawablep->isState(LLDrawable::REBUILD_VOLUME | LLDrawable::REBUILD_POSITION | LLDrawable::REBUILD_RIGGED))  	{ @@ -2376,6 +2386,8 @@ F32 LLFace::getTextureVirtualSize()  BOOL LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)  { +	LL_PROFILE_ZONE_SCOPED +  	//VECTORIZE THIS  	//get area of circle around face  	LLVector4a center; @@ -2655,6 +2667,8 @@ const LLMatrix4& LLFace::getRenderMatrix() const  S32 LLFace::renderElements(const U16 *index_array) const  { +	LL_PROFILE_ZONE_SCOPED +  	S32 ret = 0;  	if (isState(GLOBAL)) @@ -2674,6 +2688,8 @@ S32 LLFace::renderElements(const U16 *index_array) const  S32 LLFace::renderIndexed()  { +	LL_PROFILE_ZONE_SCOPED +  	if(mDrawablep == NULL || mDrawPoolp == NULL)  	{  		return 0; @@ -2684,6 +2700,8 @@ S32 LLFace::renderIndexed()  S32 LLFace::renderIndexed(U32 mask)  { +	LL_PROFILE_ZONE_SCOPED +  	if (mVertexBuffer.isNull())  	{  		return 0; diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 0adf58a0bf..253b6b9953 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -503,7 +503,9 @@ LLSpatialGroup* LLSpatialGroup::getParent()  	}  BOOL LLSpatialGroup::removeObject(LLDrawable *drawablep, BOOL from_octree) -	{ +{ +	LL_PROFILE_ZONE_SCOPED +  	if(!drawablep)  	{  		return FALSE; @@ -591,6 +593,8 @@ public:  void LLSpatialGroup::setState(U32 state, S32 mode)   { +	LL_PROFILE_ZONE_SCOPED +  	llassert(state <= LLSpatialGroup::STATE_MASK);  	if (mode > STATE_MODE_SINGLE) @@ -638,6 +642,8 @@ public:  void LLSpatialGroup::clearState(U32 state, S32 mode)  { +	LL_PROFILE_ZONE_SCOPED +  	llassert(state <= LLSpatialGroup::STATE_MASK);  	if (mode > STATE_MODE_SINGLE) @@ -724,6 +730,8 @@ void LLSpatialGroup::updateDistance(LLCamera &camera)  F32 LLSpatialPartition::calcDistance(LLSpatialGroup* group, LLCamera& camera)  { +	LL_PROFILE_ZONE_SCOPED +  	LLVector4a eye;  	LLVector4a origin;  	origin.load3(camera.getOrigin().mV); @@ -815,6 +823,8 @@ F32 LLSpatialGroup::getUpdateUrgency() const  BOOL LLSpatialGroup::changeLOD()  { +	LL_PROFILE_ZONE_SCOPED +  	if (hasState(ALPHA_DIRTY | OBJECT_DIRTY))  	{  		//a rebuild is going to happen, update distance and LoD @@ -907,6 +917,8 @@ void LLSpatialGroup::handleDestruction(const TreeNode* node)  void LLSpatialGroup::handleChildAddition(const OctreeNode* parent, OctreeNode* child)   { +	LL_PROFILE_ZONE_SCOPED +  	if (child->getListenerCount() == 0)  	{  		new LLSpatialGroup(child, getSpatialPartition()); diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 63e48d1dd0..0b20556104 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -168,6 +168,8 @@ U64 LLViewerObjectList::getIndex(const U32 local_id,  BOOL LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject* objectp)  { +	LL_PROFILE_ZONE_SCOPED +  	if(objectp && objectp->getRegion())  	{  		U32 local_id = objectp->mLocalID;		 @@ -303,6 +305,8 @@ static LLTrace::BlockTimerStatHandle FTM_PROCESS_OBJECTS("Process Objects");  LLViewerObject* LLViewerObjectList::processObjectUpdateFromCache(LLVOCacheEntry* entry, LLViewerRegion* regionp)  { +	LL_PROFILE_ZONE_SCOPED +  	LLDataPacker *cached_dpp = entry->getDP();  	if (!cached_dpp) @@ -848,6 +852,8 @@ static LLTrace::BlockTimerStatHandle FTM_IDLE_COPY("Idle Copy");  void LLViewerObjectList::update(LLAgent &agent)  { +	LL_PROFILE_ZONE_SCOPED +  	// Update globals  	LLViewerObject::setVelocityInterpolate( gSavedSettings.getBOOL("VelocityInterpolate") );  	LLViewerObject::setPingInterpolate( gSavedSettings.getBOOL("PingInterpolate") ); @@ -1293,6 +1299,8 @@ void LLViewerObjectList::clearDebugText()  void LLViewerObjectList::cleanupReferences(LLViewerObject *objectp)  { +	LL_PROFILE_ZONE_SCOPED +  	bool new_dead_object = true;  	if (mDeadObjects.find(objectp->mID) != mDeadObjects.end())  	{ @@ -1523,6 +1531,8 @@ void LLViewerObjectList::removeFromActiveList(LLViewerObject* objectp)  void LLViewerObjectList::updateActive(LLViewerObject *objectp)  { +	LL_PROFILE_ZONE_SCOPED +  	if (objectp->isDead())  	{  		return; // We don't update dead objects! @@ -1843,6 +1853,8 @@ void LLViewerObjectList::renderObjectBounds(const LLVector3 ¢er)  void LLViewerObjectList::generatePickList(LLCamera &camera)  { +	LL_PROFILE_ZONE_SCOPED +  		LLViewerObject *objectp;  		S32 i;  		// Reset all of the GL names to zero. @@ -2104,6 +2116,8 @@ LLViewerObject *LLViewerObjectList::replaceObject(const LLUUID &id, const LLPCod  S32 LLViewerObjectList::findReferences(LLDrawable *drawablep) const  { +	LL_PROFILE_ZONE_SCOPED +  	LLViewerObject *objectp;  	S32 num_refs = 0; @@ -2167,6 +2181,8 @@ void LLViewerObjectList::orphanize(LLViewerObject *childp, U32 parent_id, U32 ip  void LLViewerObjectList::findOrphans(LLViewerObject* objectp, U32 ip, U32 port)  { +	LL_PROFILE_ZONE_SCOPED +  	if (objectp->isDead())  	{  		LL_WARNS() << "Trying to find orphans for dead obj " << objectp->mID  | 
