Move RenderingContext to webrender_traits (#32386)

The `gfx_traits` crate is gradually become just about text and fonts and
this is one of the few things there that is standing in the way of this.
Eventually `webrender_traits` will be the general cross-process
compositor API, so this sort of makes sense as well.
This commit is contained in:
Martin Robinson 2024-05-28 14:48:55 +02:00 committed by GitHub
parent 277eb87cc0
commit 0289377091
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 17 additions and 14 deletions

1
Cargo.lock generated
View file

@ -7180,6 +7180,7 @@ dependencies = [
"libc", "libc",
"log", "log",
"serde", "serde",
"surfman",
"webrender_api", "webrender_api",
] ]

View file

@ -8,7 +8,6 @@ use std::sync::{Arc, Mutex};
use canvas_traits::webgl::{webgl_channel, WebGLContextId, WebGLMsg, WebGLThreads}; use canvas_traits::webgl::{webgl_channel, WebGLContextId, WebGLMsg, WebGLThreads};
use euclid::default::Size2D; use euclid::default::Size2D;
use fnv::FnvHashMap; use fnv::FnvHashMap;
use gfx::rendering_context::RenderingContext;
use log::debug; use log::debug;
use sparkle::gl::GlType; use sparkle::gl::GlType;
use surfman::chains::{SwapChainAPI, SwapChains, SwapChainsAPI}; use surfman::chains::{SwapChainAPI, SwapChains, SwapChainsAPI};
@ -16,7 +15,8 @@ use surfman::{Device, SurfaceInfo, SurfaceTexture};
use webrender::RenderApiSender; use webrender::RenderApiSender;
use webrender_api::DocumentId; use webrender_api::DocumentId;
use webrender_traits::{ use webrender_traits::{
WebrenderExternalImageApi, WebrenderExternalImageRegistry, WebrenderImageSource, RenderingContext, WebrenderExternalImageApi, WebrenderExternalImageRegistry,
WebrenderImageSource,
}; };
use webxr::SurfmanGL as WebXRSurfman; use webxr::SurfmanGL as WebXRSurfman;
use webxr_api::LayerGrandManager as WebXRLayerGrandManager; use webxr_api::LayerGrandManager as WebXRLayerGrandManager;

View file

@ -21,7 +21,6 @@ use crossbeam_channel::Sender;
use embedder_traits::Cursor; use embedder_traits::Cursor;
use euclid::{Point2D, Rect, Scale, Transform3D, Vector2D}; use euclid::{Point2D, Rect, Scale, Transform3D, Vector2D};
use fnv::{FnvHashMap, FnvHashSet}; use fnv::{FnvHashMap, FnvHashSet};
use gfx::rendering_context::RenderingContext;
use image::{DynamicImage, ImageFormat}; use image::{DynamicImage, ImageFormat};
use ipc_channel::ipc; use ipc_channel::ipc;
use libc::c_void; use libc::c_void;
@ -49,7 +48,8 @@ use webrender_api::{
use webrender_traits::display_list::{HitTestInfo, ScrollTree}; use webrender_traits::display_list::{HitTestInfo, ScrollTree};
use webrender_traits::{ use webrender_traits::{
CanvasToCompositorMsg, CompositorHitTestResult, FontToCompositorMsg, ImageUpdate, CanvasToCompositorMsg, CompositorHitTestResult, FontToCompositorMsg, ImageUpdate,
NetToCompositorMsg, ScriptToCompositorMsg, SerializedImageUpdate, UntrustedNodeAddress, NetToCompositorMsg, RenderingContext, ScriptToCompositorMsg, SerializedImageUpdate,
UntrustedNodeAddress,
}; };
use crate::gl::RenderTargetInfo; use crate::gl::RenderTargetInfo;

View file

@ -8,10 +8,10 @@ use std::rc::Rc;
use compositing_traits::{CompositorProxy, CompositorReceiver, ConstellationMsg}; use compositing_traits::{CompositorProxy, CompositorReceiver, ConstellationMsg};
use crossbeam_channel::Sender; use crossbeam_channel::Sender;
use gfx::rendering_context::RenderingContext;
use profile_traits::{mem, time}; use profile_traits::{mem, time};
use webrender::RenderApi; use webrender::RenderApi;
use webrender_api::DocumentId; use webrender_api::DocumentId;
use webrender_traits::RenderingContext;
pub use crate::compositor::{CompositeTarget, IOCompositor, ShutdownState}; pub use crate::compositor::{CompositeTarget, IOCompositor, ShutdownState};

View file

@ -10,7 +10,6 @@ use std::time::Duration;
use base::id::{PipelineId, TopLevelBrowsingContextId}; use base::id::{PipelineId, TopLevelBrowsingContextId};
use embedder_traits::{EmbedderProxy, EventLoopWaker}; use embedder_traits::{EmbedderProxy, EventLoopWaker};
use euclid::Scale; use euclid::Scale;
use gfx::rendering_context::RenderingContext;
use keyboard_types::KeyboardEvent; use keyboard_types::KeyboardEvent;
use libc::c_void; use libc::c_void;
use script_traits::{ use script_traits::{
@ -22,6 +21,7 @@ use servo_url::ServoUrl;
use style_traits::DevicePixel; use style_traits::DevicePixel;
use webrender_api::units::{DeviceIntPoint, DeviceIntRect, DeviceIntSize, DevicePoint, DeviceRect}; use webrender_api::units::{DeviceIntPoint, DeviceIntRect, DeviceIntSize, DevicePoint, DeviceRect};
use webrender_api::ScrollLocation; use webrender_api::ScrollLocation;
use webrender_traits::RenderingContext;
#[derive(Clone)] #[derive(Clone)]
pub enum MouseWindowEvent { pub enum MouseWindowEvent {

View file

@ -11,5 +11,4 @@ pub mod font_store;
pub mod font_template; pub mod font_template;
#[allow(unsafe_code)] #[allow(unsafe_code)]
pub mod platform; pub mod platform;
pub mod rendering_context;
pub mod text; pub mod text;

View file

@ -65,8 +65,6 @@ use euclid::Scale;
))] ))]
use gaol::sandbox::{ChildSandbox, ChildSandboxMethods}; use gaol::sandbox::{ChildSandbox, ChildSandboxMethods};
use gfx::font_cache_thread::FontCacheThread; use gfx::font_cache_thread::FontCacheThread;
pub use gfx::rendering_context;
use gfx::rendering_context::RenderingContext;
pub use gleam::gl; pub use gleam::gl;
use ipc_channel::ipc::{self, IpcSender}; use ipc_channel::ipc::{self, IpcSender};
use log::{error, trace, warn, Log, Metadata, Record}; use log::{error, trace, warn, Log, Metadata, Record};
@ -94,7 +92,7 @@ use webrender_api::{
NativeFontHandle, NativeFontHandle,
}; };
use webrender_traits::{ use webrender_traits::{
CanvasToCompositorMsg, FontToCompositorMsg, ImageUpdate, WebRenderFontApi, CanvasToCompositorMsg, FontToCompositorMsg, ImageUpdate, RenderingContext, WebRenderFontApi,
WebrenderExternalImageHandlers, WebrenderExternalImageRegistry, WebrenderImageHandlerType, WebrenderExternalImageHandlers, WebrenderExternalImageRegistry, WebrenderImageHandlerType,
}; };
pub use { pub use {

View file

@ -20,3 +20,5 @@ log = { workspace = true }
libc = { workspace = true } libc = { workspace = true }
webrender_api = { workspace = true } webrender_api = { workspace = true }
serde = { workspace = true } serde = { workspace = true }
surfman = { workspace = true }

View file

@ -5,6 +5,7 @@
#![deny(unsafe_code)] #![deny(unsafe_code)]
pub mod display_list; pub mod display_list;
pub mod rendering_context;
use std::collections::HashMap; use std::collections::HashMap;
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
@ -26,6 +27,8 @@ use webrender_api::{
ImageKey, NativeFontHandle, PipelineId as WebRenderPipelineId, ImageKey, NativeFontHandle, PipelineId as WebRenderPipelineId,
}; };
pub use crate::rendering_context::RenderingContext;
/// This trait is used as a bridge between the different GL clients /// This trait is used as a bridge between the different GL clients
/// in Servo that handles WebRender ExternalImages and the WebRender /// in Servo that handles WebRender ExternalImages and the WebRender
/// ExternalImageHandler API. /// ExternalImageHandler API.

View file

@ -30,7 +30,6 @@ use servo::embedder_traits::{
}; };
use servo::euclid::{Point2D, Rect, Scale, Size2D, Vector2D}; use servo::euclid::{Point2D, Rect, Scale, Size2D, Vector2D};
use servo::keyboard_types::{Key, KeyState, KeyboardEvent}; use servo::keyboard_types::{Key, KeyState, KeyboardEvent};
use servo::rendering_context::RenderingContext;
pub use servo::script_traits::{MediaSessionActionType, MouseButton}; pub use servo::script_traits::{MediaSessionActionType, MouseButton};
use servo::script_traits::{TouchEventType, TouchId, TraversalDirection}; use servo::script_traits::{TouchEventType, TouchId, TraversalDirection};
use servo::servo_config::{opts, pref}; use servo::servo_config::{opts, pref};
@ -38,6 +37,7 @@ use servo::servo_url::ServoUrl;
pub use servo::webrender_api::units::DeviceIntRect; pub use servo::webrender_api::units::DeviceIntRect;
use servo::webrender_api::units::DevicePixel; use servo::webrender_api::units::DevicePixel;
use servo::webrender_api::ScrollLocation; use servo::webrender_api::ScrollLocation;
use servo::webrender_traits::RenderingContext;
use servo::{self, gl, Servo, TopLevelBrowsingContextId}; use servo::{self, gl, Servo, TopLevelBrowsingContextId};
use surfman::{Connection, SurfaceType}; use surfman::{Connection, SurfaceType};

