optional pass record function for pure layout/transition passes
This commit is contained in:
parent
6274b6e5a8
commit
2cad8adb55
|
@ -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)
|
||||
|
|
|
@ -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<RecordFn>,
|
||||
pub record: Option<Box<RecordFn>>,
|
||||
}
|
||||
|
||||
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<RecordFn> = Box::new(|_| Ok(()));
|
||||
let reads = vec![(target, Access::present())];
|
||||
let writes = vec![(target, Access::present())];
|
||||
rg.add_pass(PassDesc {
|
||||
reads,
|
||||
writes,
|
||||
record,
|
||||
record: None,
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue