Write textures in separate thread; fixes perf
This commit is contained in:
+5
-12
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user