mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Remove entries from error_command_buffers on drop
This commit is contained in:
parent
33a4bca74d
commit
8ff00f0e9c
2 changed files with 19 additions and 1 deletions
|
@ -13,7 +13,7 @@ use crate::dom::gpubuffer::GPUBuffer;
|
|||
use dom_struct::dom_struct;
|
||||
use std::collections::HashSet;
|
||||
use std::hash::{Hash, Hasher};
|
||||
use webgpu::{WebGPU, WebGPUCommandBuffer};
|
||||
use webgpu::{WebGPU, WebGPUCommandBuffer, WebGPURequest};
|
||||
|
||||
impl Eq for DomRoot<GPUBuffer> {}
|
||||
impl Hash for DomRoot<GPUBuffer> {
|
||||
|
@ -67,6 +67,20 @@ impl GPUCommandBuffer {
|
|||
}
|
||||
}
|
||||
|
||||
impl Drop for GPUCommandBuffer {
|
||||
fn drop(&mut self) {
|
||||
if let Err(e) = self.channel.0.send((
|
||||
None,
|
||||
WebGPURequest::FreeCommandBuffer(self.command_buffer.0),
|
||||
)) {
|
||||
warn!(
|
||||
"Failed to send FreeCommandBuffer({:?}) ({})",
|
||||
self.command_buffer.0, e
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl GPUCommandBuffer {
|
||||
pub fn id(&self) -> WebGPUCommandBuffer {
|
||||
self.command_buffer
|
||||
|
|
|
@ -185,6 +185,7 @@ pub enum WebGPURequest {
|
|||
},
|
||||
DestroyTexture(id::TextureId),
|
||||
Exit(IpcSender<()>),
|
||||
FreeCommandBuffer(id::CommandBufferId),
|
||||
FreeDevice(id::DeviceId),
|
||||
RenderBundleEncoderFinish {
|
||||
render_bundle_encoder: RenderBundleEncoder,
|
||||
|
@ -856,6 +857,9 @@ impl<'a> WGPU<'a> {
|
|||
}
|
||||
return;
|
||||
},
|
||||
WebGPURequest::FreeCommandBuffer(command_buffer_id) => {
|
||||
self.error_command_buffers.remove(&command_buffer_id);
|
||||
},
|
||||
WebGPURequest::FreeDevice(device_id) => {
|
||||
let device = WebGPUDevice(device_id);
|
||||
let pipeline_id = self.devices.remove(&device).unwrap();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue