aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/webgl_mode/inprocess.rs
diff options
context:
space:
mode:
authorAlan Jeffrey <ajeffrey@mozilla.com>2020-04-15 18:04:32 -0500
committerAlan Jeffrey <ajeffrey@mozilla.com>2020-06-28 16:37:45 -0500
commit349619ed2d741312e34924aabc3e6abcc3c468ed (patch)
tree1cf963eeca8cdf9ba914a2da7a5bedbae7b9d77f /components/canvas/webgl_mode/inprocess.rs
parentaf110ac21fcf1e108c919f5e9d724b2441996ed6 (diff)
downloadservo-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.rs23
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,
}
}
}