mirror of
https://github.com/servo/servo.git
synced 2025-07-31 19:20:22 +01:00
Use non-IPC webrender API over explicit IPC channels.
This commit is contained in:
parent
a922c497fa
commit
564c16d754
77 changed files with 494 additions and 360 deletions
|
@ -114,7 +114,7 @@ uuid = {version = "0.8", features = ["v4"]}
|
|||
xml5ever = "0.16"
|
||||
webdriver = "0.40"
|
||||
webgpu = {path = "../webgpu"}
|
||||
webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]}
|
||||
webrender_api = {git = "https://github.com/servo/webrender"}
|
||||
webvr_traits = {path = "../webvr_traits"}
|
||||
webxr-api = {git = "https://github.com/servo/webxr", features = ["ipc"]}
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ use script_layout_interface::OpaqueStyleAndLayoutData;
|
|||
use script_traits::transferable::MessagePortImpl;
|
||||
use script_traits::{DocumentActivity, DrawAPaintImageResult};
|
||||
use script_traits::{MediaSessionActionType, ScriptToConstellationChan, TimerEventId, TimerSource};
|
||||
use script_traits::{UntrustedNodeAddress, WindowSizeData, WindowSizeType};
|
||||
use script_traits::{UntrustedNodeAddress, WebrenderIpcSender, WindowSizeData, WindowSizeType};
|
||||
use selectors::matching::ElementSelectorFlags;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use servo_arc::Arc as ServoArc;
|
||||
|
@ -146,7 +146,7 @@ use tendril::{StrTendril, TendrilSink};
|
|||
use time::{Duration, Timespec};
|
||||
use uuid::Uuid;
|
||||
use webgpu::{WebGPU, WebGPUAdapter};
|
||||
use webrender_api::{DocumentId, ImageKey, RenderApiSender};
|
||||
use webrender_api::{DocumentId, ImageKey};
|
||||
use webvr_traits::{WebVRGamepadData, WebVRGamepadHand, WebVRGamepadState};
|
||||
use webxr_api::SwapChainId as WebXRSwapChainId;
|
||||
|
||||
|
@ -527,7 +527,6 @@ unsafe_no_jsmanaged_fields!(Arc<Mutex<dyn Player>>);
|
|||
unsafe_no_jsmanaged_fields!(WebRtcController);
|
||||
unsafe_no_jsmanaged_fields!(MediaStreamId, MediaStreamType);
|
||||
unsafe_no_jsmanaged_fields!(Mutex<MediaFrameRenderer>);
|
||||
unsafe_no_jsmanaged_fields!(RenderApiSender);
|
||||
unsafe_no_jsmanaged_fields!(ResourceFetchTiming);
|
||||
unsafe_no_jsmanaged_fields!(Timespec);
|
||||
unsafe_no_jsmanaged_fields!(HTMLMediaElementFetchContext);
|
||||
|
@ -541,6 +540,7 @@ unsafe_no_jsmanaged_fields!(WebGLContextId);
|
|||
unsafe_no_jsmanaged_fields!(Arc<Mutex<dyn AudioRenderer>>);
|
||||
unsafe_no_jsmanaged_fields!(MediaSessionActionType);
|
||||
unsafe_no_jsmanaged_fields!(MediaMetadata);
|
||||
unsafe_no_jsmanaged_fields!(WebrenderIpcSender);
|
||||
|
||||
unsafe impl<'a> JSTraceable for &'a str {
|
||||
#[inline]
|
||||
|
|
|
@ -81,6 +81,7 @@ use net_traits::request::{Destination, Referrer};
|
|||
use net_traits::{CoreResourceMsg, FetchChannels, FetchMetadata, FetchResponseListener, Metadata};
|
||||
use net_traits::{NetworkError, ResourceFetchTiming, ResourceTimingType};
|
||||
use script_layout_interface::HTMLMediaData;
|
||||
use script_traits::WebrenderIpcSender;
|
||||
use servo_config::pref;
|
||||
use servo_media::player::audio::AudioRenderer;
|
||||
use servo_media::player::video::{VideoFrame, VideoFrameRenderer};
|
||||
|
@ -95,8 +96,7 @@ use std::rc::Rc;
|
|||
use std::sync::{Arc, Mutex};
|
||||
use time::{self, Duration, Timespec};
|
||||
use webrender_api::{ExternalImageData, ExternalImageId, ExternalImageType, TextureTarget};
|
||||
use webrender_api::{ImageData, ImageDescriptor, ImageFormat, ImageKey, RenderApi};
|
||||
use webrender_api::{RenderApiSender, Transaction};
|
||||
use webrender_api::{ImageData, ImageDescriptor, ImageFormat, ImageKey, Transaction};
|
||||
|
||||
#[derive(PartialEq)]
|
||||
enum FrameStatus {
|
||||
|
@ -148,7 +148,7 @@ impl FrameHolder {
|
|||
|
||||
pub struct MediaFrameRenderer {
|
||||
player_id: Option<u64>,
|
||||
api: RenderApi,
|
||||
api: WebrenderIpcSender,
|
||||
current_frame: Option<(ImageKey, i32, i32)>,
|
||||
old_frame: Option<ImageKey>,
|
||||
very_old_frame: Option<ImageKey>,
|
||||
|
@ -156,10 +156,10 @@ pub struct MediaFrameRenderer {
|
|||
}
|
||||
|
||||
impl MediaFrameRenderer {
|
||||
fn new(render_api_sender: RenderApiSender) -> Self {
|
||||
fn new(render_api_sender: WebrenderIpcSender) -> Self {
|
||||
Self {
|
||||
player_id: None,
|
||||
api: render_api_sender.create_api(),
|
||||
api: render_api_sender,
|
||||
current_frame: None,
|
||||
old_frame: None,
|
||||
very_old_frame: None,
|
||||
|
|
|
@ -108,7 +108,7 @@ use script_traits::{ConstellationControlMsg, DocumentState, HistoryEntryReplacem
|
|||
use script_traits::{
|
||||
ScriptMsg, ScriptToConstellationChan, ScrollState, StructuredSerializedData, TimerEventId,
|
||||
};
|
||||
use script_traits::{TimerSchedulerMsg, WindowSizeData, WindowSizeType};
|
||||
use script_traits::{TimerSchedulerMsg, WebrenderIpcSender, WindowSizeData, WindowSizeType};
|
||||
use selectors::attr::CaseSensitivity;
|
||||
use servo_geometry::{f32_rect_to_au_rect, MaxRect};
|
||||
use servo_url::{Host, ImmutableOrigin, MutableOrigin, ServoUrl};
|
||||
|
@ -137,7 +137,7 @@ use style_traits::{CSSPixel, DevicePixel, ParsingMode};
|
|||
use url::Position;
|
||||
use webgpu::WebGPU;
|
||||
use webrender_api::units::{DeviceIntPoint, DeviceIntSize, LayoutPixel};
|
||||
use webrender_api::{DocumentId, ExternalScrollId, RenderApiSender};
|
||||
use webrender_api::{DocumentId, ExternalScrollId};
|
||||
use webvr_traits::WebVRMsg;
|
||||
|
||||
/// Current state of the window object
|
||||
|
@ -303,8 +303,8 @@ pub struct Window {
|
|||
exists_mut_observer: Cell<bool>,
|
||||
|
||||
/// Webrender API Sender
|
||||
#[ignore_malloc_size_of = "defined in webrender_api"]
|
||||
webrender_api_sender: RenderApiSender,
|
||||
#[ignore_malloc_size_of = "Wraps an IpcSender"]
|
||||
webrender_api_sender: WebrenderIpcSender,
|
||||
|
||||
/// Indicate whether a SetDocumentStatus message has been sent after a reflow is complete.
|
||||
/// It is used to avoid sending idle message more than once, which is unneccessary.
|
||||
|
@ -513,7 +513,7 @@ impl Window {
|
|||
self.add_pending_reflow();
|
||||
}
|
||||
|
||||
pub fn get_webrender_api_sender(&self) -> RenderApiSender {
|
||||
pub fn get_webrender_api_sender(&self) -> WebrenderIpcSender {
|
||||
self.webrender_api_sender.clone()
|
||||
}
|
||||
|
||||
|
@ -2218,7 +2218,7 @@ impl Window {
|
|||
webxr_registry: webxr_api::Registry,
|
||||
microtask_queue: Rc<MicrotaskQueue>,
|
||||
webrender_document: DocumentId,
|
||||
webrender_api_sender: RenderApiSender,
|
||||
webrender_api_sender: WebrenderIpcSender,
|
||||
layout_is_busy: Arc<AtomicBool>,
|
||||
relayout_event: bool,
|
||||
prepare_for_screenshot: bool,
|
||||
|
|
|
@ -143,7 +143,7 @@ use script_traits::{MediaSessionActionType, MouseButton, MouseEventType, NewLayo
|
|||
use script_traits::{Painter, ProgressiveWebMetricType, ScriptMsg, ScriptThreadFactory};
|
||||
use script_traits::{ScriptToConstellationChan, TimerSchedulerMsg};
|
||||
use script_traits::{TouchEventType, TouchId, UntrustedNodeAddress, WheelDelta};
|
||||
use script_traits::{UpdatePipelineIdReason, WindowSizeData, WindowSizeType};
|
||||
use script_traits::{UpdatePipelineIdReason, WebrenderIpcSender, WindowSizeData, WindowSizeType};
|
||||
use servo_atoms::Atom;
|
||||
use servo_url::{ImmutableOrigin, MutableOrigin, ServoUrl};
|
||||
use std::borrow::Cow;
|
||||
|
@ -166,7 +166,7 @@ use time::{at_utc, get_time, precise_time_ns, Timespec};
|
|||
use url::Position;
|
||||
use webgpu::WebGPU;
|
||||
use webrender_api::units::LayoutPixel;
|
||||
use webrender_api::{DocumentId, RenderApiSender};
|
||||
use webrender_api::DocumentId;
|
||||
use webvr_traits::{WebVREvent, WebVRMsg};
|
||||
|
||||
pub type ImageCacheMsg = (PipelineId, PendingImageResponse);
|
||||
|
@ -657,7 +657,7 @@ pub struct ScriptThread {
|
|||
webrender_document: DocumentId,
|
||||
|
||||
/// Webrender API sender.
|
||||
webrender_api_sender: RenderApiSender,
|
||||
webrender_api_sender: WebrenderIpcSender,
|
||||
|
||||
/// Periodically print out on which events script threads spend their processing time.
|
||||
profile_script_events: bool,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue