desktop: Add tracy feature

This commit is contained in:
Nathan Adams 2023-01-06 09:23:13 +01:00
parent cbbc789c4e
commit f606735720
3 changed files with 122 additions and 1 deletions

101
Cargo.lock generated
View File

@ -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"

View File

@ -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"]

View File

@ -44,6 +44,11 @@ thread_local! {
static CALLSTACK: RefCell<Option<StaticCallstack>> = RefCell::default();
}
#[cfg(feature = "tracy")]
#[global_allocator]
static GLOBAL: tracing_tracy::client::ProfiledAllocator<std::alloc::System> =
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() {