From 2cad8adb55237060d6076e53858c43e7dd9fe8e5 Mon Sep 17 00:00:00 2001 From: Janis Date: Thu, 9 Jan 2025 20:48:33 +0100 Subject: [PATCH] optional pass record function for pure layout/transition passes --- crates/renderer/src/egui.rs | 4 ++-- crates/renderer/src/render_graph.rs | 21 ++++++++------------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/crates/renderer/src/egui.rs b/crates/renderer/src/egui.rs index 2efb061..34e425b 100644 --- a/crates/renderer/src/egui.rs +++ b/crates/renderer/src/egui.rs @@ -380,7 +380,7 @@ pub fn egui_pre_pass( ) }) .collect(), - record, + record: Some(record), }); Ok(()) } @@ -730,7 +730,7 @@ pub fn egui_pass( rg.add_pass(PassDesc { reads, writes, - record, + record: Some(record), }); Ok(to_remove_tex_ids) diff --git a/crates/renderer/src/render_graph.rs b/crates/renderer/src/render_graph.rs index a3d876a..afd430a 100644 --- a/crates/renderer/src/render_graph.rs +++ b/crates/renderer/src/render_graph.rs @@ -313,7 +313,7 @@ pub struct PassDesc { // this pass performs `Access` write on `GraphResourceId`. // some `GraphResourceId` may occur multiple times. pub writes: Vec<(GraphResourceId, Access)>, - pub record: Box, + pub record: Option>, } impl Default for PassDesc { @@ -321,7 +321,7 @@ impl Default for PassDesc { Self { reads: Default::default(), writes: Default::default(), - record: Box::new(|_| Ok(())), + record: None, } } } @@ -461,13 +461,12 @@ impl RenderGraph { } } - let now = std::time::Instant::now(); let pool = commands::SingleUseCommandPool::new(device.clone(), device.graphics_queue().clone())?; let resources = &self.resources; let cmds = topo - .into_iter() + .iter() .rev() .map(|(passes, accesses)| { let passes = passes @@ -497,7 +496,9 @@ impl RenderGraph { }; for pass in passes { - (pass.record)(&ctx)?; + if let Some(record) = pass.record { + (record)(&ctx)?; + } } ctx.cmd.end()?; @@ -508,11 +509,6 @@ impl RenderGraph { let cmd_list = commands::CommandList(cmds); - tracing::debug!( - "recording render graph: {}ms", - now.elapsed().as_micros() as f32 / 1e3 - ); - Ok(WithLifetime::new(cmd_list)) } @@ -1306,17 +1302,16 @@ pub fn clear_pass(rg: &mut RenderGraph, color: Rgba, target: GraphResourceId) { rg.add_pass(PassDesc { reads, writes, - record, + record: Some(record), }); } pub fn present_pass(rg: &mut RenderGraph, target: GraphResourceId) { - let record: Box = Box::new(|_| Ok(())); let reads = vec![(target, Access::present())]; let writes = vec![(target, Access::present())]; rg.add_pass(PassDesc { reads, writes, - record, + record: None, }); }