Write textures in separate thread; fixes perf

This commit is contained in:
2024-11-11 19:27:23 -05:00
parent f22a74b036
commit d306f19297
5 changed files with 167 additions and 75 deletions
+5 -12
View File
@@ -1,4 +1,4 @@
use std::{sync::Arc, time::Instant};
use std::time::Instant;
use wgpu::util::DeviceExt as _;
use winit::{
dpi::LogicalSize,
@@ -9,7 +9,7 @@ use winit::{
use crate::{
emulator::{EmulatorClient, EmulatorCommand, SimId},
renderer::GameRenderer,
graphics::TextureSink,
};
use super::{
@@ -46,15 +46,8 @@ impl GameWindow {
.build();
let device = &window.device;
let eyes = Arc::new(GameRenderer::create_texture(device, "eye"));
client.send_command(EmulatorCommand::SetRenderer(
sim_id,
GameRenderer {
queue: window.queue.clone(),
eyes: eyes.clone(),
},
));
let eyes = eyes.create_view(&wgpu::TextureViewDescriptor::default());
let (sink, texture_view) = TextureSink::new(device, window.queue.clone());
client.send_command(EmulatorCommand::SetRenderer(sim_id, sink));
let sampler = device.create_sampler(&wgpu::SamplerDescriptor::default());
let colors = Colors {
left: [1.0, 0.0, 0.0, 1.0],
@@ -103,7 +96,7 @@ impl GameWindow {
entries: &[
wgpu::BindGroupEntry {
binding: 0,
resource: wgpu::BindingResource::TextureView(&eyes),
resource: wgpu::BindingResource::TextureView(&texture_view),
},
wgpu::BindGroupEntry {
binding: 1,