diff options
| author | Dave Parks <davep@lindenlab.com> | 2022-05-20 13:31:18 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2022-05-20 13:31:18 -0500 | 
| commit | 6c6d9a10f830e264cf75603949b54a12256cab78 (patch) | |
| tree | aaecce601f7ac21829a42ff0de68554adaa61f61 | |
| parent | 096ad1306d1a5db300592d9be87ab6762777d400 (diff) | |
SL-17287 Update Tracy to 0.8.1.  Clean up GPU instrumentation.
| -rw-r--r-- | autobuild.xml | 4 | ||||
| -rw-r--r-- | indra/cmake/Tracy.cmake | 1 | ||||
| -rw-r--r-- | indra/llcommon/llframetimer.cpp | 6 | ||||
| -rw-r--r-- | indra/llcommon/llprofiler.h | 35 | ||||
| -rw-r--r-- | indra/llrender/llglheaders.h | 9 | ||||
| -rw-r--r-- | indra/llrender/llrendertarget.cpp | 2 | ||||
| -rw-r--r-- | indra/llrender/llvertexbuffer.cpp | 6 | ||||
| -rw-r--r-- | indra/llwindow/llwindowwin32.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/llface.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llspatialpartition.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 12 | 
12 files changed, 49 insertions, 38 deletions
diff --git a/autobuild.xml b/autobuild.xml index fa3f7b2743..4c69ff71d4 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3142,11 +3142,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>              <key>archive</key>              <map>                <key>hash</key> -              <string>b649ee6591e67d2341e886b3fc3484a7</string> +              <string>dff3dd1db6a4cb0b73f60a5db3ee0de2</string>                <key>hash_algorithm</key>                <string>md5</string>                <key>url</key> -              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/86974/801642/tracy-v0.7.8.563351-windows64-563351.tar.bz2</string> +              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/100101/882119/tracy-v0.8.1.571983-windows64-571983.tar.bz2</string>              </map>              <key>name</key>              <string>windows64</string> diff --git a/indra/cmake/Tracy.cmake b/indra/cmake/Tracy.cmake index cfff956bcf..dba57eb920 100644 --- a/indra/cmake/Tracy.cmake +++ b/indra/cmake/Tracy.cmake @@ -12,6 +12,7 @@ if (USE_TRACY)    if (WINDOWS)      MESSAGE(STATUS "Including Tracy for Windows: '${TRACY_INCLUDE_DIR}'") +    set(TRACY_LIBRARY "TracyClient")    endif (WINDOWS)    if (DARWIN) diff --git a/indra/llcommon/llframetimer.cpp b/indra/llcommon/llframetimer.cpp index c54029e8b4..58af32f1af 100644 --- a/indra/llcommon/llframetimer.cpp +++ b/indra/llcommon/llframetimer.cpp @@ -30,9 +30,9 @@  #include "llframetimer.h"  // We don't bother building a stand alone lib; we just need to include the one source file for Tracy support -#if LL_PROFILER_CONFIGURATION == LL_PROFILER_CONFIG_TRACY || LL_PROFILER_CONFIGURATION == LL_PROFILER_CONFIG_TRACY_FAST_TIMER -	#include "TracyClient.cpp" -#endif // LL_PROFILER_CONFIGURATION +//#if LL_PROFILER_CONFIGURATION == LL_PROFILER_CONFIG_TRACY || LL_PROFILER_CONFIGURATION == LL_PROFILER_CONFIG_TRACY_FAST_TIMER +//	#include "TracyClient.cpp" +//#endif // LL_PROFILER_CONFIGURATION  // Static members  //LLTimer	LLFrameTimer::sInternalTimer; diff --git a/indra/llcommon/llprofiler.h b/indra/llcommon/llprofiler.h index f9d7ae7ce4..bc46128d21 100644 --- a/indra/llcommon/llprofiler.h +++ b/indra/llcommon/llprofiler.h @@ -86,8 +86,8 @@ extern thread_local bool gProfilerEnabled;          #define TRACY_ONLY_IPV4      1          #include "Tracy.hpp" -        // Mutually exclusive with detailed memory tracing -        #define LL_PROFILER_ENABLE_TRACY_OPENGL 0 +        // Disable memory tracing when enabled, but enabled  +        #define LL_PROFILER_ENABLE_TRACY_OPENGL 1      #endif      #if LL_PROFILER_CONFIGURATION == LL_PROFILER_CONFIG_TRACY @@ -104,8 +104,6 @@ extern thread_local bool gProfilerEnabled;          #define LL_PROFILE_ZONE_ERR(name)               LL_PROFILE_ZONE_NAMED_COLOR( name, 0XFF0000  )  // RGB yellow          #define LL_PROFILE_ZONE_INFO(name)              LL_PROFILE_ZONE_NAMED_COLOR( name, 0X00FFFF  )  // RGB cyan          #define LL_PROFILE_ZONE_WARN(name)              LL_PROFILE_ZONE_NAMED_COLOR( name, 0x0FFFF00 )  // RGB red -        #define LL_PROFILE_ALLOC(ptr, size)             TracyAlloc(ptr, size) -        #define LL_PROFILE_FREE(ptr)                    TracyFree(ptr)      #endif      #if LL_PROFILER_CONFIGURATION == LL_PROFILER_CONFIG_FAST_TIMER          #define LL_PROFILER_FRAME_END @@ -121,8 +119,6 @@ extern thread_local bool gProfilerEnabled;          #define LL_PROFILE_ZONE_ERR(name)               (void)(name); // Not supported          #define LL_PROFILE_ZONE_INFO(name)              (void)(name); // Not supported          #define LL_PROFILE_ZONE_WARN(name)              (void)(name); // Not supported -        #define LL_PROFILE_ALLOC(ptr, size)             (void)(ptr); (void)(size); -        #define LL_PROFILE_FREE(ptr)                    (void)(ptr);      #endif      #if LL_PROFILER_CONFIGURATION == LL_PROFILER_CONFIG_TRACY_FAST_TIMER          #define LL_PROFILER_FRAME_END                   FrameMark @@ -138,14 +134,37 @@ extern thread_local bool gProfilerEnabled;          #define LL_PROFILE_ZONE_ERR(name)               LL_PROFILE_ZONE_NAMED_COLOR( name, 0XFF0000  )  // RGB yellow          #define LL_PROFILE_ZONE_INFO(name)              LL_PROFILE_ZONE_NAMED_COLOR( name, 0X00FFFF  )  // RGB cyan          #define LL_PROFILE_ZONE_WARN(name)              LL_PROFILE_ZONE_NAMED_COLOR( name, 0x0FFFF00 )  // RGB red -        #define LL_PROFILE_ALLOC(ptr, size)             TracyAlloc(ptr, size) -        #define LL_PROFILE_FREE(ptr)                    TracyFree(ptr)      #endif  #else      #define LL_PROFILER_FRAME_END      #define LL_PROFILER_SET_THREAD_NAME( name ) (void)(name)  #endif // LL_PROFILER +#if LL_PROFILER_ENABLE_TRACY_OPENGL +#define LL_PROFILE_GPU_ZONE(name)        TracyGpuZone(name) +#define LL_PROFILE_GPU_ZONEC(name,color) TracyGpuZoneC(name,color) +#define LL_PROFILER_GPU_COLLECT           TracyGpuCollect +#define LL_PROFILER_GPU_CONTEXT           TracyGpuContext + +// disable memory tracking (incompatible with GPU tracing +#define LL_PROFILE_ALLOC(ptr, size)             (void)(ptr); (void)(size); +#define LL_PROFILE_FREE(ptr)                    (void)(ptr); +#else +#define LL_PROFILE_GPU_ZONE(name)        (void)name; +#define LL_PROFILE_GPU_ZONEC(name,color) (void)name;(void)color; +#define LL_PROFILER_GPU_COLLECT +#define LL_PROFILER_GPU_CONTEXT + +#if LL_PROFILER_CONFIG > 1 +#define LL_PROFILE_ALLOC(ptr, size)             TracyAlloc(ptr, size) +#define LL_PROFILE_FREE(ptr)                    TracyFree(ptr) +#else +#define LL_PROFILE_ALLOC(ptr, size)             (void)(ptr); (void)(size); +#define LL_PROFILE_FREE(ptr)                    (void)(ptr); +#endif + +#endif +  #include "llprofilercategories.h"  #endif // LL_PROFILER_H diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h index aa429505c1..c53631dc7b 100644 --- a/indra/llrender/llglheaders.h +++ b/indra/llrender/llglheaders.h @@ -830,14 +830,7 @@ extern void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);      #define glGetQueryiv        glGetQueryivARB      #define glGetQueryObjectiv  glGetQueryObjectivARB      #include <tracy/TracyOpenGL.hpp> - -    #define LL_PROFILER_GPU_ZONEC(name,color) TracyGpuZoneC(name,color); -    #define LL_PROFILER_GPU_COLLECT           TracyGpuCollect -    #define LL_PROFILER_GPU_CONTEXT           TracyGpuContext -#else -    #define LL_PROFILER_GPU_ZONEC(name,color) (void)name;(void)color; -    #define LL_PROFILER_GPU_COLLECT -    #define LL_PROFILER_GPU_CONTEXT  #endif +      #endif // LL_LLGLHEADERS_H diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp index 0a4cc1bcf5..85c2a48279 100644 --- a/indra/llrender/llrendertarget.cpp +++ b/indra/llrender/llrendertarget.cpp @@ -488,13 +488,11 @@ void LLRenderTarget::bindTarget()  									GL_COLOR_ATTACHMENT1,  									GL_COLOR_ATTACHMENT2,  									GL_COLOR_ATTACHMENT3}; -			LL_PROFILER_GPU_ZONEC( "gl.DrawBuffersARB", 0x4000FF )  			glDrawBuffersARB(mTex.size(), drawbuffers);  		}  		if (mTex.empty())  		{ //no color buffer to draw to -			LL_PROFILER_GPU_ZONEC( "gl.DrawBuffer", 0x0000FF )  			glDrawBuffer(GL_NONE);  			glReadBuffer(GL_NONE);  		} diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 6338cab96a..b1b69f1508 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -624,7 +624,6 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi  	stop_glerror();  	LLGLSLShader::startProfile(); -    LL_PROFILER_GPU_ZONEC( "gl.DrawRangeElements", 0xFFFF00 )  	glDrawRangeElements(sGLMode[mode], start, end, count, GL_UNSIGNED_SHORT,   		idx);  	LLGLSLShader::stopProfile(count, mode); @@ -642,7 +641,6 @@ void LLVertexBuffer::drawRangeFast(U32 mode, U32 start, U32 end, U32 count, U32      U16* idx = ((U16*)getIndicesPointer()) + indices_offset; -    LL_PROFILER_GPU_ZONEC("gl.DrawRangeElements", 0xFFFF00)          glDrawRangeElements(sGLMode[mode], start, end, count, GL_UNSIGNED_SHORT,              idx);  } @@ -688,8 +686,7 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const  	stop_glerror();  	LLGLSLShader::startProfile(); -    LL_PROFILER_GPU_ZONEC( "gl.DrawElements", 0xA0FFA0 ) -	glDrawElements(sGLMode[mode], count, GL_UNSIGNED_SHORT, +    glDrawElements(sGLMode[mode], count, GL_UNSIGNED_SHORT,  		((U16*) getIndicesPointer()) + indices_offset);  	LLGLSLShader::stopProfile(count, mode);  	stop_glerror(); @@ -736,7 +733,6 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const      LLGLSLShader::startProfile();      { -        LL_PROFILER_GPU_ZONEC("gl.DrawArrays", 0xFF4040)              glDrawArrays(sGLMode[mode], first, count);      }      LLGLSLShader::stopProfile(count, mode); diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 1f3823509c..02b3c25129 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -1623,8 +1623,6 @@ const	S32   max_format  = (S32)num_formats - 1;  		return FALSE;  	} -	LL_PROFILER_GPU_CONTEXT -  	if (!gGLManager.initGL())  	{  		OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK); @@ -1656,6 +1654,8 @@ const	S32   max_format  = (S32)num_formats - 1;  		swapBuffers();  	} +    LL_PROFILER_GPU_CONTEXT; +  	return TRUE;  } @@ -1809,6 +1809,7 @@ void* LLWindowWin32::createSharedContext()  void LLWindowWin32::makeContextCurrent(void* contextPtr)  {      wglMakeCurrent(mhDC, (HGLRC) contextPtr); +    LL_PROFILER_GPU_CONTEXT;  }  void LLWindowWin32::destroySharedContext(void* contextPtr) @@ -3577,7 +3578,7 @@ void LLWindowWin32::swapBuffers()      glFlush(); //superstitious flush for maybe frame stall removal?  	SwapBuffers(mhDC); -    LL_PROFILER_GPU_COLLECT +    LL_PROFILER_GPU_COLLECT;  } diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index d0c26bc43b..a2d9c0ba2b 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -587,7 +587,6 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)  						glTexCoordPointer(2, GL_FLOAT, 8, vol_face.mTexCoords);  					}  					gGL.syncMatrices(); -					LL_PROFILER_GPU_ZONEC( "gl.DrawElements", 0x00FF00 );  					glDrawElements(GL_TRIANGLES, vol_face.mNumIndices, GL_UNSIGNED_SHORT, vol_face.mIndices);  					glDisableClientState(GL_TEXTURE_COORD_ARRAY);  				} diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index b6bd07085b..39bb46e6fa 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -2632,14 +2632,12 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)  			gGL.diffuseColor4fv(line_color.mV);  			gGL.syncMatrices();  			{ -				LL_PROFILER_GPU_ZONEC( "gl.DrawElements", 0x20FF20 )  				glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);  			}  			gGL.diffuseColor4fv(color.mV);  			glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);  			{ -				LL_PROFILER_GPU_ZONEC( "gl.DrawElements", 0x40FF40 )  				glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);  			}  		} @@ -3178,7 +3176,6 @@ void renderRaycast(LLDrawable* drawablep)  						gGL.diffuseColor4f(0,1,1,0.5f);  						glVertexPointer(3, GL_FLOAT, sizeof(LLVector4a), face.mPositions);  						gGL.syncMatrices(); -						LL_PROFILER_GPU_ZONEC( "gl.DrawElements", 0x60FF60 );  						glDrawElements(GL_TRIANGLES, face.mNumIndices, GL_UNSIGNED_SHORT, face.mIndices);  					} diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 9c9c30ad95..ad57fcd802 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -5274,6 +5274,7 @@ BOOL LLViewerWindow::cubeSnapshot(const LLVector3& origin, LLCubeMapArray* cubea  {      // NOTE: implementation derived from LLFloater360Capture::capture360Images() and simpleSnapshot      LL_PROFILE_ZONE_SCOPED_CATEGORY_APP; +    LL_PROFILE_GPU_ZONE("cubeSnapshot");      llassert(LLPipeline::sRenderDeferred);      llassert(!gCubeSnapshot); //assert a snapshot isn't already in progress diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 6ea519c71b..8f38f7a8f4 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -4251,7 +4251,7 @@ U32 LLPipeline::sCurRenderPoolType = 0 ;  void LLPipeline::renderGeom(LLCamera& camera, bool forceVBOUpdate)  {  	LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE; //LL_RECORD_BLOCK_TIME(FTM_RENDER_GEOMETRY); - +    LL_PROFILE_GPU_ZONE("renderGeom");  	assertInitialized();  	F32 saved_modelview[16]; @@ -4501,8 +4501,9 @@ void LLPipeline::renderGeom(LLCamera& camera, bool forceVBOUpdate)  void LLPipeline::renderGeomDeferred(LLCamera& camera)  {  	LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomDeferred"); -  	LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL; //LL_RECORD_BLOCK_TIME(FTM_RENDER_GEOMETRY); +    LL_PROFILE_GPU_ZONE("renderGeomDeferred"); +  	{  		LL_PROFILE_ZONE_NAMED_CATEGORY_DRAWPOOL("deferred pools"); //LL_RECORD_BLOCK_TIME(FTM_DEFERRED_POOLS); @@ -4601,6 +4602,8 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)  void LLPipeline::renderGeomPostDeferred(LLCamera& camera, bool do_occlusion)  {  	LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL; //LL_RECORD_BLOCK_TIME(FTM_POST_DEFERRED_POOLS); +    LL_PROFILE_GPU_ZONE("renderGeomPostDeferred"); +  	U32 cur_type = 0;  	LLGLEnable cull(GL_CULL_FACE); @@ -4697,6 +4700,7 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera, bool do_occlusion)  void LLPipeline::renderGeomShadow(LLCamera& camera)  {      LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE; +    LL_PROFILE_GPU_ZONE("renderGeomShadow");      U32 cur_type = 0;  	LLGLEnable cull(GL_CULL_FACE); @@ -9202,6 +9206,7 @@ inline float sgn(float a)  void LLPipeline::generateWaterReflection(LLCamera& camera_in)  {      LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE; +    LL_PROFILE_GPU_ZONE("generateWaterReflection");      if (!assertInitialized() || gCubeSnapshot)      { @@ -10082,6 +10087,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)  	}  	LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE; //LL_RECORD_BLOCK_TIME(FTM_GEN_SUN_SHADOW); +    LL_PROFILE_GPU_ZONE("generateSunShadow");  	bool skip_avatar_update = false;  	if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK || !LLVOAvatar::sVisibleInFirstPerson) @@ -10932,6 +10938,7 @@ static LLTrace::BlockTimerStatHandle FTM_GENERATE_IMPOSTOR("Generate Impostor");  void LLPipeline::generateImpostor(LLVOAvatar* avatar, bool preview_avatar)  {      LL_RECORD_BLOCK_TIME(FTM_GENERATE_IMPOSTOR); +    LL_PROFILE_GPU_ZONE("generateImpostor");  	LLGLState::checkStates();  	LLGLState::checkTextureChannels(); @@ -11175,7 +11182,6 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar, bool preview_avatar)  		if (LLPipeline::sRenderDeferred)  		{  			GLuint buff = GL_COLOR_ATTACHMENT0; -			LL_PROFILER_GPU_ZONEC( "gl.DrawBuffersARB", 0x8000FF );  			glDrawBuffersARB(1, &buff);  		}  | 
