diff --git a/Cargo.lock b/Cargo.lock index 6ba344522cd..d2bdb6fdf48 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -784,18 +784,13 @@ name = "canvas" version = "0.0.1" dependencies = [ "app_units", - "bitflags 2.9.0", - "byteorder", "canvas_traits", "compositing_traits", "crossbeam-channel", "cssparser", "euclid", - "fnv", "font-kit", "fonts", - "glow", - "half", "ipc-channel", "log", "lyon_geom", @@ -807,12 +802,8 @@ dependencies = [ "servo_arc", "snapshot", "stylo", - "surfman", "unicode-script", - "webrender", "webrender_api", - "webxr", - "webxr-api", ] [[package]] @@ -4334,6 +4325,7 @@ dependencies = [ "tracing", "url", "webdriver_server", + "webgl", "webgpu", "webrender", "webrender_api", @@ -8489,6 +8481,30 @@ dependencies = [ "webdriver", ] +[[package]] +name = "webgl" +version = "0.0.1" +dependencies = [ + "bitflags 2.9.0", + "byteorder", + "canvas_traits", + "compositing_traits", + "crossbeam-channel", + "euclid", + "fnv", + "glow", + "half", + "ipc-channel", + "log", + "pixels", + "snapshot", + "surfman", + "webrender", + "webrender_api", + "webxr", + "webxr-api", +] + [[package]] name = "webgpu" version = "0.0.1" diff --git a/components/canvas/Cargo.toml b/components/canvas/Cargo.toml index 7e7b00efe11..6084fc6e434 100644 --- a/components/canvas/Cargo.toml +++ b/components/canvas/Cargo.toml @@ -11,24 +11,15 @@ rust-version.workspace = true name = "canvas" path = "lib.rs" -[features] -webgl_backtrace = ["canvas_traits/webgl_backtrace"] -webxr = ["dep:webxr", "dep:webxr-api"] - [dependencies] app_units = { workspace = true } -bitflags = { workspace = true } -byteorder = { workspace = true } canvas_traits = { workspace = true } compositing_traits = { workspace = true } crossbeam-channel = { workspace = true } cssparser = { workspace = true } euclid = { workspace = true } -fnv = { workspace = true } font-kit = "0.14" fonts = { path = "../fonts" } -glow = { workspace = true } -half = "2" ipc-channel = { workspace = true } log = { workspace = true } lyon_geom = "1.0.4" @@ -40,9 +31,5 @@ raqote = "0.8.5" servo_arc = { workspace = true } snapshot = { workspace = true } stylo = { workspace = true } -surfman = { workspace = true } unicode-script = { workspace = true } -webrender = { workspace = true } webrender_api = { workspace = true } -webxr = { path = "../webxr", features = ["ipc"], optional = true } -webxr-api = { workspace = true, features = ["ipc"], optional = true } diff --git a/components/canvas/lib.rs b/components/canvas/lib.rs index d2c62c1d8b6..86c291fdc87 100644 --- a/components/canvas/lib.rs +++ b/components/canvas/lib.rs @@ -6,12 +6,5 @@ mod raqote_backend; -pub use webgl_mode::WebGLComm; - pub mod canvas_data; pub mod canvas_paint_thread; -mod webgl_limits; -mod webgl_mode; -pub mod webgl_thread; -#[cfg(feature = "webxr")] -mod webxr; diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml index 498d170492d..b49f60e742a 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml @@ -46,14 +46,14 @@ tracing = [ webdriver = ["webdriver_server"] webgl_backtrace = [ "script/webgl_backtrace", - "canvas/webgl_backtrace", + "webgl/webgl_backtrace", "canvas_traits/webgl_backtrace", ] webxr = [ "dep:webxr", "dep:webxr-api", "compositing/webxr", - "canvas/webxr", + "webgl/webxr", "script/webxr", ] webgpu = [ @@ -68,7 +68,8 @@ base = { workspace = true } bincode = { workspace = true } bluetooth = { path = "../bluetooth", optional = true } bluetooth_traits = { workspace = true, optional = true } -canvas = { path = "../canvas", default-features = false } +canvas = { path = "../canvas" } +webgl = { path = "../webgl", default-features = false } canvas_traits = { workspace = true } cfg-if = { workspace = true } compositing = { path = "../compositing" } diff --git a/components/servo/lib.rs b/components/servo/lib.rs index 7fb990527ec..6f39e773e4e 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -38,7 +38,6 @@ use base::id::{PipelineNamespace, PipelineNamespaceId}; use bluetooth::BluetoothThreadFactory; #[cfg(feature = "bluetooth")] use bluetooth_traits::BluetoothRequest; -use canvas::WebGLComm; use canvas::canvas_paint_thread::CanvasPaintThread; use canvas_traits::webgl::{GlType, WebGLThreads}; use clipboard_delegate::StringRequest; @@ -99,6 +98,7 @@ use servo_delegate::DefaultServoDelegate; use servo_media::ServoMedia; use servo_media::player::context::GlContext; use servo_url::ServoUrl; +use webgl::WebGLComm; #[cfg(feature = "webgpu")] pub use webgpu; #[cfg(feature = "webgpu")] diff --git a/components/webgl/Cargo.toml b/components/webgl/Cargo.toml new file mode 100644 index 00000000000..b0c1c0ceb29 --- /dev/null +++ b/components/webgl/Cargo.toml @@ -0,0 +1,36 @@ +[package] +name = "webgl" +version.workspace = true +authors.workspace = true +license.workspace = true +edition.workspace = true +publish.workspace = true +rust-version.workspace = true + +[lib] +name = "webgl" +path = "lib.rs" + +[features] +webgl_backtrace = ["canvas_traits/webgl_backtrace"] +webxr = ["dep:webxr", "dep:webxr-api"] + +[dependencies] +bitflags = { workspace = true } +byteorder = { workspace = true } +canvas_traits = { workspace = true } +compositing_traits = { workspace = true } +crossbeam-channel = { workspace = true } +euclid = { workspace = true } +fnv = { workspace = true } +glow = { workspace = true } +half = "2" +ipc-channel = { workspace = true } +log = { workspace = true } +pixels = { path = "../pixels" } +snapshot = { workspace = true } +surfman = { workspace = true } +webrender = { workspace = true } +webrender_api = { workspace = true } +webxr = { path = "../webxr", features = ["ipc"], optional = true } +webxr-api = { workspace = true, features = ["ipc"], optional = true } diff --git a/components/webgl/lib.rs b/components/webgl/lib.rs new file mode 100644 index 00000000000..923e7faad24 --- /dev/null +++ b/components/webgl/lib.rs @@ -0,0 +1,13 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * 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/. */ + +#![deny(unsafe_code)] + +pub use webgl_mode::WebGLComm; + +mod webgl_limits; +mod webgl_mode; +pub mod webgl_thread; +#[cfg(feature = "webxr")] +mod webxr; diff --git a/components/canvas/webgl_limits.rs b/components/webgl/webgl_limits.rs similarity index 100% rename from components/canvas/webgl_limits.rs rename to components/webgl/webgl_limits.rs diff --git a/components/canvas/webgl_mode/inprocess.rs b/components/webgl/webgl_mode/inprocess.rs similarity index 100% rename from components/canvas/webgl_mode/inprocess.rs rename to components/webgl/webgl_mode/inprocess.rs diff --git a/components/canvas/webgl_mode/mod.rs b/components/webgl/webgl_mode/mod.rs similarity index 100% rename from components/canvas/webgl_mode/mod.rs rename to components/webgl/webgl_mode/mod.rs diff --git a/components/canvas/webgl_thread.rs b/components/webgl/webgl_thread.rs similarity index 100% rename from components/canvas/webgl_thread.rs rename to components/webgl/webgl_thread.rs diff --git a/components/canvas/webxr.rs b/components/webgl/webxr.rs similarity index 100% rename from components/canvas/webxr.rs rename to components/webgl/webxr.rs