From 2ce328282a5264f5d220f5368513a249a159a6fa Mon Sep 17 00:00:00 2001 From: Beq Date: Sun, 21 Mar 2021 15:13:02 +0000 Subject: [PATCH] profiling cleanup ready to merge back put proper markers in place where forgotten before --- indra/llcommon/fstelemetry.h | 37 ++++++++++++++++++++++++-- indra/llfilesystem/llfilesystem.cpp | 40 ++++++++++------------------- indra/newview/llappviewer.cpp | 19 +++++++++----- 3 files changed, 62 insertions(+), 34 deletions(-) diff --git a/indra/llcommon/fstelemetry.h b/indra/llcommon/fstelemetry.h index cd7688907b..87ec75b00a 100644 --- a/indra/llcommon/fstelemetry.h +++ b/indra/llcommon/fstelemetry.h @@ -1,12 +1,42 @@ #pragma once #ifndef FS_TELEMETRY_H_INCLUDED #define FS_TELEMETRY_H_INCLUDED +/** + * @file fstelemetry.h + * @brief fstelemetry Telemetry abstraction for FS + * + * $LicenseInfo:firstyear=2021&license=fsviewerlgpl$ + * Phoenix Firestorm Viewer Source Code + * Copyright (C) 2021, The Phoenix Firestorm Project, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA + * http://www.firestormviewer.org + * $/LicenseInfo$ + */ // define a simple set of empty macros that allow us to build without the Tracy profiler installed in 3p // this is similar to the profiler abstraction used by LL but as they have no plans to release that any time soon we'll replace it // Just a minimal set at the moment will add locks/gpu/memory and other stuff later. -#ifdef TRACY_ENABLE +// generic switch (in case we ever add others or incorporate commercial tools like RAD Games if LL were to share a license) +// turn off in the else statement below. +#define FS_HAS_TELEMETRY_SUPPORT + +#ifdef TRACY_ENABLE // (Tracy open source telemetry) #include "Tracy.hpp" #define FSZone ZoneNamed( ___tracy_scoped_zone, FSTelemetry::active) @@ -17,7 +47,10 @@ #define FSFrameMark FrameMark #define FSTelemetryIsConnected TracyIsConnected -#else +#else // (no telemetry) + +// No we don't want no stinkin' telemetry. move along +#undef FS_HAS_TELEMETRY_SUPPORT #define FSZone #define FSZoneN( name ) diff --git a/indra/llfilesystem/llfilesystem.cpp b/indra/llfilesystem/llfilesystem.cpp index 9d1a4605f3..6d3b7511a5 100644 --- a/indra/llfilesystem/llfilesystem.cpp +++ b/indra/llfilesystem/llfilesystem.cpp @@ -57,7 +57,7 @@ LLFileSystem::~LLFileSystem() // static bool LLFileSystem::getExists(const LLUUID& file_id, const LLAssetType::EType file_type) { - FSZoneC(tracy::Color::Gold); + FSZoneC(tracy::Color::Gold); // measure cache performance std::string id_str; file_id.toString(id_str); const std::string extra_info = ""; @@ -86,7 +86,7 @@ bool LLFileSystem::getExists(const LLUUID& file_id, const LLAssetType::EType fil bool LLFileSystem::removeFile(const LLUUID& file_id, const LLAssetType::EType file_type, int suppress_error /*= 0*/) // { - FSZoneC(tracy::Color::Gold); + FSZoneC(tracy::Color::Gold); // measure cache performance std::string id_str; file_id.toString(id_str); const std::string extra_info = ""; @@ -104,8 +104,7 @@ bool LLFileSystem::removeFile(const LLUUID& file_id, const LLAssetType::EType fi bool LLFileSystem::renameFile(const LLUUID& old_file_id, const LLAssetType::EType old_file_type, const LLUUID& new_file_id, const LLAssetType::EType new_file_type) { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance std::string old_id_str; old_file_id.toString(old_id_str); const std::string extra_info = ""; @@ -136,8 +135,7 @@ bool LLFileSystem::renameFile(const LLUUID& old_file_id, const LLAssetType::ETyp // static S32 LLFileSystem::getFileSize(const LLUUID& file_id, const LLAssetType::EType file_type) { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance std::string id_str; file_id.toString(id_str); const std::string extra_info = ""; @@ -163,8 +161,7 @@ S32 LLFileSystem::getFileSize(const LLUUID& file_id, const LLAssetType::EType fi BOOL LLFileSystem::read(U8* buffer, S32 bytes) { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance BOOL success = TRUE; std::string id; @@ -223,22 +220,19 @@ BOOL LLFileSystem::read(U8* buffer, S32 bytes) S32 LLFileSystem::getLastBytesRead() { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance return mBytesRead; } BOOL LLFileSystem::eof() { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance return mPosition >= getSize(); } BOOL LLFileSystem::write(const U8* buffer, S32 bytes) { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance std::string id_str; mFileID.toString(id_str); const std::string extra_info = ""; @@ -348,8 +342,7 @@ BOOL LLFileSystem::write(const U8* buffer, S32 bytes) BOOL LLFileSystem::seek(S32 offset, S32 origin) { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance if (-1 == origin) { origin = mPosition; @@ -380,30 +373,26 @@ BOOL LLFileSystem::seek(S32 offset, S32 origin) S32 LLFileSystem::tell() const { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance return mPosition; } S32 LLFileSystem::getSize() { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance return LLFileSystem::getFileSize(mFileID, mFileType); } S32 LLFileSystem::getMaxSize() { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance // offer up a huge size since we don't care what the max is return INT_MAX; } BOOL LLFileSystem::rename(const LLUUID& new_id, const LLAssetType::EType new_type) { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance LLFileSystem::renameFile(mFileID, mFileType, new_id, new_type); mFileID = new_id; @@ -414,8 +403,7 @@ BOOL LLFileSystem::rename(const LLUUID& new_id, const LLAssetType::EType new_typ BOOL LLFileSystem::remove() { - FSZoneC(tracy::Color::Gold); -; + FSZoneC(tracy::Color::Gold); // measure cache performance LLFileSystem::removeFile(mFileID, mFileType); return TRUE; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 0ba8e0ee92..92ce80dfdc 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1654,17 +1654,24 @@ bool LLAppViewer::doFrame() { LLEventPump& mainloop(LLEventPumps::instance().obtain("mainloop")); LLSD newFrame; -// Tracy enabling -#ifdef TRACY_ENABLE +// telemetry enabling. +// This ifdef is optional but better to avoid even low overhead code in main loop where not needed. +#ifdef FS_HAS_TELEMETRY_SUPPORT static bool one_time{false}; - static LLCachedControl tracy_enable_when_connected(gSavedSettings, "FSTracyEnableWhenConnected"); + static LLCachedControl profiling_enabled_when_connected(gSavedSettings, "FSTelemetryEnableWhenConnected"); if( !one_time && (gFrameCount % 10 == 0) ) { - if(!FSProfiler::active && tracy_enable_when_connected && TracyIsConnected) + if(!FSTelemetry::active && profiling_enabled_when_connected && FSTelemetryIsConnected) { - FSProfiler::active = true; + FSTelemetry::active = true; + gSavedSettings.setBOOL("FSTelemetryActive", TRUE); // keep the setting in sync. one_time=true; // prevent reset race if we disable manually. - LL_INFOS() << "Tracy profiler or collector connected" << LL_ENDL; + LL_INFOS() << "Profiler or collector connected" << LL_ENDL; + } + else if(!profiling_enabled_when_connected) + { + // no point in checking if we are not waiting. + one_time = true; } } #endif