mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Add WebRender integration to Servo.
WebRender is an experimental GPU accelerated rendering backend for Servo. The WebRender backend can be specified by running Servo with the -w option (otherwise the default rendering backend will be used). WebRender has many bugs, and missing features - but it is usable to browse most websites - please report any WebRender specific rendering bugs you encounter!
This commit is contained in:
parent
f7f0eea470
commit
c0531c312f
75 changed files with 2869 additions and 888 deletions
|
@ -17,6 +17,7 @@ use std::fmt;
|
|||
use url::Url;
|
||||
use util::geometry::{PagePx, ViewportPx};
|
||||
use webdriver_msg::{LoadStatus, WebDriverScriptCommand};
|
||||
use webrender_traits;
|
||||
|
||||
#[derive(Deserialize, Serialize)]
|
||||
pub struct ConstellationChan<T: Deserialize + Serialize>(pub IpcSender<T>);
|
||||
|
@ -207,7 +208,7 @@ pub enum WebDriverCommandMsg {
|
|||
TakeScreenshot(PipelineId, IpcSender<Option<Image>>),
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Eq, PartialEq, Serialize, HeapSizeOf)]
|
||||
#[derive(Clone, Copy, Deserialize, Eq, PartialEq, Serialize, HeapSizeOf)]
|
||||
pub enum PixelFormat {
|
||||
K8, // Luminance channel only
|
||||
KA8, // Luminance + alpha
|
||||
|
@ -228,6 +229,8 @@ pub struct Image {
|
|||
pub format: PixelFormat,
|
||||
#[ignore_heap_size_of = "Defined in ipc-channel"]
|
||||
pub bytes: IpcSharedMemory,
|
||||
#[ignore_heap_size_of = "Defined in webrender_traits"]
|
||||
pub id: Option<webrender_traits::ImageKey>,
|
||||
}
|
||||
|
||||
/// Similar to net::resource_thread::LoadData
|
||||
|
@ -353,3 +356,28 @@ impl fmt::Display for PipelineId {
|
|||
|
||||
#[derive(Clone, PartialEq, Eq, Copy, Hash, Debug, Deserialize, Serialize, HeapSizeOf)]
|
||||
pub struct SubpageId(pub u32);
|
||||
|
||||
pub trait ConvertPipelineIdToWebRender {
|
||||
fn to_webrender(&self) -> webrender_traits::PipelineId;
|
||||
}
|
||||
|
||||
pub trait ConvertPipelineIdFromWebRender {
|
||||
fn from_webrender(&self) -> PipelineId;
|
||||
}
|
||||
|
||||
impl ConvertPipelineIdToWebRender for PipelineId {
|
||||
fn to_webrender(&self) -> webrender_traits::PipelineId {
|
||||
let PipelineNamespaceId(namespace_id) = self.namespace_id;
|
||||
let PipelineIndex(index) = self.index;
|
||||
webrender_traits::PipelineId(namespace_id, index)
|
||||
}
|
||||
}
|
||||
|
||||
impl ConvertPipelineIdFromWebRender for webrender_traits::PipelineId {
|
||||
fn from_webrender(&self) -> PipelineId {
|
||||
PipelineId {
|
||||
namespace_id: PipelineNamespaceId(self.0),
|
||||
index: PipelineIndex(self.1),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue