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", "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]] [[package]]
name = "generic-array" name = "generic-array"
version = "0.14.6" version = "0.14.6"
@ -2365,6 +2378,19 @@ dependencies = [
"cfg-if 1.0.0", "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]] [[package]]
name = "lyon" name = "lyon"
version = "1.0.1" version = "1.0.1"
@ -3470,6 +3496,7 @@ dependencies = [
"ruffle_video_software", "ruffle_video_software",
"tracing", "tracing",
"tracing-subscriber", "tracing-subscriber",
"tracing-tracy",
"url", "url",
"webbrowser", "webbrowser",
"winapi", "winapi",
@ -4476,6 +4503,17 @@ dependencies = [
"tracing-log", "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]] [[package]]
name = "tracing-wasm" name = "tracing-wasm"
version = "0.2.1" version = "0.2.1"
@ -4487,6 +4525,26 @@ dependencies = [
"wasm-bindgen", "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]] [[package]]
name = "transpose" name = "transpose"
version = "0.2.2" version = "0.2.2"
@ -4979,6 +5037,19 @@ dependencies = [
"windows_x86_64_msvc 0.37.0", "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]] [[package]]
name = "windows" name = "windows"
version = "0.43.0" version = "0.43.0"
@ -5040,6 +5111,12 @@ version = "0.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a"
[[package]]
name = "windows_aarch64_msvc"
version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2"
[[package]] [[package]]
name = "windows_aarch64_msvc" name = "windows_aarch64_msvc"
version = "0.42.0" version = "0.42.0"
@ -5058,6 +5135,12 @@ version = "0.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1"
[[package]]
name = "windows_i686_gnu"
version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b"
[[package]] [[package]]
name = "windows_i686_gnu" name = "windows_i686_gnu"
version = "0.42.0" version = "0.42.0"
@ -5076,6 +5159,12 @@ version = "0.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c"
[[package]]
name = "windows_i686_msvc"
version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106"
[[package]] [[package]]
name = "windows_i686_msvc" name = "windows_i686_msvc"
version = "0.42.0" version = "0.42.0"
@ -5094,6 +5183,12 @@ version = "0.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" 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]] [[package]]
name = "windows_x86_64_gnu" name = "windows_x86_64_gnu"
version = "0.42.0" version = "0.42.0"
@ -5118,6 +5213,12 @@ version = "0.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" 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]] [[package]]
name = "windows_x86_64_msvc" name = "windows_x86_64_msvc"
version = "0.42.0" version = "0.42.0"

View File

@ -25,6 +25,7 @@ isahc = "1.7.2"
rfd = "0.10.0" rfd = "0.10.0"
anyhow = "1.0" anyhow = "1.0"
bytemuck = "1.12.3" bytemuck = "1.12.3"
tracing-tracy = { version = "0.10.1", optional = true }
[target.'cfg(windows)'.dependencies] [target.'cfg(windows)'.dependencies]
winapi = "0.3.9" winapi = "0.3.9"
@ -39,6 +40,7 @@ default = ["software_video"]
avm_debug = ["ruffle_core/avm_debug"] avm_debug = ["ruffle_core/avm_debug"]
lzma = ["ruffle_core/lzma"] lzma = ["ruffle_core/lzma"]
software_video = ["ruffle_video_software"] software_video = ["ruffle_video_software"]
tracy = ["tracing-tracy"]
# wgpu features # wgpu features
render_debug_labels = ["ruffle_render_wgpu/render_debug_labels"] render_debug_labels = ["ruffle_render_wgpu/render_debug_labels"]

View File

@ -44,6 +44,11 @@ thread_local! {
static CALLSTACK: RefCell<Option<StaticCallstack>> = RefCell::default(); 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)] #[derive(Parser, Debug)]
#[clap( #[clap(
name = "Ruffle", name = "Ruffle",
@ -385,6 +390,10 @@ impl App {
// Don't render when minimized to avoid potential swap chain errors in `wgpu`. // Don't render when minimized to avoid potential swap chain errors in `wgpu`.
if !minimized { if !minimized {
self.player.lock().unwrap().render(); 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(); 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() { fn panic_hook() {