diff options
author | Istvan Miklos <istvan.miklos@h-lab.eu> | 2020-01-16 15:34:14 +0100 |
---|---|---|
committer | Istvan Miklos <istvan.miklos@h-lab.eu> | 2020-01-23 10:51:21 +0100 |
commit | dbed5f136438325bba20e24f0bff3aee4e86e763 (patch) | |
tree | 099f7ca2345b832c4ce68188964f19e6e2b3ad6b /components/script/dom/gpuadapter.rs | |
parent | ee3fb92e53d08c34a41b748aa4e49ae336eaf611 (diff) | |
download | servo-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.rs | 27 |
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 } } |