include buffer range when hashing RenderResourceAssignments

This commit is contained in:
Carter Anderson 2020-06-11 11:11:20 -07:00
parent fc4160ea41
commit 8803bcd92e
3 changed files with 23 additions and 3 deletions

View File

@ -13,4 +13,4 @@ bitflags::bitflags! {
const STORAGE = 128;
const INDIRECT = 256;
}
}
}

View File

@ -28,6 +28,27 @@ impl RenderResourceAssignment {
}
}
impl Hash for RenderResourceAssignment {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
match self {
RenderResourceAssignment::Buffer {
resource,
range,
dynamic_index: _, // dynamic_index is not a part of the binding
} => {
resource.hash(state);
range.hash(state);
}
RenderResourceAssignment::Texture(resource) => {
resource.hash(state);
}
RenderResourceAssignment::Sampler(resource) => {
resource.hash(state);
}
}
}
}
#[derive(Eq, PartialEq, Debug)]
pub enum RenderResourceSetStatus {
Changed(RenderResourceSetId),

View File

@ -46,8 +46,7 @@ impl RenderResourceSetBuilder {
self.dynamic_uniform_indices.push(dynamic_index);
}
let resource = assignment.get_resource();
resource.hash(&mut self.hasher);
assignment.hash(&mut self.hasher);
self.indexed_assignments
.push(IndexedRenderResourceAssignment { index, assignment });
self