Don't recalculate the hash

This commit is contained in:
Gwilym Inzani 2023-05-23 21:20:49 +01:00
parent d393ad7e99
commit 903157325f

View file

@ -7,7 +7,7 @@ use crate::{
agb_alloc::{block_allocator::BlockAllocator, bump_allocator::StartEnd}, agb_alloc::{block_allocator::BlockAllocator, bump_allocator::StartEnd},
display::palette16, display::palette16,
dma::dma_copy16, dma::dma_copy16,
hash_map::HashMap, hash_map::{Entry, HashMap},
memory_mapped::MemoryMapped1DArray, memory_mapped::MemoryMapped1DArray,
}; };
@ -291,10 +291,10 @@ impl VRamManager {
pub(crate) fn add_tile(&mut self, tile_set: &TileSet<'_>, tile: u16) -> TileIndex { pub(crate) fn add_tile(&mut self, tile_set: &TileSet<'_>, tile: u16) -> TileIndex {
let reference = self let reference = self
.tile_set_to_vram .tile_set_to_vram
.get(&TileInTileSetReference::new(tile_set, tile)); .entry(TileInTileSetReference::new(tile_set, tile));
if let Some(reference) = reference { if let Entry::Occupied(reference) = reference {
let tile_index = Self::index_from_reference(*reference, tile_set.format); let tile_index = Self::index_from_reference(*reference.get(), tile_set.format);
let key = tile_index.refcount_key(); let key = tile_index.refcount_key();
self.reference_counts[key].increment_reference_count(); self.reference_counts[key].increment_reference_count();
return tile_index; return tile_index;
@ -305,15 +305,13 @@ impl VRamManager {
.unwrap() .unwrap()
.cast(); .cast();
let tile_reference = TileReference(new_reference); let tile_reference = TileReference(new_reference);
reference.or_insert(tile_reference);
self.copy_tile_to_location(tile_set, tile, tile_reference); self.copy_tile_to_location(tile_set, tile, tile_reference);
let index = Self::index_from_reference(tile_reference, tile_set.format); let index = Self::index_from_reference(tile_reference, tile_set.format);
let key = index.refcount_key(); let key = index.refcount_key();
self.tile_set_to_vram
.insert(TileInTileSetReference::new(tile_set, tile), tile_reference);
self.reference_counts self.reference_counts
.resize(self.reference_counts.len().max(key + 1), Default::default()); .resize(self.reference_counts.len().max(key + 1), Default::default());