View file

@ -16,13 +16,13 @@ use servo::compositing::windowing::{
}; };
use servo::embedder_traits::Cursor; use servo::embedder_traits::Cursor;
use servo::keyboard_types::{Key, KeyState, KeyboardEvent}; use servo::keyboard_types::{Key, KeyState, KeyboardEvent};
use servo::rendering_context::RenderingContext;
use servo::script_traits::{TouchEventType, WheelDelta, WheelMode}; use servo::script_traits::{TouchEventType, WheelDelta, WheelMode};
use servo::servo_config::{opts, pref}; use servo::servo_config::{opts, pref};
use servo::servo_geometry::DeviceIndependentPixel; use servo::servo_geometry::DeviceIndependentPixel;
use servo::style_traits::DevicePixel; use servo::style_traits::DevicePixel;
use servo::webrender_api::units::{DeviceIntPoint, DeviceIntRect, DeviceIntSize}; use servo::webrender_api::units::{DeviceIntPoint, DeviceIntRect, DeviceIntSize};
use servo::webrender_api::ScrollLocation; use servo::webrender_api::ScrollLocation;
use servo::webrender_traits::RenderingContext;
use surfman::{Connection, Context, Device, SurfaceType}; use surfman::{Connection, Context, Device, SurfaceType};
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
use winapi; use winapi;

View file

@ -14,10 +14,10 @@ use log::warn;
use servo::compositing::windowing::{ use servo::compositing::windowing::{
AnimationState, EmbedderCoordinates, EmbedderEvent, WindowMethods, AnimationState, EmbedderCoordinates, EmbedderEvent, WindowMethods,
}; };
use servo::rendering_context::RenderingContext;
use servo::servo_geometry::DeviceIndependentPixel; use servo::servo_geometry::DeviceIndependentPixel;
use servo::style_traits::DevicePixel; use servo::style_traits::DevicePixel;
use servo::webrender_api::units::{DeviceIntRect, DeviceIntSize}; use servo::webrender_api::units::{DeviceIntRect, DeviceIntSize};
use servo::webrender_traits::RenderingContext;
use surfman::{Connection, Context, Device, SurfaceType}; use surfman::{Connection, Context, Device, SurfaceType};
use crate::events_loop::WakerEvent; use crate::events_loop::WakerEvent;

View file

@ -18,11 +18,11 @@ use gleam::gl;
use glow::NativeFramebuffer; use glow::NativeFramebuffer;
use log::{trace, warn}; use log::{trace, warn};
use servo::compositing::windowing::EmbedderEvent; use servo::compositing::windowing::EmbedderEvent;
use servo::rendering_context::RenderingContext;
use servo::script_traits::TraversalDirection; use servo::script_traits::TraversalDirection;
use servo::servo_geometry::DeviceIndependentPixel; use servo::servo_geometry::DeviceIndependentPixel;
use servo::servo_url::ServoUrl; use servo::servo_url::ServoUrl;
use servo::style_traits::DevicePixel; use servo::style_traits::DevicePixel;
use servo::webrender_traits::RenderingContext;
use winit::event::{ElementState, MouseButton}; use winit::event::{ElementState, MouseButton};
use crate::egui_glue::EguiGlow; use crate::egui_glue::EguiGlow;