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(),
|
.collect(),
|
||||||
record,
|
record: Some(record),
|
||||||
});
|
});
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -730,7 +730,7 @@ pub fn egui_pass(
|
||||||
rg.add_pass(PassDesc {
|
rg.add_pass(PassDesc {
|
||||||
reads,
|
reads,
|
||||||
writes,
|
writes,
|
||||||
record,
|
record: Some(record),
|
||||||
});
|
});
|
||||||
|
|
||||||
Ok(to_remove_tex_ids)
|
Ok(to_remove_tex_ids)
|
||||||
|
|
|
@ -313,7 +313,7 @@ pub struct PassDesc {
|
||||||
// this pass performs `Access` write on `GraphResourceId`.
|
// this pass performs `Access` write on `GraphResourceId`.
|
||||||
// some `GraphResourceId` may occur multiple times.
|
// some `GraphResourceId` may occur multiple times.
|
||||||
pub writes: Vec<(GraphResourceId, Access)>,
|
pub writes: Vec<(GraphResourceId, Access)>,
|
||||||
pub record: Box<RecordFn>,
|
pub record: Option<Box<RecordFn>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for PassDesc {
|
impl Default for PassDesc {
|
||||||
|
@ -321,7 +321,7 @@ impl Default for PassDesc {
|
||||||
Self {
|
Self {
|
||||||
reads: Default::default(),
|
reads: Default::default(),
|
||||||
writes: 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 =
|
let pool =
|
||||||
commands::SingleUseCommandPool::new(device.clone(), device.graphics_queue().clone())?;
|
commands::SingleUseCommandPool::new(device.clone(), device.graphics_queue().clone())?;
|
||||||
|
|
||||||
let resources = &self.resources;
|
let resources = &self.resources;
|
||||||
let cmds = topo
|
let cmds = topo
|
||||||
.into_iter()
|
.iter()
|
||||||
.rev()
|
.rev()
|
||||||
.map(|(passes, accesses)| {
|
.map(|(passes, accesses)| {
|
||||||
let passes = passes
|
let passes = passes
|
||||||
|
@ -497,7 +496,9 @@ impl RenderGraph {
|
||||||
};
|
};
|
||||||
|
|
||||||
for pass in passes {
|
for pass in passes {
|
||||||
(pass.record)(&ctx)?;
|
if let Some(record) = pass.record {
|
||||||
|
(record)(&ctx)?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.cmd.end()?;
|
ctx.cmd.end()?;
|
||||||
|
@ -508,11 +509,6 @@ impl RenderGraph {
|
||||||
|
|
||||||
let cmd_list = commands::CommandList(cmds);
|
let cmd_list = commands::CommandList(cmds);
|
||||||
|
|
||||||
tracing::debug!(
|
|
||||||
"recording render graph: {}ms",
|
|
||||||
now.elapsed().as_micros() as f32 / 1e3
|
|
||||||
);
|
|
||||||
|
|
||||||
Ok(WithLifetime::new(cmd_list))
|
Ok(WithLifetime::new(cmd_list))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1306,17 +1302,16 @@ pub fn clear_pass(rg: &mut RenderGraph, color: Rgba, target: GraphResourceId) {
|
||||||
rg.add_pass(PassDesc {
|
rg.add_pass(PassDesc {
|
||||||
reads,
|
reads,
|
||||||
writes,
|
writes,
|
||||||
record,
|
record: Some(record),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn present_pass(rg: &mut RenderGraph, target: GraphResourceId) {
|
pub fn present_pass(rg: &mut RenderGraph, target: GraphResourceId) {
|
||||||
let record: Box<RecordFn> = Box::new(|_| Ok(()));
|
|
||||||
let reads = vec![(target, Access::present())];
|
let reads = vec![(target, Access::present())];
|
||||||
let writes = vec![(target, Access::present())];
|
let writes = vec![(target, Access::present())];
|
||||||
rg.add_pass(PassDesc {
|
rg.add_pass(PassDesc {
|
||||||
reads,
|
reads,
|
||||||
writes,
|
writes,
|
||||||
record,
|
record: None,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue