Avoid unnecessary computation/cloning in renderer

This commit is contained in:
2025-02-15 18:33:18 -05:00
parent 600148c781
commit a82389224f
3 changed files with 31 additions and 19 deletions
+5 -5
View File
@@ -18,7 +18,7 @@ use super::utils::{parse_palette, CharacterGrid, GENERIC_PALETTE};
pub struct BgMapWindow {
sim_id: SimId,
loader: Option<BgMapLoader>,
loader: Arc<VramTextureLoader<BgMapLoader>>,
bgmaps: MemoryView,
cell_index: usize,
cell_index_str: String,
@@ -31,7 +31,7 @@ impl BgMapWindow {
pub fn new(sim_id: SimId, memory: &mut MemoryMonitor) -> Self {
Self {
sim_id,
loader: Some(BgMapLoader::new(sim_id, memory)),
loader: Arc::new(VramTextureLoader::new(BgMapLoader::new(sim_id, memory))),
bgmaps: memory.view(sim_id, 0x00020000, 0x1d800),
cell_index: 0,
cell_index_str: "0".into(),
@@ -188,11 +188,11 @@ impl AppWindow for BgMapWindow {
}
fn on_init(&mut self, ctx: &Context, _render_state: &egui_wgpu::RenderState) {
let loader = self.loader.take().unwrap();
ctx.add_texture_loader(Arc::new(VramTextureLoader::new(loader)));
ctx.add_texture_loader(self.loader.clone());
}
fn show(&mut self, ctx: &Context) {
self.loader.begin_pass();
CentralPanel::default().show(ctx, |ui| {
ui.horizontal_top(|ui| {
StripBuilder::new(ui)
@@ -219,7 +219,7 @@ fn parse_cell(cell: u16) -> (usize, bool, bool, usize) {
(char_index, vflip, hflip, palette_index)
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Hash)]
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Hash)]
enum BgMapResource {
BgMap { index: usize, generic_palette: bool },
Cell { index: usize, generic_palette: bool },
+5 -5
View File
@@ -77,7 +77,7 @@ impl Display for VramPalette {
pub struct CharacterDataWindow {
sim_id: SimId,
loader: Option<CharDataLoader>,
loader: Arc<VramTextureLoader<CharDataLoader>>,
brightness: MemoryView,
palettes: MemoryView,
palette: VramPalette,
@@ -91,7 +91,7 @@ impl CharacterDataWindow {
pub fn new(sim_id: SimId, memory: &mut MemoryMonitor) -> Self {
Self {
sim_id,
loader: Some(CharDataLoader::new(sim_id, memory)),
loader: Arc::new(VramTextureLoader::new(CharDataLoader::new(sim_id, memory))),
brightness: memory.view(sim_id, 0x0005f824, 8),
palettes: memory.view(sim_id, 0x0005f860, 16),
palette: VramPalette::Generic,
@@ -250,11 +250,11 @@ impl AppWindow for CharacterDataWindow {
}
fn on_init(&mut self, ctx: &Context, _render_state: &egui_wgpu::RenderState) {
let loader = self.loader.take().unwrap();
ctx.add_texture_loader(Arc::new(VramTextureLoader::new(loader)));
ctx.add_texture_loader(self.loader.clone());
}
fn show(&mut self, ctx: &Context) {
self.loader.begin_pass();
CentralPanel::default().show(ctx, |ui| {
ui.horizontal_top(|ui| {
StripBuilder::new(ui)
@@ -273,7 +273,7 @@ impl AppWindow for CharacterDataWindow {
}
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Hash)]
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, Hash)]
enum CharDataResource {
Character { palette: VramPalette, index: usize },
CharacterData { palette: VramPalette },