waiting.....

This commit is contained in:
Janis 2025-01-06 04:09:51 +01:00
parent 131887b633
commit efd73fce43

View file

@ -584,8 +584,10 @@ impl RenderGraph {
}
}
let pass_count = self.pass_descs.len() as u32;
// build graph from references.
{
let mut dag = {
let mut edges = Vec::new();
intervals.iter().for_each(|(&rid, &(from, to))| {
@ -618,12 +620,9 @@ impl RenderGraph {
// pass, read, write
let mut current_pass = (from, Access::empty(), Access::empty());
let max_i = self.pass_descs.len() as u32;
eprintln!("{rid:?}:");
for pass in
PassNode::range_full(from, to, max_i).map(|i| PassNode::from_u32(i, max_i))
for pass in PassNode::range_full(from, to, pass_count)
.map(|i| PassNode::from_u32(i, pass_count))
{
eprintln!("{pass:?}:");
let mut range = references.range(
GraphRef {
pass,
@ -637,9 +636,6 @@ impl RenderGraph {
);
while let Some(a) = range.next() {
eprintln!("{a:?}");
eprintln!("made_visible: {made_visible:?}");
eprintln!("to_make_available: {to_make_available:?}");
if a.pass != current_pass.0 {
if current_pass.1 != Access::empty() {
last_read = Some(PreviousRef::Read(current_pass.0, current_pass.1));
@ -841,11 +837,11 @@ impl RenderGraph {
});
let mut dag = petgraph::graph::DiGraph::new();
dag.add_node(PassNode::First);
let root = dag.add_node(PassNode::First);
let output = dag.add_node(PassNode::Last);
for i in 0..self.pass_descs.len() {
dag.add_node(PassNode::Pass(i));
}
dag.add_node(PassNode::Last);
for ((from, to), weight) in edges {
dag.add_edge(
@ -855,6 +851,19 @@ impl RenderGraph {
);
}
loop {
let sinks = dag
.externals(petgraph::Direction::Outgoing)
.filter(|idx| dag.node_weight(*idx) != Some(&PassNode::Last))
.collect::<Vec<_>>();
if sinks.is_empty() {
break;
}
for sink in sinks {
dag.remove_node(sink);
}
}
#[cfg(any(debug_assertions, test))]
std::fs::write(
"render_graph2.dot",
@ -875,7 +884,9 @@ impl RenderGraph {
),
)
.expect("writing render_graph repr");
}
dag
};
let now = std::time::Instant::now();
let mut dag = petgraph::stable_graph::StableDiGraph::new();