1use std::collections::hash_map::{HashMap, Iter as HashMapIter};
2
3use crate::{
4 resource::{Buffer, Image, Resource},
5 Id,
6};
7
8#[derive(Clone, Copy, Debug)]
10pub struct State<R: Resource> {
11 pub access: R::Access,
13
14 pub layout: R::Layout,
16
17 pub stages: rendy_core::hal::pso::PipelineStage,
19
20 pub usage: R::Usage,
22}
23
24pub type BufferState = State<Buffer>;
26
27pub type ImageState = State<Image>;
29
30#[derive(Clone, Debug)]
32pub struct Node {
33 pub id: usize,
35
36 pub family: rendy_core::hal::queue::QueueFamilyId,
38
39 pub dependencies: Vec<usize>,
42
43 pub buffers: HashMap<Id, State<Buffer>>,
45
46 pub images: HashMap<Id, State<Image>>,
48}
49
50impl Node {
51 pub fn family(&self) -> rendy_core::hal::queue::QueueFamilyId {
53 self.family
54 }
55
56 pub fn dependencies(&self) -> &[usize] {
58 &self.dependencies
59 }
60
61 pub fn buffers(&self) -> HashMapIter<'_, Id, State<Buffer>> {
63 self.buffers.iter()
64 }
65
66 pub fn images(&self) -> HashMapIter<'_, Id, State<Image>> {
68 self.images.iter()
69 }
70}