aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/gpuadapter.rs
diff options
context:
space:
mode:
authorIstvan Miklos <istvan.miklos@h-lab.eu>2020-01-16 15:34:14 +0100
committerIstvan Miklos <istvan.miklos@h-lab.eu>2020-01-23 10:51:21 +0100
commitdbed5f136438325bba20e24f0bff3aee4e86e763 (patch)
tree099f7ca2345b832c4ce68188964f19e6e2b3ad6b /components/script/dom/gpuadapter.rs
parentee3fb92e53d08c34a41b748aa4e49ae336eaf611 (diff)
downloadservo-dbed5f136438325bba20e24f0bff3aee4e86e763.tar.gz
servo-dbed5f136438325bba20e24f0bff3aee4e86e763.zip
Support worker for WebGPU
To create resource ids for the WebGPU we need to access the `IdentityHub`. In order to access the `IdentityHub` from a `Window` or a `Worker` as well, I've moved the `IdentityHub` to the `GlobalScope` from the `Navigator`.
Diffstat (limited to 'components/script/dom/gpuadapter.rs')
-rw-r--r--components/script/dom/gpuadapter.rs27
1 files changed, 10 insertions, 17 deletions
diff --git a/components/script/dom/gpuadapter.rs b/components/script/dom/gpuadapter.rs
index ca656af5044..c4eebe0c5d5 100644
--- a/components/script/dom/gpuadapter.rs
+++ b/components/script/dom/gpuadapter.rs
@@ -6,9 +6,7 @@ use crate::compartments::InCompartment;
use crate::dom::bindings::codegen::Bindings::GPUAdapterBinding::{
self, GPUAdapterMethods, GPUDeviceDescriptor,
};
-use crate::dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods;
use crate::dom::bindings::error::Error;
-use crate::dom::bindings::inheritance::Castable;
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector};
use crate::dom::bindings::root::DomRoot;
use crate::dom::bindings::str::DOMString;
@@ -17,7 +15,6 @@ use crate::dom::gpu::response_async;
use crate::dom::gpu::AsyncWGPUListener;
use crate::dom::gpudevice::GPUDevice;
use crate::dom::promise::Promise;
-use crate::dom::window::Window;
use crate::script_runtime::JSContext as SafeJSContext;
use dom_struct::dom_struct;
use js::jsapi::{Heap, JSObject};
@@ -92,21 +89,17 @@ impl GPUAdapterMethods for GPUAdapter {
max_bind_groups: descriptor.limits.maxBindGroups,
},
};
- if let Some(window) = self.global().downcast::<Window>() {
- let id = window
- .Navigator()
- .create_device_id(self.adapter.0.backend());
- if self
- .channel
- .0
- .send(WebGPURequest::RequestDevice(sender, self.adapter, desc, id))
- .is_err()
- {
- promise.reject_error(Error::Operation);
- }
- } else {
+ let id = self
+ .global()
+ .wgpu_create_device_id(self.adapter.0.backend());
+ if self
+ .channel
+ .0
+ .send(WebGPURequest::RequestDevice(sender, self.adapter, desc, id))
+ .is_err()
+ {
promise.reject_error(Error::Operation);
- };
+ }
promise
}
}