mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
feat: webxr
feature flag (#34241)
* Add webxr feature flag Add webxr feature flag to embedder_traits Add webxr flag to constellation Add webxr flag to compositor Add webxr flag to canvas Turn registry into optional Add webxr flag to servo lib Signed-off-by: Wu Yu Wei <yuweiwu@pm.me> Co-authored-by: august kline <me@augustkline.com> * Cargo fmt Signed-off-by: Wu Yu Wei <yuweiwu@pm.me> * Add missing license Signed-off-by: Wu Yu Wei <yuweiwu@pm.me> * Cargo clippy Signed-off-by: Wu Yu Wei <yuweiwu@pm.me> --------- Signed-off-by: Wu Yu Wei <yuweiwu@pm.me> Co-authored-by: august kline <me@augustkline.com>
This commit is contained in:
parent
91f96cc9dd
commit
47a243614f
21 changed files with 456 additions and 374 deletions
|
@ -17,14 +17,17 @@ use webrender_traits::{
|
|||
RenderingContext, WebrenderExternalImageApi, WebrenderExternalImageRegistry,
|
||||
WebrenderImageSource,
|
||||
};
|
||||
#[cfg(feature = "webxr")]
|
||||
use webxr::SurfmanGL as WebXRSurfman;
|
||||
#[cfg(feature = "webxr")]
|
||||
use webxr_api::LayerGrandManager as WebXRLayerGrandManager;
|
||||
|
||||
use crate::webgl_thread::{WebGLThread, WebGLThreadInit, WebXRBridgeInit};
|
||||
use crate::webgl_thread::{WebGLThread, WebGLThreadInit};
|
||||
|
||||
pub struct WebGLComm {
|
||||
pub webgl_threads: WebGLThreads,
|
||||
pub image_handler: Box<dyn WebrenderExternalImageApi>,
|
||||
#[cfg(feature = "webxr")]
|
||||
pub webxr_layer_grand_manager: WebXRLayerGrandManager<WebXRSurfman>,
|
||||
}
|
||||
|
||||
|
@ -40,7 +43,9 @@ impl WebGLComm {
|
|||
debug!("WebGLThreads::new()");
|
||||
let (sender, receiver) = webgl_channel::<WebGLMsg>().unwrap();
|
||||
let webrender_swap_chains = SwapChains::new();
|
||||
let webxr_init = WebXRBridgeInit::new(sender.clone());
|
||||
#[cfg(feature = "webxr")]
|
||||
let webxr_init = crate::webxr::WebXRBridgeInit::new(sender.clone());
|
||||
#[cfg(feature = "webxr")]
|
||||
let webxr_layer_grand_manager = webxr_init.layer_grand_manager();
|
||||
|
||||
// This implementation creates a single `WebGLThread` for all the pipelines.
|
||||
|
@ -54,6 +59,7 @@ impl WebGLComm {
|
|||
connection: surfman.connection(),
|
||||
adapter: surfman.adapter(),
|
||||
api_type,
|
||||
#[cfg(feature = "webxr")]
|
||||
webxr_init,
|
||||
};
|
||||
|
||||
|
@ -64,6 +70,7 @@ impl WebGLComm {
|
|||
WebGLComm {
|
||||
webgl_threads: WebGLThreads(sender),
|
||||
image_handler: Box::new(external),
|
||||
#[cfg(feature = "webxr")]
|
||||
webxr_layer_grand_manager,
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue