diff options
author | Alan Jeffrey <ajeffrey@mozilla.com> | 2020-04-15 18:04:32 -0500 |
---|---|---|
committer | Alan Jeffrey <ajeffrey@mozilla.com> | 2020-06-28 16:37:45 -0500 |
commit | 349619ed2d741312e34924aabc3e6abcc3c468ed (patch) | |
tree | 1cf963eeca8cdf9ba914a2da7a5bedbae7b9d77f /components/canvas/webgl_mode/inprocess.rs | |
parent | af110ac21fcf1e108c919f5e9d724b2441996ed6 (diff) | |
download | servo-349619ed2d741312e34924aabc3e6abcc3c468ed.tar.gz servo-349619ed2d741312e34924aabc3e6abcc3c468ed.zip |
Support for webxr layer management
Diffstat (limited to 'components/canvas/webgl_mode/inprocess.rs')
-rw-r--r-- | components/canvas/webgl_mode/inprocess.rs | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/components/canvas/webgl_mode/inprocess.rs b/components/canvas/webgl_mode/inprocess.rs index c7b25b69d12..ca9188aee54 100644 --- a/components/canvas/webgl_mode/inprocess.rs +++ b/components/canvas/webgl_mode/inprocess.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use crate::webgl_thread::{SurfaceProviders, WebGLThread, WebGLThreadInit, WebGlExecutor}; +use crate::webgl_thread::{WebGLThread, WebGLThreadInit, WebXRBridgeInit}; use canvas_traits::webgl::webgl_channel; use canvas_traits::webgl::{WebGLContextId, WebGLMsg, WebGLThreads}; use euclid::default::Size2D; @@ -11,7 +11,6 @@ use gleam; use servo_config::pref; use sparkle::gl; use sparkle::gl::GlType; -use std::collections::HashMap; use std::default::Default; use std::rc::Rc; use std::sync::{Arc, Mutex}; @@ -25,15 +24,14 @@ use webrender_surfman::WebrenderSurfman; use webrender_traits::{ WebrenderExternalImageApi, WebrenderExternalImageRegistry, WebrenderImageSource, }; -use webxr_api::SwapChainId as WebXRSwapChainId; +use webxr::SurfmanGL as WebXRSurfman; +use webxr_api::LayerGrandManager as WebXRLayerGrandManager; pub struct WebGLComm { pub webgl_threads: WebGLThreads, - pub webxr_swap_chains: SwapChains<WebXRSwapChainId, Device>, - pub webxr_surface_providers: SurfaceProviders, pub image_handler: Box<dyn WebrenderExternalImageApi>, pub output_handler: Option<Box<dyn webrender_api::OutputImageHandler>>, - pub webgl_executor: WebGlExecutor, + pub webxr_layer_grand_manager: WebXRLayerGrandManager<WebXRSurfman>, } impl WebGLComm { @@ -49,9 +47,8 @@ impl WebGLComm { debug!("WebGLThreads::new()"); let (sender, receiver) = webgl_channel::<WebGLMsg>().unwrap(); let webrender_swap_chains = SwapChains::new(); - let webxr_swap_chains = SwapChains::new(); - let webxr_surface_providers = Arc::new(Mutex::new(HashMap::new())); - let (runnable_sender, runnable_receiver) = crossbeam_channel::unbounded(); + let webxr_init = WebXRBridgeInit::new(sender.clone()); + let webxr_layer_grand_manager = webxr_init.layer_grand_manager(); // This implementation creates a single `WebGLThread` for all the pipelines. let init = WebGLThreadInit { @@ -61,12 +58,10 @@ impl WebGLComm { sender: sender.clone(), receiver, webrender_swap_chains: webrender_swap_chains.clone(), - webxr_swap_chains: webxr_swap_chains.clone(), - webxr_surface_providers: webxr_surface_providers.clone(), connection: surfman.connection(), adapter: surfman.adapter(), api_type, - runnable_receiver, + webxr_init, }; let output_handler = if pref!(dom.webgl.dom_to_texture.enabled) { @@ -81,11 +76,9 @@ impl WebGLComm { WebGLComm { webgl_threads: WebGLThreads(sender), - webxr_swap_chains, - webxr_surface_providers, image_handler: Box::new(external), output_handler: output_handler.map(|b| b as Box<_>), - webgl_executor: runnable_sender, + webxr_layer_grand_manager: webxr_layer_grand_manager, } } } |