mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +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 dom_struct::dom_struct;
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
use webgpu::{WebGPU, WebGPUCommandBuffer};
|
use webgpu::{WebGPU, WebGPUCommandBuffer, WebGPURequest};
|
||||||
|
|
||||||
impl Eq for DomRoot<GPUBuffer> {}
|
impl Eq for DomRoot<GPUBuffer> {}
|
||||||
impl Hash 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 {
|
impl GPUCommandBuffer {
|
||||||
pub fn id(&self) -> WebGPUCommandBuffer {
|
pub fn id(&self) -> WebGPUCommandBuffer {
|
||||||
self.command_buffer
|
self.command_buffer
|
||||||
|
|
|
@ -185,6 +185,7 @@ pub enum WebGPURequest {
|
||||||
},
|
},
|
||||||
DestroyTexture(id::TextureId),
|
DestroyTexture(id::TextureId),
|
||||||
Exit(IpcSender<()>),
|
Exit(IpcSender<()>),
|
||||||
|
FreeCommandBuffer(id::CommandBufferId),
|
||||||
FreeDevice(id::DeviceId),
|
FreeDevice(id::DeviceId),
|
||||||
RenderBundleEncoderFinish {
|
RenderBundleEncoderFinish {
|
||||||
render_bundle_encoder: RenderBundleEncoder,
|
render_bundle_encoder: RenderBundleEncoder,
|
||||||
|
@ -856,6 +857,9 @@ impl<'a> WGPU<'a> {
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
|
WebGPURequest::FreeCommandBuffer(command_buffer_id) => {
|
||||||
|
self.error_command_buffers.remove(&command_buffer_id);
|
||||||
|
},
|
||||||
WebGPURequest::FreeDevice(device_id) => {
|
WebGPURequest::FreeDevice(device_id) => {
|
||||||
let device = WebGPUDevice(device_id);
|
let device = WebGPUDevice(device_id);
|
||||||
let pipeline_id = self.devices.remove(&device).unwrap();
|
let pipeline_id = self.devices.remove(&device).unwrap();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue