From e5ca3351153fa6f3d1e3b00806f85058a8182065 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sat, 2 Nov 2024 10:05:28 +0300 Subject: Add Tracy allocation profiling feature flag --- Cargo.toml | 2 ++ src/main.rs | 5 +++++ wiki/Developing-niri.md | 2 ++ 3 files changed, 9 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 20beb637..8d98b5a3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -124,6 +124,8 @@ xdp-gnome-screencast = ["dbus", "pipewire"] profile-with-tracy = ["profiling/profile-with-tracy", "tracy-client/default"] # Enables the on-demand Tracy profiler instrumentation. profile-with-tracy-ondemand = ["profile-with-tracy", "tracy-client/ondemand", "tracy-client/manual-lifetime"] +# Enables Tracy allocation profiling. +profile-with-tracy-allocations = ["profile-with-tracy"] # Enables dinit integration (global environment). dinit = [] diff --git a/src/main.rs b/src/main.rs index d0de54a8..1d4ed56f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -33,6 +33,11 @@ use tracing_subscriber::EnvFilter; const DEFAULT_LOG_FILTER: &str = "niri=debug,smithay::backend::renderer::gles=error"; +#[cfg(feature = "profile-with-tracy-allocations")] +#[global_allocator] +static GLOBAL: tracy_client::ProfiledAllocator = + tracy_client::ProfiledAllocator::new(std::alloc::System, 100); + fn main() -> Result<(), Box> { // Set backtrace defaults if not set. if env::var_os("RUST_BACKTRACE").is_none() { diff --git a/wiki/Developing-niri.md b/wiki/Developing-niri.md index 47cbb143..96a9344a 100644 --- a/wiki/Developing-niri.md +++ b/wiki/Developing-niri.md @@ -72,3 +72,5 @@ pub fn some_function() { // Code of the function. } ``` + +You can also enable Rust memory allocation profiling with `--features=profile-with-tracy-allocations`. -- cgit