aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webgpu
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/webgpu')
-rw-r--r--components/script/dom/webgpu/gpu.rs4
-rw-r--r--components/script/dom/webgpu/gpuadapter.rs6
-rw-r--r--components/script/dom/webgpu/gpubuffer.rs6
-rw-r--r--components/script/dom/webgpu/gpudevice.rs18
-rw-r--r--components/script/dom/webgpu/gpuqueue.rs4
-rw-r--r--components/script/dom/webgpu/gpushadermodule.rs9
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