diff options
| -rw-r--r-- | indra/llrender/llvertexbuffer.cpp | 19 | ||||
| -rw-r--r-- | indra/llrender/llvertexbuffer.h | 5 | ||||
| -rw-r--r-- | indra/newview/llsurface.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llsurfacepatch.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llviewerparceloverlay.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llvlcomposition.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llvosurfacepatch.cpp | 1 | 
8 files changed, 26 insertions, 5 deletions
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index b69b644ebc..0449ac392c 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -91,6 +91,8 @@ LLVBOPool LLVertexBuffer::sDynamicIBOPool(GL_DYNAMIC_DRAW_ARB, GL_ELEMENT_ARRAY_  U32 LLVBOPool::sBytesPooled = 0;  U32 LLVBOPool::sIndexBytesPooled = 0; +U32 LLVBOPool::sNameIdx = 0; +U32 LLVBOPool::sNamePool[1024];  std::list<U32> LLVertexBuffer::sAvailableVAOName;  U32 LLVertexBuffer::sCurVAOName = 1; @@ -121,15 +123,20 @@ bool LLVertexBuffer::sPreferStreamDraw = false;  U32 LLVBOPool::genBuffer()  { -	U32 ret = 0; +	LL_PROFILE_ZONE_SCOPED -	glGenBuffersARB(1, &ret); -	 -	return ret; +	if (sNameIdx == 0) +	{ +		glGenBuffersARB(1024, sNamePool); +		sNameIdx = 1024; +	} + +	return sNamePool[--sNameIdx];  }  void LLVBOPool::deleteBuffer(U32 name)  { +	LL_PROFILE_ZONE_SCOPED  	if (gGLManager.mInited)  	{  		LLVertexBuffer::unbind(); @@ -152,6 +159,7 @@ LLVBOPool::LLVBOPool(U32 vboUsage, U32 vboType)  volatile U8* LLVBOPool::allocate(U32& name, U32 size, bool for_seed)  { +	LL_PROFILE_ZONE_SCOPED  	llassert(vbo_block_size(size) == size);  	volatile U8* ret = NULL; @@ -267,10 +275,12 @@ void LLVBOPool::release(U32 name, volatile U8* buffer, U32 size)  void LLVBOPool::seedPool()  { +	LL_PROFILE_ZONE_SCOPED  	U32 dummy_name = 0;  	if (mFreeList.size() < LL_VBO_POOL_SEED_COUNT)  	{ +		LL_PROFILE_ZONE_NAMED("VBOPool Resize");  		mFreeList.resize(LL_VBO_POOL_SEED_COUNT);  	} @@ -411,6 +421,7 @@ void LLVertexBuffer::releaseVAOName(U32 name)  //static  void LLVertexBuffer::seedPools()  { +	LL_PROFILE_ZONE_SCOPED  	sStreamVBOPool.seedPool();  	sDynamicVBOPool.seedPool();  	sDynamicCopyVBOPool.seedPool(); diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h index dbe1a3687f..1d60970df4 100644 --- a/indra/llrender/llvertexbuffer.h +++ b/indra/llrender/llvertexbuffer.h @@ -89,6 +89,9 @@ public:  	std::vector<record_list_t> mFreeList;  	std::vector<U32> mMissCount; +	//used to avoid calling glGenBuffers for every VBO creation +	static U32 sNamePool[1024]; +	static U32 sNameIdx;  }; @@ -127,7 +130,7 @@ public:  	static LLVBOPool sDynamicCopyVBOPool;  	static LLVBOPool sStreamIBOPool;  	static LLVBOPool sDynamicIBOPool; -	 +  	static std::list<U32> sAvailableVAOName;  	static U32 sCurVAOName; diff --git a/indra/newview/llsurface.cpp b/indra/newview/llsurface.cpp index cb356726e6..ea36e1d7be 100644 --- a/indra/newview/llsurface.cpp +++ b/indra/newview/llsurface.cpp @@ -1214,6 +1214,7 @@ F32 LLSurface::getWaterHeight() const  BOOL LLSurface::generateWaterTexture(const F32 x, const F32 y,  									 const F32 width, const F32 height)  { +	LL_PROFILE_ZONE_SCOPED  	if (!getWaterTexture())  	{  		return FALSE; diff --git a/indra/newview/llsurfacepatch.cpp b/indra/newview/llsurfacepatch.cpp index 5e056944e9..aeefcd6fb8 100644 --- a/indra/newview/llsurfacepatch.cpp +++ b/indra/newview/llsurfacepatch.cpp @@ -728,6 +728,7 @@ BOOL LLSurfacePatch::updateTexture()  void LLSurfacePatch::updateGL()  { +	LL_PROFILE_ZONE_SCOPED  	F32 meters_per_grid = getSurface()->getMetersPerGrid();  	F32 grids_per_patch_edge = (F32)getSurface()->getGridsPerPatchEdge(); diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp index 7c3dd00e1a..02f7bbeed8 100644 --- a/indra/newview/llviewerparceloverlay.cpp +++ b/indra/newview/llviewerparceloverlay.cpp @@ -847,6 +847,7 @@ void LLViewerParcelOverlay::setDirty()  void LLViewerParcelOverlay::updateGL()  { +	LL_PROFILE_ZONE_SCOPED  	updateOverlayTexture();  } diff --git a/indra/newview/llvlcomposition.cpp b/indra/newview/llvlcomposition.cpp index c63c5f6b23..46beac8255 100644 --- a/indra/newview/llvlcomposition.cpp +++ b/indra/newview/llvlcomposition.cpp @@ -254,6 +254,7 @@ BOOL LLVLComposition::generateComposition()  BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,  									  const F32 width, const F32 height)  { +	LL_PROFILE_ZONE_SCOPED  	llassert(mSurfacep);  	llassert(x >= 0.f);  	llassert(y >= 0.f); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index f260e4f750..a588d05ff7 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -7123,6 +7123,7 @@ void LLVOAvatar::updateGL()  {  	if (mMeshTexturesDirty)  	{ +		LL_PROFILE_ZONE_SCOPED  		updateMeshTextures();  		mMeshTexturesDirty = FALSE;  	} @@ -8361,6 +8362,7 @@ void LLVOAvatar::updateMeshVisibility()  // virtual  void LLVOAvatar::updateMeshTextures()  { +	LL_PROFILE_ZONE_SCOPED  	static S32 update_counter = 0;  	mBakedTextureDebugText.clear(); diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp index 897bace4e1..b5560d3d79 100644 --- a/indra/newview/llvosurfacepatch.cpp +++ b/indra/newview/llvosurfacepatch.cpp @@ -218,6 +218,7 @@ void LLVOSurfacePatch::updateGL()  {  	if (mPatchp)  	{ +		LL_PROFILE_ZONE_SCOPED  		mPatchp->updateGL();  	}  }  | 
