From c904f2bfaa43b382ecd436edca2ef08d2536dd25 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Tue, 3 Aug 2021 08:29:17 +0200 Subject: [PATCH] pathfinder: Use trace for canvas_text with 2 frames The existing trace had only one frame, in which the rendering was together with the setup (shaders, etc). This caused for continuous growing of resources when looping over the last frame when tracking performance, as resources were created but not released. By rendering twice, we have a first frame with setup+rendering, and a second one that just renders. This frame is more amenable for using for performance tracking. To take this frame, the application had to be modified with the patch in this commit (0001-canvas-text-Render-twice.patch). Signed-off-by: Tomeu Vizoso Part-of: --- .../0001-canvas-text-Render-twice.patch | 38 +++++++++++++++++++ pathfinder/canvas_text_v2.trace | 3 ++ 2 files changed, 41 insertions(+) create mode 100644 pathfinder/0001-canvas-text-Render-twice.patch create mode 100644 pathfinder/canvas_text_v2.trace diff --git a/pathfinder/0001-canvas-text-Render-twice.patch b/pathfinder/0001-canvas-text-Render-twice.patch new file mode 100644 index 0000000..f9d4a3a --- /dev/null +++ b/pathfinder/0001-canvas-text-Render-twice.patch @@ -0,0 +1,38 @@ +From 7149bf418102cda0748988163dfdfd97ef9b255a Mon Sep 17 00:00:00 2001 +From: Tomeu Vizoso +Date: Tue, 3 Aug 2021 08:05:55 +0200 +Subject: [PATCH] canvas-text: Render twice + +Because the second frame will have the rendering but not the setup +(shaders, etc). + +This helps with using a trace of this for measuring rendering performance. + +Signed-off-by: Tomeu Vizoso +--- + examples/canvas_text/src/main.rs | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/examples/canvas_text/src/main.rs b/examples/canvas_text/src/main.rs +index 39dd1e91a8c3..c592d7c19795 100644 +--- a/examples/canvas_text/src/main.rs ++++ b/examples/canvas_text/src/main.rs +@@ -70,6 +70,7 @@ fn main() { + match event_pump.wait_event() { + Event::Quit {..} | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => return, + Event::Window { win_event: WindowEvent::Exposed, .. } => { ++ for _n in 0..2 { + // Make a canvas. + let mut canvas = Canvas::new(window_size.to_f32()).get_context_2d(font_context.clone()); + +@@ -86,6 +87,7 @@ fn main() { + RayonExecutor); + scene.build_and_render(&mut renderer, BuildOptions::default()); + window.gl_swap_window(); ++ } + }, + _ => {} + } +-- +2.31.1 + diff --git a/pathfinder/canvas_text_v2.trace b/pathfinder/canvas_text_v2.trace new file mode 100644 index 0000000..fb359f0 --- /dev/null +++ b/pathfinder/canvas_text_v2.trace @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:492b6a5941efee6dc5e3e2ea076c57950c8541a29350a6ca247bde0c50362f1e +size 113213 -- GitLab