remove sparkle from components/servo (#33910)

* replace sparkle's GlType with canvas_traits's GlType

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

* remove sparkle from components/servo

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
This commit is contained in:
Samson 2024-10-19 07:28:59 +02:00 committed by GitHub
parent a008b6fc73
commit fa9cb79fc8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 16 additions and 19 deletions

1
Cargo.lock generated
View file

@ -4142,7 +4142,6 @@ dependencies = [
"servo_config", "servo_config",
"servo_geometry", "servo_geometry",
"servo_url", "servo_url",
"sparkle",
"style", "style",
"style_traits", "style_traits",
"surfman", "surfman",

View file

@ -5,11 +5,10 @@
use std::default::Default; use std::default::Default;
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use canvas_traits::webgl::{webgl_channel, WebGLContextId, WebGLMsg, WebGLThreads}; use canvas_traits::webgl::{webgl_channel, GlType, WebGLContextId, WebGLMsg, WebGLThreads};
use euclid::default::Size2D; use euclid::default::Size2D;
use fnv::FnvHashMap; use fnv::FnvHashMap;
use log::debug; use log::debug;
use sparkle::gl::GlType;
use surfman::chains::{SwapChainAPI, SwapChains, SwapChainsAPI}; use surfman::chains::{SwapChainAPI, SwapChains, SwapChainsAPI};
use surfman::{Device, SurfaceInfo, SurfaceTexture}; use surfman::{Device, SurfaceInfo, SurfaceTexture};
use webrender::RenderApiSender; use webrender::RenderApiSender;

View file

@ -211,7 +211,7 @@ pub(crate) struct WebGLThread {
/// The swap chains used by webrender /// The swap chains used by webrender
webrender_swap_chains: SwapChains<WebGLContextId, Device>, webrender_swap_chains: SwapChains<WebGLContextId, Device>,
/// Whether this context is a GL or GLES context. /// Whether this context is a GL or GLES context.
api_type: gl::GlType, api_type: GlType,
/// The bridge to WebXR /// The bridge to WebXR
pub webxr_bridge: WebXRBridge, pub webxr_bridge: WebXRBridge,
} }
@ -226,7 +226,7 @@ pub(crate) struct WebGLThreadInit {
pub webrender_swap_chains: SwapChains<WebGLContextId, Device>, pub webrender_swap_chains: SwapChains<WebGLContextId, Device>,
pub connection: Connection, pub connection: Connection,
pub adapter: Adapter, pub adapter: Adapter,
pub api_type: gl::GlType, pub api_type: GlType,
pub webxr_init: WebXRBridgeInit, pub webxr_init: WebXRBridgeInit,
} }
@ -553,20 +553,20 @@ impl WebGLThread {
); );
let gl = match self.api_type { let gl = match self.api_type {
gl::GlType::Gl => Gl::gl_fns(gl::ffi_gl::Gl::load_with(|symbol_name| { GlType::Gl => Gl::gl_fns(gl::ffi_gl::Gl::load_with(|symbol_name| {
self.device.get_proc_address(&ctx, symbol_name) self.device.get_proc_address(&ctx, symbol_name)
})), })),
gl::GlType::Gles => Gl::gles_fns(gl::ffi_gles::Gles2::load_with(|symbol_name| { GlType::Gles => Gl::gles_fns(gl::ffi_gles::Gles2::load_with(|symbol_name| {
self.device.get_proc_address(&ctx, symbol_name) self.device.get_proc_address(&ctx, symbol_name)
})), })),
}; };
let glow = unsafe { let glow = unsafe {
match self.api_type { match self.api_type {
gl::GlType::Gl => glow::Context::from_loader_function(|symbol_name| { GlType::Gl => glow::Context::from_loader_function(|symbol_name| {
self.device.get_proc_address(&ctx, symbol_name) self.device.get_proc_address(&ctx, symbol_name)
}), }),
gl::GlType::Gles => glow::Context::from_loader_function(|symbol_name| { GlType::Gles => glow::Context::from_loader_function(|symbol_name| {
self.device.get_proc_address(&ctx, symbol_name) self.device.get_proc_address(&ctx, symbol_name)
}), }),
} }
@ -2901,12 +2901,12 @@ fn clamp_viewport(gl: &Gl, size: Size2D<u32>) -> Size2D<u32> {
} }
trait ToSurfmanVersion { trait ToSurfmanVersion {
fn to_surfman_version(self, api_type: gl::GlType) -> GLVersion; fn to_surfman_version(self, api_type: GlType) -> GLVersion;
} }
impl ToSurfmanVersion for WebGLVersion { impl ToSurfmanVersion for WebGLVersion {
fn to_surfman_version(self, api_type: gl::GlType) -> GLVersion { fn to_surfman_version(self, api_type: GlType) -> GLVersion {
if api_type == gl::GlType::Gles { if api_type == GlType::Gles {
return GLVersion::new(3, 0); return GLVersion::new(3, 0);
} }
match self { match self {
@ -2923,7 +2923,7 @@ trait SurfmanContextAttributeFlagsConvert {
fn to_surfman_context_attribute_flags( fn to_surfman_context_attribute_flags(
&self, &self,
webgl_version: WebGLVersion, webgl_version: WebGLVersion,
api_type: gl::GlType, api_type: GlType,
) -> ContextAttributeFlags; ) -> ContextAttributeFlags;
} }
@ -2931,13 +2931,13 @@ impl SurfmanContextAttributeFlagsConvert for GLContextAttributes {
fn to_surfman_context_attribute_flags( fn to_surfman_context_attribute_flags(
&self, &self,
webgl_version: WebGLVersion, webgl_version: WebGLVersion,
api_type: gl::GlType, api_type: GlType,
) -> ContextAttributeFlags { ) -> ContextAttributeFlags {
let mut flags = ContextAttributeFlags::empty(); let mut flags = ContextAttributeFlags::empty();
flags.set(ContextAttributeFlags::ALPHA, self.alpha); flags.set(ContextAttributeFlags::ALPHA, self.alpha);
flags.set(ContextAttributeFlags::DEPTH, self.depth); flags.set(ContextAttributeFlags::DEPTH, self.depth);
flags.set(ContextAttributeFlags::STENCIL, self.stencil); flags.set(ContextAttributeFlags::STENCIL, self.stencil);
if (webgl_version == WebGLVersion::WebGL1) && (api_type == gl::GlType::Gl) { if (webgl_version == WebGLVersion::WebGL1) && (api_type == GlType::Gl) {
flags.set(ContextAttributeFlags::COMPATIBILITY_PROFILE, true); flags.set(ContextAttributeFlags::COMPATIBILITY_PROFILE, true);
} }
flags flags

View file

@ -73,7 +73,6 @@ servo-media-gstreamer = { workspace = true, optional = true }
servo_config = { path = "../config" } servo_config = { path = "../config" }
servo_geometry = { path = "../geometry" } servo_geometry = { path = "../geometry" }
servo_url = { path = "../url" } servo_url = { path = "../url" }
sparkle = { workspace = true }
style = { workspace = true } style = { workspace = true }
style_traits = { workspace = true } style_traits = { workspace = true }
surfman = { workspace = true } surfman = { workspace = true }

View file

@ -30,7 +30,7 @@ use bluetooth::BluetoothThreadFactory;
use bluetooth_traits::BluetoothRequest; use bluetooth_traits::BluetoothRequest;
use canvas::canvas_paint_thread::CanvasPaintThread; use canvas::canvas_paint_thread::CanvasPaintThread;
use canvas::WebGLComm; use canvas::WebGLComm;
use canvas_traits::webgl::WebGLThreads; use canvas_traits::webgl::{GlType, WebGLThreads};
use compositing::webview::UnknownWebView; use compositing::webview::UnknownWebView;
use compositing::windowing::{EmbedderEvent, EmbedderMethods, WindowMethods}; use compositing::windowing::{EmbedderEvent, EmbedderMethods, WindowMethods};
use compositing::{CompositeTarget, IOCompositor, InitialCompositorState, ShutdownState}; use compositing::{CompositeTarget, IOCompositor, InitialCompositorState, ShutdownState};
@ -387,8 +387,8 @@ where
// Create the webgl thread // Create the webgl thread
let gl_type = match webrender_gl.get_type() { let gl_type = match webrender_gl.get_type() {
gleam::gl::GlType::Gl => sparkle::gl::GlType::Gl, gleam::gl::GlType::Gl => GlType::Gl,
gleam::gl::GlType::Gles => sparkle::gl::GlType::Gles, gleam::gl::GlType::Gles => GlType::Gles,
}; };
let (external_image_handlers, external_images) = WebrenderExternalImageHandlers::new(); let (external_image_handlers, external_images) = WebrenderExternalImageHandlers::new();