From d765e78da40b6bd3a731bc7c9b42f5e9046cb533 Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Fri, 30 May 2025 23:27:03 +0200 Subject: [PATCH] Move to tracing with tracy support --- Cargo.lock | 440 +++++++++++++++++++++++++------------ Cargo.toml | 6 +- flake.nix | 2 +- src/core/app/context.rs | 2 +- src/core/app/mod.rs | 42 +++- src/core/render/texture.rs | 13 +- src/core/scene/manager.rs | 2 +- src/main.rs | 20 +- 8 files changed, 369 insertions(+), 158 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 375be30..ffb6291 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,56 +79,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" -[[package]] -name = "anstream" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" - -[[package]] -name = "anstyle-parse" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" -dependencies = [ - "anstyle", - "once_cell", - "windows-sys 0.59.0", -] - [[package]] name = "anyhow" version = "1.0.98" @@ -400,12 +350,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" -[[package]] -name = "colorchoice" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" - [[package]] name = "combine" version = "4.6.7" @@ -652,29 +596,6 @@ dependencies = [ "bytemuck", ] -[[package]] -name = "env_filter" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "jiff", - "log", -] - [[package]] name = "epaint" version = "0.31.1" @@ -797,6 +718,20 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "generator" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" +dependencies = [ + "cc", + "cfg-if", + "libc", + "log", + "rustversion", + "windows", +] + [[package]] name = "gethostname" version = "0.4.3" @@ -1057,12 +992,6 @@ dependencies = [ "syn", ] -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - [[package]] name = "itertools" version = "0.12.1" @@ -1078,30 +1007,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" -[[package]] -name = "jiff" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02000660d30638906021176af16b17498bd0d12813dbfe7b276d8bc7f3c0806" -dependencies = [ - "jiff-static", - "log", - "portable-atomic", - "portable-atomic-util", - "serde", -] - -[[package]] -name = "jiff-static" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c30758ddd7188629c6713fc45d1188af4f44c90582311d0c8d8c9907f60c48" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "jni" version = "0.21.1" @@ -1150,6 +1055,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "lebe" version = "0.5.2" @@ -1221,6 +1132,19 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + [[package]] name = "loop9" version = "0.1.5" @@ -1230,6 +1154,15 @@ dependencies = [ "imgref", ] +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "maybe-rayon" version = "0.1.1" @@ -1329,6 +1262,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -1709,6 +1652,12 @@ dependencies = [ "libredox", ] +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "owned_ttf_parser" version = "0.25.0" @@ -1813,21 +1762,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "portable-atomic" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" - -[[package]] -name = "portable-atomic-util" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" -dependencies = [ - "portable-atomic", -] - [[package]] name = "potential_utf" version = "0.1.2" @@ -2095,8 +2029,17 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -2107,9 +2050,15 @@ checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.5", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.5" @@ -2137,12 +2086,14 @@ version = "0.1.0" dependencies = [ "anyhow", "egui_winit_vulkano", - "env_logger", "glam", "image", - "log", "rand 0.9.1", "thiserror 2.0.12", + "tracing", + "tracing-log", + "tracing-subscriber", + "tracing-tracy", "vulkano", "vulkano-shaders", "vulkano-util", @@ -2270,6 +2221,15 @@ dependencies = [ "roxmltree", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "shlex" version = "1.3.0" @@ -2547,14 +2507,91 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tracing-core" version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tracing-tracy" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eaa1852afa96e0fe9e44caa53dc0bd2d9d05e0f2611ce09f97f8677af56e4ba" +dependencies = [ + "tracing-core", + "tracing-subscriber", + "tracy-client", +] + +[[package]] +name = "tracy-client" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d90a2c01305b02b76fdd89ac8608bae27e173c829a35f7d76a345ab5d33836db" +dependencies = [ + "loom", + "once_cell", + "tracy-client-sys", +] + +[[package]] +name = "tracy-client-sys" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69fff37da548239c3bf9e64a12193d261e8b22b660991c6fd2df057c168f435f" +dependencies = [ + "cc", + "windows-targets 0.52.6", +] [[package]] name = "ttf-parser" @@ -2591,12 +2628,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - [[package]] name = "v_frame" version = "0.3.8" @@ -2608,6 +2639,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + [[package]] name = "version-compare" version = "0.2.0" @@ -2947,6 +2984,22 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + [[package]] name = "winapi-util" version = "0.1.9" @@ -2956,6 +3009,114 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.61.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" +dependencies = [ + "windows-collections", + "windows-core", + "windows-future", + "windows-link", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core", + "windows-link", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core", + "windows-link", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -3029,6 +3190,15 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" diff --git a/Cargo.toml b/Cargo.toml index feb1bca..af26232 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,8 +21,10 @@ image = { version = "0.25", features = ["png", "jpeg"] } glam = { version = "0.30" } # Log and tracing -log = "0.4" -env_logger = "0.11" +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] } +tracing-log = "0.2" +tracing-tracy = "0.11" # Random rand = "0.9" diff --git a/flake.nix b/flake.nix index c5bbd9a..645ade4 100644 --- a/flake.nix +++ b/flake.nix @@ -31,7 +31,7 @@ cargo = rust; }); - buildInputs = with pkgs; [ vulkan-headers vulkan-loader vulkan-validation-layers renderdoc ] + buildInputs = with pkgs; [ vulkan-headers vulkan-loader vulkan-validation-layers renderdoc tracy ] ++ pkgs.lib.optionals pkgs.stdenv.hostPlatform.isLinux (with pkgs; [ stdenv.cc.cc.lib diff --git a/src/core/app/context.rs b/src/core/app/context.rs index 713a56b..cedd65f 100644 --- a/src/core/app/context.rs +++ b/src/core/app/context.rs @@ -91,7 +91,7 @@ impl ApplicationContext { }) .collect(); - log::trace!( + tracing::trace!( "Modes vidéo trouvés pour {:?}: {:?}", monitor.name(), resolutions diff --git a/src/core/app/mod.rs b/src/core/app/mod.rs index 0a1b3de..96fed31 100644 --- a/src/core/app/mod.rs +++ b/src/core/app/mod.rs @@ -129,7 +129,7 @@ impl ApplicationHandler for App { match event { WindowEvent::CloseRequested => { - log::debug!("The close button was pressed; stopping"); + tracing::debug!("The close button was pressed; stopping"); event_loop.exit(); } WindowEvent::Resized(_) | WindowEvent::ScaleFactorChanged { .. } => { @@ -137,7 +137,10 @@ impl ApplicationHandler for App { vulkano_windows.get_renderer_mut(id).unwrap().resize(); } WindowEvent::RedrawRequested => { + let _frame_span = tracing::info_span!("frame").entered(); + { + let _input_span = tracing::debug_span!("input_update").entered(); let mut input_manager = self .input_manager .write() @@ -145,6 +148,7 @@ impl ApplicationHandler for App { input_manager.update(); } { + let _timer_span = tracing::debug_span!("timer_update").entered(); let mut timer = self.timer.write().expect("Failed to lock timer"); timer.update(); } @@ -170,6 +174,7 @@ impl ApplicationHandler for App { // Utiliser le contexte partagé pour les scènes { + let _scene_span = tracing::info_span!("scene_processing").entered(); let mut context = app_context.write().unwrap(); scene_manager @@ -177,18 +182,31 @@ impl ApplicationHandler for App { .unwrap(); if let Some(scene) = scene_manager.current_scene_mut() { - scene.update(&mut context).unwrap(); + { + let _update_span = tracing::debug_span!("scene_update").entered(); + scene.update(&mut context).unwrap(); + } - let acquire_future = context - .with_renderer_mut(|renderer| renderer.acquire(None, |_| {}).unwrap()); + let acquire_future = { + let _acquire_span = tracing::debug_span!("acquire_swapchain").entered(); + context.with_renderer_mut(|renderer| { + renderer.acquire(None, |_| {}).unwrap() + }) + }; - let acquire_future = scene.render(acquire_future, &mut context).unwrap(); + let acquire_future = { + let _render_span = tracing::debug_span!("scene_render").entered(); + scene.render(acquire_future, &mut context).unwrap() + }; - context.with_renderer_mut(|renderer| { - renderer.present(acquire_future, true); - }); + { + let _present_span = tracing::debug_span!("present_frame").entered(); + context.with_renderer_mut(|renderer| { + renderer.present(acquire_future, true); + }); + } } else { - log::warn!("No current scene found for update!"); + tracing::warn!("No current scene found for update!"); } } } @@ -208,7 +226,7 @@ impl ApplicationHandler for App { let vulkano_windows = self.vulkano_windows.read().unwrap(); let window = vulkano_windows.get_window(window_id).unwrap(); if let Err(e) = window.set_cursor_grab(grab) { - log::error!("Failed to set cursor grab: {}", e); + tracing::error!("Failed to set cursor grab: {}", e); } } UserEvent::CursorVisible(window_id, visible) => { @@ -227,7 +245,7 @@ impl ApplicationHandler for App { let _ = window.request_inner_size(winit::dpi::LogicalSize::new(width, height)); let renderer = vulkano_windows.get_renderer_mut(window_id).unwrap(); renderer.resize(); - log::info!( + tracing::info!( "Resolution changed to {}x{} for window {:?}", width, height, @@ -235,7 +253,7 @@ impl ApplicationHandler for App { ); } UserEvent::Exit(window_id) => { - log::info!("Exit requested for window {:?}", window_id); + tracing::info!("Exit requested for window {:?}", window_id); event_loop.exit(); } } diff --git a/src/core/render/texture.rs b/src/core/render/texture.rs index b8270da..8b7f63c 100644 --- a/src/core/render/texture.rs +++ b/src/core/render/texture.rs @@ -31,8 +31,10 @@ impl Texture { builder: &mut AutoCommandBufferBuilder, path: &str, ) -> Result { - let image = image::open(path)?; - Self::from_dynamic_image(device, memory_allocator, builder, image) + let _span = tracing::info_span!("texture_load_from_file", path = path); + + let bytes = std::fs::read(path)?; + Self::from_bytes(device, memory_allocator, builder, &bytes) } pub fn from_bytes( @@ -51,8 +53,11 @@ impl Texture { builder: &mut AutoCommandBufferBuilder, image: DynamicImage, ) -> Result { + let _span = tracing::info_span!("texture_from_dynamic_image"); + let image_data = image.to_rgba8(); let image_dimensions = image_data.dimensions(); + let image_data = image_data.into_raw(); let upload_buffer = Buffer::new_slice( memory_allocator.clone(), @@ -70,7 +75,7 @@ impl Texture { { let buffer_data = &mut *upload_buffer.write()?; - buffer_data.copy_from_slice(image_data.as_raw()); + buffer_data.copy_from_slice(&image_data); } let image = Image::new( @@ -103,7 +108,7 @@ impl Texture { let image_view = ImageView::new_default(image)?; - log::trace!("Texture loaded with dimensions {:?}", image_dimensions); + tracing::trace!("Texture loaded with dimensions {:?}", image_dimensions); Ok(Self::new(image_view, sampler)) } diff --git a/src/core/scene/manager.rs b/src/core/scene/manager.rs index a12892e..f8e5b0f 100644 --- a/src/core/scene/manager.rs +++ b/src/core/scene/manager.rs @@ -58,7 +58,7 @@ impl SceneManager { scene.load(app_context)?; } } else { - log::warn!("No scene found in SceneManager!"); + tracing::warn!("No scene found in SceneManager!"); } Ok(()) } diff --git a/src/main.rs b/src/main.rs index 1ea49c3..998f725 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,7 +13,23 @@ mod core; mod game; fn main() { - env_logger::init(); + use tracing_subscriber::layer::SubscriberExt; + use tracing_subscriber::util::SubscriberInitExt; + + tracing_subscriber::registry() + .with( + tracing_subscriber::fmt::layer() + .with_target(true) + .with_thread_ids(true) + .with_file(true) + .with_line_number(true), + ) + .with(tracing_tracy::TracyLayer::default()) + .with( + tracing_subscriber::EnvFilter::try_from_default_env() + .unwrap_or_else(|_| tracing_subscriber::EnvFilter::new("info")), + ) + .init(); let input_manager = InputManager::new(HashMap::from([ ( @@ -86,7 +102,7 @@ fn main() { match event_loop.run_app(&mut app) { Ok(_) => {} Err(e) => { - log::error!("Error running old app: {e}"); + tracing::error!("Error running old app: {e}"); } } }