diff options
Diffstat (limited to 'components/script/dom/webgpu')
-rw-r--r-- | components/script/dom/webgpu/gpu.rs | 4 | ||||
-rw-r--r-- | components/script/dom/webgpu/gpuadapter.rs | 6 | ||||
-rw-r--r-- | components/script/dom/webgpu/gpubuffer.rs | 6 | ||||
-rw-r--r-- | components/script/dom/webgpu/gpudevice.rs | 18 | ||||
-rw-r--r-- | components/script/dom/webgpu/gpuqueue.rs | 4 | ||||
-rw-r--r-- | components/script/dom/webgpu/gpushadermodule.rs | 9 |
6 files changed, 39 insertions, 8 deletions
diff --git a/components/script/dom/webgpu/gpu.rs b/components/script/dom/webgpu/gpu.rs index f02ae386772..20380e07bfb 100644 --- a/components/script/dom/webgpu/gpu.rs +++ b/components/script/dom/webgpu/gpu.rs @@ -56,7 +56,9 @@ impl GPUMethods<crate::DomTypeHolder> for GPU { ) -> Rc<Promise> { let global = &self.global(); let promise = Promise::new_in_current_realm(comp, can_gc); - let sender = route_promise(&promise, self); + let task_source = global.task_manager().dom_manipulation_task_source(); + let sender = route_promise(&promise, self, task_source); + let power_preference = match options.powerPreference { Some(GPUPowerPreference::Low_power) => PowerPreference::LowPower, Some(GPUPowerPreference::High_performance) => PowerPreference::HighPerformance, diff --git a/components/script/dom/webgpu/gpuadapter.rs b/components/script/dom/webgpu/gpuadapter.rs index 16d5dfed4a2..e22eca173ca 100644 --- a/components/script/dom/webgpu/gpuadapter.rs +++ b/components/script/dom/webgpu/gpuadapter.rs @@ -117,7 +117,11 @@ impl GPUAdapterMethods<crate::DomTypeHolder> for GPUAdapter { ) -> Rc<Promise> { // Step 2 let promise = Promise::new_in_current_realm(comp, can_gc); - let sender = route_promise(&promise, self); + let sender = route_promise( + &promise, + self, + self.global().task_manager().dom_manipulation_task_source(), + ); let mut required_features = wgpu_types::Features::empty(); for &ext in descriptor.requiredFeatures.iter() { if let Some(feature) = gpu_to_wgt_feature(ext) { diff --git a/components/script/dom/webgpu/gpubuffer.rs b/components/script/dom/webgpu/gpubuffer.rs index e8d5b8a16dd..0b41d386b4a 100644 --- a/components/script/dom/webgpu/gpubuffer.rs +++ b/components/script/dom/webgpu/gpubuffer.rs @@ -271,7 +271,11 @@ impl GPUBufferMethods<crate::DomTypeHolder> for GPUBuffer { }, }; - let sender = route_promise(&promise, self); + let sender = route_promise( + &promise, + self, + self.global().task_manager().dom_manipulation_task_source(), + ); if let Err(e) = self.channel.0.send(WebGPURequest::BufferMapAsync { sender, buffer_id: self.buffer.0, diff --git a/components/script/dom/webgpu/gpudevice.rs b/components/script/dom/webgpu/gpudevice.rs index 17b4425275e..9fa9f044daa 100644 --- a/components/script/dom/webgpu/gpudevice.rs +++ b/components/script/dom/webgpu/gpudevice.rs @@ -470,7 +470,11 @@ impl GPUDeviceMethods<crate::DomTypeHolder> for GPUDevice { can_gc: CanGc, ) -> Rc<Promise> { let promise = Promise::new_in_current_realm(comp, can_gc); - let sender = route_promise(&promise, self); + let sender = route_promise( + &promise, + self, + self.global().task_manager().dom_manipulation_task_source(), + ); GPUComputePipeline::create(self, descriptor, Some(sender)); promise } @@ -518,7 +522,11 @@ impl GPUDeviceMethods<crate::DomTypeHolder> for GPUDevice { ) -> Fallible<Rc<Promise>> { let (implicit_ids, desc) = self.parse_render_pipeline(descriptor)?; let promise = Promise::new_in_current_realm(comp, can_gc); - let sender = route_promise(&promise, self); + let sender = route_promise( + &promise, + self, + self.global().task_manager().dom_manipulation_task_source(), + ); GPURenderPipeline::create(self, implicit_ids, desc, Some(sender))?; Ok(promise) } @@ -549,7 +557,11 @@ impl GPUDeviceMethods<crate::DomTypeHolder> for GPUDevice { /// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-poperrorscope> fn PopErrorScope(&self, comp: InRealm, can_gc: CanGc) -> Rc<Promise> { let promise = Promise::new_in_current_realm(comp, can_gc); - let sender = route_promise(&promise, self); + let sender = route_promise( + &promise, + self, + self.global().task_manager().dom_manipulation_task_source(), + ); if self .channel .0 diff --git a/components/script/dom/webgpu/gpuqueue.rs b/components/script/dom/webgpu/gpuqueue.rs index bdcb2c53782..535e315e8c0 100644 --- a/components/script/dom/webgpu/gpuqueue.rs +++ b/components/script/dom/webgpu/gpuqueue.rs @@ -200,7 +200,9 @@ impl GPUQueueMethods<crate::DomTypeHolder> for GPUQueue { fn OnSubmittedWorkDone(&self, can_gc: CanGc) -> Rc<Promise> { let global = self.global(); let promise = Promise::new(&global, can_gc); - let sender = route_promise(&promise, self); + let task_source = global.task_manager().dom_manipulation_task_source(); + let sender = route_promise(&promise, self, task_source); + if let Err(e) = self .channel .0 diff --git a/components/script/dom/webgpu/gpushadermodule.rs b/components/script/dom/webgpu/gpushadermodule.rs index fd9e65788c8..79d1325cf0f 100644 --- a/components/script/dom/webgpu/gpushadermodule.rs +++ b/components/script/dom/webgpu/gpushadermodule.rs @@ -95,7 +95,14 @@ impl GPUShaderModule { promise.clone(), can_gc, ); - let sender = route_promise(&promise, &*shader_module); + let sender = route_promise( + &promise, + &*shader_module, + device + .global() + .task_manager() + .dom_manipulation_task_source(), + ); device .channel() .0 |