mirror of
https://github.com/emilk/egui.git
synced 2026-09-02 06:40:06 -04:00
make sure to free textures after queue submit on web painter
This commit is contained in:
@@ -279,13 +279,6 @@ impl WebPainter for WebPainterWgpu {
|
|||||||
Some((output_frame, capture_buffer))
|
Some((output_frame, capture_buffer))
|
||||||
};
|
};
|
||||||
|
|
||||||
{
|
|
||||||
let mut renderer = render_state.renderer.write();
|
|
||||||
for id in &textures_delta.free {
|
|
||||||
renderer.free_texture(id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Submit the commands: both the main buffer and user-defined ones.
|
// Submit the commands: both the main buffer and user-defined ones.
|
||||||
render_state
|
render_state
|
||||||
.queue
|
.queue
|
||||||
@@ -307,6 +300,16 @@ impl WebPainter for WebPainterWgpu {
|
|||||||
frame.present();
|
frame.present();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Free textures marked for destruction **after** queue submit since they might still be used in the current frame.
|
||||||
|
// Calling `wgpu::Texture::destroy` on a texture that is still in use would invalidate the command buffer(s) it is used in.
|
||||||
|
// However, once we called `wgpu::Queue::submit`, it is up for wgpu to determine how long the underlying gpu resource has to live.
|
||||||
|
{
|
||||||
|
let mut renderer = render_state.renderer.write();
|
||||||
|
for id in &textures_delta.free {
|
||||||
|
renderer.free_texture(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user