mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
dependencies: Upgrade to WebRender 0.64 (#31486)
This brings the version of WebRender used in Servo up-to-date with Gecko upstream. The big change here is that HiDPI is no longer handled via WebRender. Instead this happens via a scale applied to the root layer in the compositor. In addition to this change, various changes are made to Servo to adapt to the new WebRender API. Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
This commit is contained in:
parent
4597aeae5f
commit
ad37a54f59
102 changed files with 704 additions and 600 deletions
|
@ -21,7 +21,7 @@ media-gstreamer = ["servo-media-gstreamer", "gstreamer"]
|
|||
multiview = ["compositing/multiview", "constellation/multiview"]
|
||||
native-bluetooth = ["bluetooth/native-bluetooth"]
|
||||
no-wgl = ["canvas/no-wgl"]
|
||||
no_static_freetype = ["webrender/no_static_freetype"]
|
||||
dynamic_freetype = ["webrender/dynamic_freetype"]
|
||||
profilemozjs = ["script/profilemozjs"]
|
||||
refcell_backtrace = ["script/refcell_backtrace"]
|
||||
webdriver = ["webdriver_server"]
|
||||
|
|
|
@ -88,7 +88,7 @@ use surfman::{GLApi, GLVersion};
|
|||
#[cfg(target_os = "linux")]
|
||||
use surfman::{NativeConnection, NativeContext};
|
||||
use webrender::{RenderApiSender, ShaderPrecacheFlags};
|
||||
use webrender_api::{DocumentId, FontInstanceKey, FontKey, ImageKey};
|
||||
use webrender_api::{ColorF, DocumentId, FontInstanceKey, FontKey, FramePublishId, ImageKey};
|
||||
use webrender_traits::{
|
||||
WebrenderExternalImageHandlers, WebrenderExternalImageRegistry, WebrenderImageHandlerType,
|
||||
};
|
||||
|
@ -205,7 +205,7 @@ impl webrender_api::RenderNotifier for RenderNotifier {
|
|||
_document_id: DocumentId,
|
||||
_scrolled: bool,
|
||||
composite_needed: bool,
|
||||
_render_time_ns: Option<u64>,
|
||||
_frame_publish_id: FramePublishId,
|
||||
) {
|
||||
self.compositor_proxy
|
||||
.send(CompositorMsg::NewWebRenderFrameReady(composite_needed));
|
||||
|
@ -310,7 +310,7 @@ where
|
|||
|
||||
let coordinates: compositing::windowing::EmbedderCoordinates = window.get_coordinates();
|
||||
let device_pixel_ratio = coordinates.hidpi_factor.get();
|
||||
let viewport_size = coordinates.viewport.size.to_f32() / device_pixel_ratio;
|
||||
let viewport_size = coordinates.viewport.size().to_f32() / device_pixel_ratio;
|
||||
|
||||
let (mut webrender, webrender_api_sender) = {
|
||||
let mut debug_flags = webrender::DebugFlags::empty();
|
||||
|
@ -320,11 +320,17 @@ where
|
|||
);
|
||||
|
||||
let render_notifier = Box::new(RenderNotifier::new(compositor_proxy.clone()));
|
||||
webrender::Renderer::new(
|
||||
let clear_color = servo_config::pref!(shell.background_color.rgba);
|
||||
let clear_color = ColorF::new(
|
||||
clear_color[0] as f32,
|
||||
clear_color[1] as f32,
|
||||
clear_color[2] as f32,
|
||||
clear_color[3] as f32,
|
||||
);
|
||||
webrender::create_webrender_instance(
|
||||
webrender_gl.clone(),
|
||||
render_notifier,
|
||||
webrender::RendererOptions {
|
||||
device_pixel_ratio,
|
||||
webrender::WebRenderOptions {
|
||||
resource_override_path: opts.shaders_dir.clone(),
|
||||
enable_aa: !opts.debug.disable_text_antialiasing,
|
||||
debug_flags: debug_flags,
|
||||
|
@ -336,7 +342,7 @@ where
|
|||
enable_subpixel_aa: pref!(gfx.subpixel_text_antialiasing.enabled) &&
|
||||
!opts.debug.disable_subpixel_text_antialiasing,
|
||||
allow_texture_swizzling: pref!(gfx.texture_swizzling.enabled),
|
||||
clear_color: None,
|
||||
clear_color,
|
||||
..Default::default()
|
||||
},
|
||||
None,
|
||||
|
@ -345,7 +351,7 @@ where
|
|||
};
|
||||
|
||||
let webrender_api = webrender_api_sender.create_api();
|
||||
let webrender_document = webrender_api.add_document(coordinates.get_viewport().size);
|
||||
let webrender_document = webrender_api.add_document(coordinates.get_viewport().size());
|
||||
|
||||
// Important that this call is done in a single-threaded fashion, we
|
||||
// can't defer it after `create_constellation` has started.
|
||||
|
@ -845,7 +851,7 @@ where
|
|||
}
|
||||
|
||||
pub fn pinch_zoom_level(&self) -> f32 {
|
||||
self.compositor.pinch_zoom_level()
|
||||
self.compositor.pinch_zoom_level().get()
|
||||
}
|
||||
|
||||
pub fn setup_logging(&self) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue