From f60673572035e37d3c1486a210c131879336c645 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Fri, 6 Jan 2023 09:23:13 +0100 Subject: [PATCH] desktop: Add tracy feature --- Cargo.lock | 101 ++++++++++++++++++++++++++++++++++++++++++++ desktop/Cargo.toml | 2 + desktop/src/main.rs | 20 ++++++++- 3 files changed, 122 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index ff4ce4ad2..ee3ed003d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1725,6 +1725,19 @@ dependencies = [ "cfg-if 0.1.10", ] +[[package]] +name = "generator" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d266041a359dfa931b370ef684cceb84b166beb14f7f0421f4a6a3d0c446d12e" +dependencies = [ + "cc", + "libc", + "log", + "rustversion", + "windows 0.39.0", +] + [[package]] name = "generic-array" version = "0.14.6" @@ -2365,6 +2378,19 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "loom" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" +dependencies = [ + "cfg-if 1.0.0", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + [[package]] name = "lyon" version = "1.0.1" @@ -3470,6 +3496,7 @@ dependencies = [ "ruffle_video_software", "tracing", "tracing-subscriber", + "tracing-tracy", "url", "webbrowser", "winapi", @@ -4476,6 +4503,17 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "tracing-tracy" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74513033e242c0109c2ba9cb6d94117a53dbd6511eb135f5512143136eeba311" +dependencies = [ + "tracing-core", + "tracing-subscriber", + "tracy-client", +] + [[package]] name = "tracing-wasm" version = "0.2.1" @@ -4487,6 +4525,26 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "tracy-client" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c615e58172e788a208faee61b74988cd9c4778bc782384bed540b3fa4e5d4436" +dependencies = [ + "loom", + "once_cell", + "tracy-client-sys", +] + +[[package]] +name = "tracy-client-sys" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcbdba03a3cfc5f757469fd5b6d795fc461484c97e47e94b0fc7db93261d9c5" +dependencies = [ + "cc", +] + [[package]] name = "transpose" version = "0.2.2" @@ -4979,6 +5037,19 @@ dependencies = [ "windows_x86_64_msvc 0.37.0", ] +[[package]] +name = "windows" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" +dependencies = [ + "windows_aarch64_msvc 0.39.0", + "windows_i686_gnu 0.39.0", + "windows_i686_msvc 0.39.0", + "windows_x86_64_gnu 0.39.0", + "windows_x86_64_msvc 0.39.0", +] + [[package]] name = "windows" version = "0.43.0" @@ -5040,6 +5111,12 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" +[[package]] +name = "windows_aarch64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" + [[package]] name = "windows_aarch64_msvc" version = "0.42.0" @@ -5058,6 +5135,12 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" +[[package]] +name = "windows_i686_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" + [[package]] name = "windows_i686_gnu" version = "0.42.0" @@ -5076,6 +5159,12 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" +[[package]] +name = "windows_i686_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" + [[package]] name = "windows_i686_msvc" version = "0.42.0" @@ -5094,6 +5183,12 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" +[[package]] +name = "windows_x86_64_gnu" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" + [[package]] name = "windows_x86_64_gnu" version = "0.42.0" @@ -5118,6 +5213,12 @@ version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" +[[package]] +name = "windows_x86_64_msvc" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" + [[package]] name = "windows_x86_64_msvc" version = "0.42.0" diff --git a/desktop/Cargo.toml b/desktop/Cargo.toml index f2169c746..0f07a872d 100644 --- a/desktop/Cargo.toml +++ b/desktop/Cargo.toml @@ -25,6 +25,7 @@ isahc = "1.7.2" rfd = "0.10.0" anyhow = "1.0" bytemuck = "1.12.3" +tracing-tracy = { version = "0.10.1", optional = true } [target.'cfg(windows)'.dependencies] winapi = "0.3.9" @@ -39,6 +40,7 @@ default = ["software_video"] avm_debug = ["ruffle_core/avm_debug"] lzma = ["ruffle_core/lzma"] software_video = ["ruffle_video_software"] +tracy = ["tracing-tracy"] # wgpu features render_debug_labels = ["ruffle_render_wgpu/render_debug_labels"] diff --git a/desktop/src/main.rs b/desktop/src/main.rs index f4d77f212..ec0970a5c 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -44,6 +44,11 @@ thread_local! { static CALLSTACK: RefCell> = RefCell::default(); } +#[cfg(feature = "tracy")] +#[global_allocator] +static GLOBAL: tracing_tracy::client::ProfiledAllocator = + tracing_tracy::client::ProfiledAllocator::new(std::alloc::System, 100); + #[derive(Parser, Debug)] #[clap( name = "Ruffle", @@ -385,6 +390,10 @@ impl App { // Don't render when minimized to avoid potential swap chain errors in `wgpu`. if !minimized { self.player.lock().unwrap().render(); + #[cfg(feature = "tracy")] + tracing_tracy::client::Client::running() + .expect("tracy client must be running") + .frame_mark(); } } @@ -840,7 +849,16 @@ fn init() { panic_hook(); })); - tracing_subscriber::fmt::init(); + let subscriber = tracing_subscriber::fmt::Subscriber::builder() + .with_env_filter(tracing_subscriber::EnvFilter::from_default_env()) + .finish(); + #[cfg(feature = "tracy")] + let subscriber = { + use tracing_subscriber::layer::SubscriberExt; + let tracy_subscriber = tracing_tracy::TracyLayer::new(); + subscriber.with(tracy_subscriber) + }; + tracing::subscriber::set_global_default(subscriber).expect("Couldn't set up global subscriber"); } fn panic_hook() {