From 773d5544eacc5dd693fbc5fb7d5fc2078f0b87d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Gro=C3=9F?= Date: Sat, 9 May 2026 20:41:23 +0200 Subject: [PATCH] Add support for the Tracy profiler. --- BUILD.md | 1 + CMakeLists.txt | 1 + assignment-client/CMakeLists.txt | 1 + cmake/macros/AddTracy.cmake | 30 ++++++++++++++++++++++++++++++ domain-server/CMakeLists.txt | 1 + interface/CMakeLists.txt | 1 + tools/oven/CMakeLists.txt | 1 + 7 files changed, 36 insertions(+) create mode 100644 cmake/macros/AddTracy.cmake diff --git a/BUILD.md b/BUILD.md index c6ff29c10bc..4d914fc1c12 100644 --- a/BUILD.md +++ b/BUILD.md @@ -129,6 +129,7 @@ The following build options can be used when running CMake * OVERTE_RENDERING_BACKEND * OVERTE_DISABLE_QML +* OVERTE_USE_TRACY - This builds with Tracy profiler support. Make sure you are building the Tracy client from master to get a similar version as the one used here. ### Devices diff --git a/CMakeLists.txt b/CMakeLists.txt index f66dbabddf1..728f17bd274 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,6 +89,7 @@ set(OVERTE_BUILD_TOOLS ON CACHE BOOL "Build tools. Includes Oven, which is used set(OVERTE_BUILD_INSTALLER ON CACHE BOOL "Build installer.") set(OVERTE_DISABLE_QML OFF CACHE BOOL "Build without QML. (For graphics debugging.)") set(OVERTE_DOWNLOAD_SERVERLESS_CONTENT OFF CACHE BOOL "Download and setup default serverless content beside Interface.") +set(OVERTE_USE_TRACY OFF CACHE BOOL "Build with support for the Tracy CPU/GPU/memory profiler.") # use OpenGL ES on Linux aarch64 and Android. if ((CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") OR ANDROID) set(OVERTE_RENDERING_BACKEND "GLES" CACHE STRING "Which rendering backend to compile with. Valid options are: 'OpenGL', 'GLES', and 'Vulkan'.") diff --git a/assignment-client/CMakeLists.txt b/assignment-client/CMakeLists.txt index f8656670b62..ccd0c752396 100644 --- a/assignment-client/CMakeLists.txt +++ b/assignment-client/CMakeLists.txt @@ -24,6 +24,7 @@ link_hifi_libraries( include_hifi_library_headers(procedural) include_hifi_library_headers(entities) +add_tracy() add_crashpad() target_breakpad() diff --git a/cmake/macros/AddTracy.cmake b/cmake/macros/AddTracy.cmake new file mode 100644 index 00000000000..344a3aa0d05 --- /dev/null +++ b/cmake/macros/AddTracy.cmake @@ -0,0 +1,30 @@ +# +# AddTracy.cmake +# cmake/macros +# +# Created by Julian Groß on 2026-05-09. +# Copyright 2026 Overte e.V. +# +# Distributed under the Apache License, Version 2.0. +# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html +# + +macro(ADD_TRACY) + if(OVERTE_USE_TRACY) + option(TRACY_ENABLE "Enable the Tracy CPU/GPU/memory profiler." ON) + option(TRACY_ON_DEMAND "" ON) + + include(FetchContent) + + FetchContent_Declare( + tracy + GIT_REPOSITORY https://github.com/wolfpld/tracy.git + GIT_TAG master + GIT_SHALLOW TRUE + GIT_PROGRESS TRUE + ) + FetchContent_MakeAvailable(tracy) + + target_link_libraries(${TARGET_NAME} Tracy::TracyClient) + endif() +endmacro() diff --git a/domain-server/CMakeLists.txt b/domain-server/CMakeLists.txt index 011fd115bd3..082f32128ee 100644 --- a/domain-server/CMakeLists.txt +++ b/domain-server/CMakeLists.txt @@ -36,6 +36,7 @@ target_zlib() target_quazip() target_openssl() +add_tracy() add_crashpad() target_breakpad() diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 92ac16c68bd..72f1f116a39 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -242,6 +242,7 @@ target_bullet() set(OpenGL_GL_PREFERENCE "GLVND") target_opengl() +add_tracy() add_crashpad() target_breakpad() target_json() diff --git a/tools/oven/CMakeLists.txt b/tools/oven/CMakeLists.txt index 3cf954b2139..c7c5f2715e6 100644 --- a/tools/oven/CMakeLists.txt +++ b/tools/oven/CMakeLists.txt @@ -11,6 +11,7 @@ include_hifi_library_headers(script-engine) setup_memory_debugger() setup_thread_debugger() +add_tracy() add_crashpad() target_breakpad()