wgpu: Revert using same pool for whole frame - breaks bitmapdata.draw and I'm not sure why yet

This commit is contained in:
Nathan Adams 2022-12-23 03:42:38 +01:00
parent 0f676fc6ce
commit 257bbc8ec9
2 changed files with 2 additions and 10 deletions

View File

@ -1,4 +1,3 @@
use crate::buffer_pool::TexturePool;
use crate::context3d::WgpuContext3D; use crate::context3d::WgpuContext3D;
use crate::mesh::{Draw, Mesh}; use crate::mesh::{Draw, Mesh};
use crate::surface::Surface; use crate::surface::Surface;
@ -34,8 +33,6 @@ pub struct WgpuRenderBackend<T: RenderTarget> {
// This is currently unused - we just store it to report in // This is currently unused - we just store it to report in
// `get_viewport_dimensions` // `get_viewport_dimensions`
viewport_scale_factor: f64, viewport_scale_factor: f64,
// Texture pool to use for a frame - should be reset at the end of each frame
frame_texture_pool: TexturePool,
preferred_sample_count: u32, preferred_sample_count: u32,
} }
@ -157,7 +154,6 @@ impl<T: RenderTarget> WgpuRenderBackend<T> {
meshes: Vec::new(), meshes: Vec::new(),
shape_tessellator: ShapeTessellator::new(), shape_tessellator: ShapeTessellator::new(),
viewport_scale_factor: 1.0, viewport_scale_factor: 1.0,
frame_texture_pool: TexturePool::new(),
preferred_sample_count, preferred_sample_count,
}) })
} }
@ -370,7 +366,6 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
&mut self.uniform_buffers_storage, &mut self.uniform_buffers_storage,
&self.meshes, &self.meshes,
commands, commands,
&mut self.frame_texture_pool,
); );
self.target.submit( self.target.submit(
@ -379,7 +374,6 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
command_buffers, command_buffers,
frame_output, frame_output,
); );
self.frame_texture_pool = TexturePool::new();
} }
fn register_bitmap(&mut self, bitmap: Bitmap) -> Result<BitmapHandle, BitmapError> { fn register_bitmap(&mut self, bitmap: Bitmap) -> Result<BitmapHandle, BitmapError> {
@ -544,7 +538,6 @@ impl<T: RenderTarget + 'static> RenderBackend for WgpuRenderBackend<T> {
&mut self.uniform_buffers_storage, &mut self.uniform_buffers_storage,
&self.meshes, &self.meshes,
commands, commands,
&mut self.frame_texture_pool,
); );
let index = target.submit( let index = target.submit(
&self.descriptors.device, &self.descriptors.device,

View File

@ -181,7 +181,6 @@ impl Surface {
} }
} }
#[allow(clippy::too_many_arguments)]
pub fn draw_commands_to( pub fn draw_commands_to(
&mut self, &mut self,
frame_view: &wgpu::TextureView, frame_view: &wgpu::TextureView,
@ -190,7 +189,6 @@ impl Surface {
uniform_buffers_storage: &mut BufferStorage<Transforms>, uniform_buffers_storage: &mut BufferStorage<Transforms>,
meshes: &Vec<Mesh>, meshes: &Vec<Mesh>,
commands: CommandList, commands: CommandList,
texture_pool: &mut TexturePool,
) -> Vec<wgpu::CommandBuffer> { ) -> Vec<wgpu::CommandBuffer> {
uniform_buffers_storage.recall(); uniform_buffers_storage.recall();
let uniform_encoder_label = create_debug_label!("Uniform upload command encoder"); let uniform_encoder_label = create_debug_label!("Uniform upload command encoder");
@ -209,6 +207,7 @@ impl Surface {
label: label.as_deref(), label: label.as_deref(),
}); });
let mut texture_pool = TexturePool::new();
let target = self.draw_commands( let target = self.draw_commands(
clear_color, clear_color,
descriptors, descriptors,
@ -218,7 +217,7 @@ impl Surface {
&mut uniform_encoder, &mut uniform_encoder,
&mut draw_encoder, &mut draw_encoder,
None, None,
texture_pool, &mut texture_pool,
); );
let mut buffers = vec![draw_encoder.finish()]; let mut buffers = vec![draw_encoder.finish()];