aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webgpu/gpudevice.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/webgpu/gpudevice.rs')
-rw-r--r--components/script/dom/webgpu/gpudevice.rs38
1 files changed, 23 insertions, 15 deletions
diff --git a/components/script/dom/webgpu/gpudevice.rs b/components/script/dom/webgpu/gpudevice.rs
index 0c5cffb0e7d..2279795f05e 100644
--- a/components/script/dom/webgpu/gpudevice.rs
+++ b/components/script/dom/webgpu/gpudevice.rs
@@ -373,7 +373,7 @@ impl GPUDevice {
let lost_promise = &(*self.lost_promise.borrow());
let global = &self.global();
let lost = GPUDeviceLostInfo::new(global, msg.into(), reason, can_gc);
- lost_promise.resolve_native(&*lost);
+ lost_promise.resolve_native(&*lost, can_gc);
}
}
@@ -585,21 +585,26 @@ impl AsyncWGPUListener for GPUDevice {
fn handle_response(&self, response: WebGPUResponse, promise: &Rc<Promise>, can_gc: CanGc) {
match response {
WebGPUResponse::PoppedErrorScope(result) => match result {
- Ok(None) | Err(PopError::Lost) => promise.resolve_native(&None::<Option<GPUError>>),
+ Ok(None) | Err(PopError::Lost) => {
+ promise.resolve_native(&None::<Option<GPUError>>, can_gc)
+ },
Err(PopError::Empty) => promise.reject_error(Error::Operation),
Ok(Some(error)) => {
let error = GPUError::from_error(&self.global(), error, can_gc);
- promise.resolve_native(&error);
+ promise.resolve_native(&error, can_gc);
},
},
WebGPUResponse::ComputePipeline(result) => match result {
- Ok(pipeline) => promise.resolve_native(&GPUComputePipeline::new(
- &self.global(),
- WebGPUComputePipeline(pipeline.id),
- pipeline.label.into(),
- self,
+ Ok(pipeline) => promise.resolve_native(
+ &GPUComputePipeline::new(
+ &self.global(),
+ WebGPUComputePipeline(pipeline.id),
+ pipeline.label.into(),
+ self,
+ can_gc,
+ ),
can_gc,
- )),
+ ),
Err(webgpu::Error::Validation(msg)) => {
promise.reject_native(&GPUPipelineError::new(
&self.global(),
@@ -617,13 +622,16 @@ impl AsyncWGPUListener for GPUDevice {
)),
},
WebGPUResponse::RenderPipeline(result) => match result {
- Ok(pipeline) => promise.resolve_native(&GPURenderPipeline::new(
- &self.global(),
- WebGPURenderPipeline(pipeline.id),
- pipeline.label.into(),
- self,
+ Ok(pipeline) => promise.resolve_native(
+ &GPURenderPipeline::new(
+ &self.global(),
+ WebGPURenderPipeline(pipeline.id),
+ pipeline.label.into(),
+ self,
+ can_gc,
+ ),
can_gc,
- )),
+ ),
Err(webgpu::Error::Validation(msg)) => {
promise.reject_native(&GPUPipelineError::new(
&self.global(),