From c863227dc2f84a7bd6285963d8377b3772c70322 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 13 Dec 2023 18:44:21 -0700 Subject: [PATCH] Log frame timings --- crates/gpui2/src/platform/mac/metal_renderer.rs | 6 ++++++ crates/gpui2/src/view.rs | 6 ++++++ crates/gpui2/src/window.rs | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/crates/gpui2/src/platform/mac/metal_renderer.rs b/crates/gpui2/src/platform/mac/metal_renderer.rs index c477440df5..3210a53c63 100644 --- a/crates/gpui2/src/platform/mac/metal_renderer.rs +++ b/crates/gpui2/src/platform/mac/metal_renderer.rs @@ -187,6 +187,8 @@ impl MetalRenderer { } pub fn draw(&mut self, scene: &Scene) { + let start = std::time::Instant::now(); + let layer = self.layer.clone(); let viewport_size = layer.drawable_size(); let viewport_size: Size = size( @@ -303,6 +305,10 @@ impl MetalRenderer { command_buffer.commit(); self.sprite_atlas.clear_textures(AtlasTextureKind::Path); + + let duration_since_start = start.elapsed(); + println!("renderer draw: {:?}", duration_since_start); + command_buffer.wait_until_completed(); drawable.present(); } diff --git a/crates/gpui2/src/view.rs b/crates/gpui2/src/view.rs index 280c52df2a..46a9086478 100644 --- a/crates/gpui2/src/view.rs +++ b/crates/gpui2/src/view.rs @@ -209,8 +209,14 @@ impl AnyView { ) { cx.with_absolute_element_offset(origin, |cx| { let (layout_id, rendered_element) = (self.layout)(self, cx); + let start_time = std::time::Instant::now(); cx.compute_layout(layout_id, available_space); + let duration = start_time.elapsed(); + println!("compute layout: {:?}", duration); + let start_time = std::time::Instant::now(); (self.paint)(self, rendered_element, cx); + let duration = start_time.elapsed(); + println!("paint: {:?}", duration); }) } } diff --git a/crates/gpui2/src/window.rs b/crates/gpui2/src/window.rs index d0056617ed..4624bcf20b 100644 --- a/crates/gpui2/src/window.rs +++ b/crates/gpui2/src/window.rs @@ -1334,7 +1334,7 @@ impl<'a> WindowContext<'a> { } self.window.drawing = false; - eprintln!("frame: {:?}", t0.elapsed()); + eprintln!("window draw: {:?}", t0.elapsed()); scene }