diff --git a/indra/llcommon/llprofiler.h b/indra/llcommon/llprofiler.h index c414350e8eae400ab4230f172e1d5f817d6a0830..8cb6f6784022036781bca92cd4f03c8c87807dc0 100644 --- a/indra/llcommon/llprofiler.h +++ b/indra/llcommon/llprofiler.h @@ -88,12 +88,15 @@ extern thread_local bool gProfilerEnabled; // Mutually exclusive with detailed memory tracing #define LL_PROFILER_ENABLE_TRACY_MEMORY 0 - #define LL_PROFILER_ENABLE_TRACY_OPENGL 0 + #define LL_PROFILER_ENABLE_TRACY_OPENGL 1 #endif #if LL_PROFILER_CONFIGURATION == LL_PROFILER_CONFIG_TRACY #define LL_PROFILER_FRAME_END FrameMark; #define LL_PROFILER_SET_THREAD_NAME( name ) tracy::SetThreadName( name ); gProfilerEnabled = true; + #define LL_PROFILER_THREAD_BEGIN(name) FrameMarkStart(name) + #define LL_PROFILER_THREAD_END(name) FrameMarkEnd(name) + #define LL_RECORD_BLOCK_TIME(name) ZoneNamedN( ___tracy_scoped_zone, #name, true); #define LL_PROFILE_ZONE_NAMED(name) ZoneNamedN( ___tracy_scoped_zone, name, true ); #define LL_PROFILE_ZONE_NAMED_COLOR(name,color) ZoneNamedNC( ___tracy_scopped_zone, name, color, true ); // RGB @@ -110,7 +113,9 @@ extern thread_local bool gProfilerEnabled; #endif #if LL_PROFILER_CONFIGURATION == LL_PROFILER_CONFIG_FAST_TIMER #define LL_PROFILER_FRAME_END - #define LL_PROFILER_SET_THREAD_NAME( name ) (void)(name) + #define LL_PROFILER_SET_THREAD_NAME(name) (void)(name) + #define LL_PROFILER_THREAD_BEGIN(name) (void)(name) + #define LL_PROFILER_THREAD_END(name) (void)(name) #define LL_RECORD_BLOCK_TIME(name) const LLTrace::BlockTimer& LL_GLUE_TOKENS(block_time_recorder, __LINE__)(LLTrace::timeThisBlock(name)); (void)LL_GLUE_TOKENS(block_time_recorder, __LINE__); #define LL_PROFILE_ZONE_NAMED(name) // LL_PROFILE_ZONE_NAMED is a no-op when Tracy is disabled #define LL_PROFILE_ZONE_SCOPED // LL_PROFILE_ZONE_SCOPED is a no-op when Tracy is disabled @@ -128,6 +133,9 @@ extern thread_local bool gProfilerEnabled; #if LL_PROFILER_CONFIGURATION == LL_PROFILER_CONFIG_TRACY_FAST_TIMER #define LL_PROFILER_FRAME_END FrameMark; #define LL_PROFILER_SET_THREAD_NAME( name ) tracy::SetThreadName( name ); gProfilerEnabled = true; + #define LL_PROFILER_THREAD_BEGIN(name) FrameMarkStart(name) + #define LL_PROFILER_THREAD_END(name) FrameMarkEnd(name) + #define LL_RECORD_BLOCK_TIME(name) ZoneNamedN(___tracy_scoped_zone, #name, true); const LLTrace::BlockTimer& LL_GLUE_TOKENS(block_time_recorder, __LINE__)(LLTrace::timeThisBlock(name)); (void)LL_GLUE_TOKENS(block_time_recorder, __LINE__); #define LL_PROFILE_ZONE_NAMED(name) ZoneNamedN( ___tracy_scoped_zone, name, true ); #define LL_PROFILE_ZONE_NAMED_COLOR(name,color) ZoneNamedNC( ___tracy_scopped_zone, name, color, true ); // RGB diff --git a/indra/llcommon/llqueuedthread.cpp b/indra/llcommon/llqueuedthread.cpp index 3eeca6fd2ecb94808fc9ced61c6eae04a0803086..d4f5f9456bb86d9ac4b9263e4ce5000f26443929 100644 --- a/indra/llcommon/llqueuedthread.cpp +++ b/indra/llcommon/llqueuedthread.cpp @@ -507,9 +507,11 @@ void LLQueuedThread::run() mIdleThread = false; + LL_PROFILER_THREAD_BEGIN(mName.c_str()); threadedUpdate(); - + int pending_work = processNextRequest(); + LL_PROFILER_THREAD_END(mName.c_str()); if (pending_work == 0) { diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index c6f2b5e1456af891119a7031e6c4059fb577211d..1b2e0ded6e4d031ddcb5a59cb8a3edfd21783213 100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -150,7 +150,9 @@ void LLThread::threadRun() { try { + LL_PROFILER_THREAD_BEGIN(mName.c_str()); run(); + LL_PROFILER_THREAD_END(mName.c_str()); } catch (const LLContinueError &e) { diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h index cd1a20d0631e1dcfc02a375ce9b7848ba23ce3ca..46beb46a6a38fd69df91f828faccfe82791ad56d 100644 --- a/indra/llrender/llglheaders.h +++ b/indra/llrender/llglheaders.h @@ -1061,7 +1061,7 @@ extern void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *); #define glGetQueryObjectiv glGetQueryObjectivARB #include <tracy/TracyOpenGL.hpp> - #define LL_PROFILER_GPU_ZONEC(name,color) TracyGpuZoneC(name,color); + #define LL_PROFILER_GPU_ZONEC(name,color) TracyGpuZoneC(name,color) #define LL_PROFILER_GPU_COLLECT TracyGpuCollect #define LL_PROFILER_GPU_CONTEXT TracyGpuContext #else diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp index 728070c238048087de48cd7c2530e0d237b901dd..297ea04a9847c8a1fe954fd37bef98f030fb686e 100644 --- a/indra/llrender/llrendertarget.cpp +++ b/indra/llrender/llrendertarget.cpp @@ -472,13 +472,13 @@ void LLRenderTarget::bindTarget() GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3}; - LL_PROFILER_GPU_ZONEC( "gl.DrawBuffersARB", 0x4000FF ) + 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 ) + 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 014b9c16c01af87e58bbcfdbb373ae302c42ae01..6430f81cee07c3e5695f65a1404f5fdec8d8b88f 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -744,7 +744,7 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi stop_glerror(); LLGLSLShader::startProfile(); - LL_PROFILER_GPU_ZONEC( "gl.DrawRangeElements", 0xFFFF00 ) + LL_PROFILER_GPU_ZONEC( "gl.DrawRangeElements", 0xFFFF00 ); glDrawRangeElements(sGLMode[mode], start, end, count, GL_UNSIGNED_SHORT, idx); LLGLSLShader::stopProfile(count, mode); @@ -762,7 +762,7 @@ 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) + LL_PROFILER_GPU_ZONEC("gl.DrawRangeElements", 0xFFFF00); glDrawRangeElements(sGLMode[mode], start, end, count, GL_UNSIGNED_SHORT, idx); } @@ -808,7 +808,7 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const stop_glerror(); LLGLSLShader::startProfile(); - LL_PROFILER_GPU_ZONEC( "gl.DrawElements", 0xA0FFA0 ) + LL_PROFILER_GPU_ZONEC( "gl.DrawElements", 0xA0FFA0 ); glDrawElements(sGLMode[mode], count, GL_UNSIGNED_SHORT, ((U16*) getIndicesPointer()) + indices_offset); LLGLSLShader::stopProfile(count, mode); @@ -856,7 +856,7 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const LLGLSLShader::startProfile(); { - LL_PROFILER_GPU_ZONEC("gl.DrawArrays", 0xFF4040) + 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 f19b0eb98e8b7e5799e880c5f6bef25976b7e8a0..891a4d3f976c2c8643366210a16fd7cb27887730 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -1730,8 +1730,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); @@ -1739,6 +1737,8 @@ const S32 max_format = (S32)num_formats - 1; return FALSE; } + LL_PROFILER_GPU_CONTEXT + // Disable vertical sync for swap toggleVSync(enable_vsync); @@ -2289,9 +2289,6 @@ void LLWindowWin32::gatherInput() updateCursor(); } -static LLTrace::BlockTimerStatHandle FTM_KEYHANDLER("Handle Keyboard"); -static LLTrace::BlockTimerStatHandle FTM_MOUSEHANDLER("Handle Mouse"); - #define WINDOW_IMP_POST(x) window_imp->post([=]() { x; }) LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_param, LPARAM l_param) @@ -2581,9 +2578,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ // intentional fall-through here case WM_KEYUP: { - LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_KEYUP"); window_imp->post([=]() { + LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_KEYUP"); window_imp->mKeyScanCode = (l_param >> 16) & 0xff; window_imp->mKeyVirtualKey = w_param; window_imp->mRawMsg = u_msg; @@ -2591,8 +2588,6 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ window_imp->mRawLParam = l_param; { - LL_RECORD_BLOCK_TIME(FTM_KEYHANDLER); - if (debug_window_proc) { LL_INFOS("Window") << "Debug WindowProc WM_KEYUP " @@ -2722,9 +2717,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ } case WM_LBUTTONDOWN: { - LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_LBUTTONDOWN"); { - LL_RECORD_BLOCK_TIME(FTM_MOUSEHANDLER); + LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_LBUTTONDOWN"); window_imp->postMouseButtonEvent([=]() { sHandleLeftMouseUp = true; @@ -2768,11 +2762,10 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ } case WM_LBUTTONUP: { - LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_LBUTTONUP"); { window_imp->postMouseButtonEvent([=]() { - LL_RECORD_BLOCK_TIME(FTM_MOUSEHANDLER); + LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_LBUTTONUP"); if (!sHandleLeftMouseUp) { sHandleLeftMouseUp = true; @@ -2794,7 +2787,6 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ { LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_RBUTTONDOWN"); { - LL_RECORD_BLOCK_TIME(FTM_MOUSEHANDLER); window_imp->post([=]() { if (LLWinImm::isAvailable() && window_imp->mPreeditor) @@ -2817,7 +2809,6 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ { LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_RBUTTONUP"); { - LL_RECORD_BLOCK_TIME(FTM_MOUSEHANDLER); window_imp->postMouseButtonEvent([=]() { MASK mask = gKeyboard->currentMask(TRUE); @@ -2832,7 +2823,6 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ { LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_MBUTTONDOWN"); { - LL_RECORD_BLOCK_TIME(FTM_MOUSEHANDLER); window_imp->postMouseButtonEvent([=]() { if (LLWinImm::isAvailable() && window_imp->mPreeditor) @@ -2849,12 +2839,11 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ case WM_MBUTTONUP: { - LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_MBUTTONUP"); { - LL_RECORD_BLOCK_TIME(FTM_MOUSEHANDLER); window_imp->postMouseButtonEvent([=]() { - MASK mask = gKeyboard->currentMask(TRUE); + LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_MBUTTONUP"); + MASK mask = gKeyboard->currentMask(TRUE); window_imp->mCallbacks->handleMiddleMouseUp(window_imp, window_imp->mCursorPosition.convert(), mask); }); } @@ -2862,10 +2851,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ break; case WM_XBUTTONDOWN: { - LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_XBUTTONDOWN"); window_imp->postMouseButtonEvent([=]() { - LL_RECORD_BLOCK_TIME(FTM_MOUSEHANDLER); + LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_XBUTTONDOWN"); S32 button = GET_XBUTTON_WPARAM(w_param); if (LLWinImm::isAvailable() && window_imp->mPreeditor) { @@ -2882,11 +2870,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ case WM_XBUTTONUP: { - LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_XBUTTONUP"); window_imp->postMouseButtonEvent([=]() { - - LL_RECORD_BLOCK_TIME(FTM_MOUSEHANDLER); + LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_XBUTTONUP"); S32 button = GET_XBUTTON_WPARAM(w_param); MASK mask = gKeyboard->currentMask(TRUE); @@ -3742,7 +3728,7 @@ void LLWindowWin32::swapBuffers() glFlush(); //superstitious flush for maybe frame stall removal? SwapBuffers(mhDC); - LL_PROFILER_GPU_COLLECT + LL_PROFILER_GPU_COLLECT; }