Skip to content

Commit 71c3b34

Browse files
authored
Auto merge of servo#29987 - mrobinson:normalize-more-webrender-use-statements, r=jdm
normalize more webrender use statements - Use the WebRender clip chain API - Use explicit WebRender hit test items in legacy layout - Try to `use` WebRender types more <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [ ] These changes do not require tests because they do not change behavior. <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2 parents 734d8b3 + 3230162 commit 71c3b34

File tree

39 files changed

+330
-327
lines changed

39 files changed

+330
-327
lines changed

components/canvas/canvas_data.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ use std::sync::{Arc, Mutex};
2727
use style::properties::style_structs::Font as FontStyleStruct;
2828
use style::values::computed::font;
2929
use style_traits::values::ToCss;
30-
use webrender_api::units::RectExt as RectExt_;
30+
use webrender_api::units::{DeviceIntSize, RectExt as RectExt_};
31+
use webrender_api::{ImageData, ImageDescriptor, ImageDescriptorFlags, ImageFormat, ImageKey};
3132

3233
/// The canvas data stores a state machine for the current status of
3334
/// the path data and any relevant transformations that are
@@ -405,11 +406,11 @@ pub struct CanvasData<'a> {
405406
state: CanvasPaintState<'a>,
406407
saved_states: Vec<CanvasPaintState<'a>>,
407408
webrender_api: Box<dyn WebrenderApi>,
408-
image_key: Option<webrender_api::ImageKey>,
409+
image_key: Option<ImageKey>,
409410
/// An old webrender image key that can be deleted when the next epoch ends.
410-
old_image_key: Option<webrender_api::ImageKey>,
411+
old_image_key: Option<ImageKey>,
411412
/// An old webrender image key that can be deleted when the current epoch ends.
412-
very_old_image_key: Option<webrender_api::ImageKey>,
413+
very_old_image_key: Option<ImageKey>,
413414
font_cache_thread: Mutex<FontCacheThread>,
414415
}
415416

@@ -1107,15 +1108,15 @@ impl<'a> CanvasData<'a> {
11071108
pub fn send_data(&mut self, chan: IpcSender<CanvasImageData>) {
11081109
let size = self.drawtarget.get_size();
11091110

1110-
let descriptor = webrender_api::ImageDescriptor {
1111-
size: webrender_api::units::DeviceIntSize::new(size.width, size.height),
1111+
let descriptor = ImageDescriptor {
1112+
size: DeviceIntSize::new(size.width, size.height),
11121113
stride: None,
1113-
format: webrender_api::ImageFormat::BGRA8,
1114+
format: ImageFormat::BGRA8,
11141115
offset: 0,
1115-
flags: webrender_api::ImageDescriptorFlags::empty(),
1116+
flags: ImageDescriptorFlags::empty(),
11161117
};
11171118
let data = self.drawtarget.snapshot_data_owned();
1118-
let data = webrender_api::ImageData::Raw(Arc::new(data));
1119+
let data = ImageData::Raw(Arc::new(data));
11191120

11201121
let mut updates = vec![];
11211122

components/canvas/canvas_paint_thread.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pub enum ImageUpdate {
2727
}
2828

2929
pub trait WebrenderApi {
30-
fn generate_key(&self) -> Result<webrender_api::ImageKey, ()>;
30+
fn generate_key(&self) -> Result<ImageKey, ()>;
3131
fn update_images(&self, updates: Vec<ImageUpdate>);
3232
fn clone(&self) -> Box<dyn WebrenderApi>;
3333
}

components/canvas/webgl_mode/inprocess.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use surfman::SurfaceTexture;
1616
use surfman_chains::SwapChains;
1717
use surfman_chains_api::SwapChainAPI;
1818
use surfman_chains_api::SwapChainsAPI;
19+
use webrender_api::{DocumentId, RenderApiSender};
1920
use webrender_surfman::WebrenderSurfman;
2021
use webrender_traits::{
2122
WebrenderExternalImageApi, WebrenderExternalImageRegistry, WebrenderImageSource,
@@ -33,8 +34,8 @@ impl WebGLComm {
3334
/// Creates a new `WebGLComm` object.
3435
pub fn new(
3536
surfman: WebrenderSurfman,
36-
webrender_api_sender: webrender_api::RenderApiSender,
37-
webrender_doc: webrender_api::DocumentId,
37+
webrender_api_sender: RenderApiSender,
38+
webrender_doc: DocumentId,
3839
external_images: Arc<Mutex<WebrenderExternalImageRegistry>>,
3940
api_type: GlType,
4041
) -> WebGLComm {

components/canvas/webgl_thread.rs

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ use surfman::SurfaceInfo;
6969
use surfman::SurfaceType;
7070
use surfman_chains::SwapChains;
7171
use surfman_chains_api::SwapChainsAPI;
72+
use webrender_api::{
73+
units::DeviceIntSize, DirtyRect, DocumentId, ExternalImageData, ExternalImageId,
74+
ExternalImageType, ImageData, ImageDescriptor, ImageDescriptorFlags, ImageFormat, ImageKey,
75+
RenderApi, RenderApiSender, TextureTarget, Transaction,
76+
};
7277
use webrender_traits::{WebrenderExternalImageRegistry, WebrenderImageHandlerType};
7378
use webxr::SurfmanGL as WebXRSurfman;
7479
use webxr_api::ContextId as WebXRContextId;
@@ -229,9 +234,9 @@ impl Default for GLState {
229234
pub(crate) struct WebGLThread {
230235
/// The GPU device.
231236
device: Device,
232-
/// Channel used to generate/update or delete `webrender_api::ImageKey`s.
233-
webrender_api: webrender_api::RenderApi,
234-
webrender_doc: webrender_api::DocumentId,
237+
/// Channel used to generate/update or delete `ImageKey`s.
238+
webrender_api: RenderApi,
239+
webrender_doc: DocumentId,
235240
/// Map of live WebGLContexts.
236241
contexts: FnvHashMap<WebGLContextId, GLContextData>,
237242
/// Cached information for WebGLContexts.
@@ -255,8 +260,8 @@ pub(crate) struct WebGLThread {
255260

256261
/// The data required to initialize an instance of the WebGLThread type.
257262
pub(crate) struct WebGLThreadInit {
258-
pub webrender_api_sender: webrender_api::RenderApiSender,
259-
pub webrender_doc: webrender_api::DocumentId,
263+
pub webrender_api_sender: RenderApiSender,
264+
pub webrender_doc: DocumentId,
260265
pub external_images: Arc<Mutex<WebrenderExternalImageRegistry>>,
261266
pub sender: WebGLSender<WebGLMsg>,
262267
pub receiver: WebGLReceiver<WebGLMsg>,
@@ -744,7 +749,7 @@ impl WebGLThread {
744749
fn remove_webgl_context(&mut self, context_id: WebGLContextId) {
745750
// Release webrender image keys.
746751
if let Some(info) = self.cached_context_info.remove(&context_id) {
747-
let mut txn = webrender_api::Transaction::new();
752+
let mut txn = Transaction::new();
748753
txn.delete_image(info.image_key);
749754
self.webrender_api.send_transaction(self.webrender_doc, txn)
750755
}
@@ -923,66 +928,63 @@ impl WebGLThread {
923928

924929
/// Creates a `webrender_api::ImageKey` that uses shared textures.
925930
fn create_wr_external_image(
926-
webrender_api: &mut webrender_api::RenderApi,
927-
webrender_doc: webrender_api::DocumentId,
931+
webrender_api: &mut RenderApi,
932+
webrender_doc: DocumentId,
928933
size: Size2D<i32>,
929934
alpha: bool,
930935
context_id: WebGLContextId,
931-
target: webrender_api::TextureTarget,
932-
) -> webrender_api::ImageKey {
936+
target: TextureTarget,
937+
) -> ImageKey {
933938
let descriptor = Self::image_descriptor(size, alpha);
934939
let data = Self::external_image_data(context_id, target);
935940

936941
let image_key = webrender_api.generate_image_key();
937-
let mut txn = webrender_api::Transaction::new();
942+
let mut txn = Transaction::new();
938943
txn.add_image(image_key, descriptor, data, None);
939944
webrender_api.send_transaction(webrender_doc, txn);
940945

941946
image_key
942947
}
943948

944-
/// Updates a `webrender_api::ImageKey` that uses shared textures.
949+
/// Updates a `ImageKey` that uses shared textures.
945950
fn update_wr_external_image(
946-
webrender_api: &mut webrender_api::RenderApi,
947-
webrender_doc: webrender_api::DocumentId,
951+
webrender_api: &mut RenderApi,
952+
webrender_doc: DocumentId,
948953
size: Size2D<i32>,
949954
alpha: bool,
950955
context_id: WebGLContextId,
951-
image_key: webrender_api::ImageKey,
952-
target: webrender_api::TextureTarget,
956+
image_key: ImageKey,
957+
target: TextureTarget,
953958
) {
954959
let descriptor = Self::image_descriptor(size, alpha);
955960
let data = Self::external_image_data(context_id, target);
956961

957-
let mut txn = webrender_api::Transaction::new();
958-
txn.update_image(image_key, descriptor, data, &webrender_api::DirtyRect::All);
962+
let mut txn = Transaction::new();
963+
txn.update_image(image_key, descriptor, data, &DirtyRect::All);
959964
webrender_api.send_transaction(webrender_doc, txn);
960965
}
961966

962-
/// Helper function to create a `webrender_api::ImageDescriptor`.
963-
fn image_descriptor(size: Size2D<i32>, alpha: bool) -> webrender_api::ImageDescriptor {
964-
let mut flags = webrender_api::ImageDescriptorFlags::empty();
965-
flags.set(webrender_api::ImageDescriptorFlags::IS_OPAQUE, !alpha);
966-
webrender_api::ImageDescriptor {
967-
size: webrender_api::units::DeviceIntSize::new(size.width, size.height),
967+
/// Helper function to create a `ImageDescriptor`.
968+
fn image_descriptor(size: Size2D<i32>, alpha: bool) -> ImageDescriptor {
969+
let mut flags = ImageDescriptorFlags::empty();
970+
flags.set(ImageDescriptorFlags::IS_OPAQUE, !alpha);
971+
ImageDescriptor {
972+
size: DeviceIntSize::new(size.width, size.height),
968973
stride: None,
969-
format: webrender_api::ImageFormat::BGRA8,
974+
format: ImageFormat::BGRA8,
970975
offset: 0,
971976
flags,
972977
}
973978
}
974979

975-
/// Helper function to create a `webrender_api::ImageData::External` instance.
976-
fn external_image_data(
977-
context_id: WebGLContextId,
978-
target: webrender_api::TextureTarget,
979-
) -> webrender_api::ImageData {
980-
let data = webrender_api::ExternalImageData {
981-
id: webrender_api::ExternalImageId(context_id.0 as u64),
980+
/// Helper function to create a `ImageData::External` instance.
981+
fn external_image_data(context_id: WebGLContextId, target: TextureTarget) -> ImageData {
982+
let data = ExternalImageData {
983+
id: ExternalImageId(context_id.0 as u64),
982984
channel_index: 0,
983-
image_type: webrender_api::ExternalImageType::TextureHandle(target),
985+
image_type: ExternalImageType::TextureHandle(target),
984986
};
985-
webrender_api::ImageData::External(data)
987+
ImageData::External(data)
986988
}
987989

988990
/// Gets the GLSL Version supported by a GLContext.
@@ -1006,14 +1008,14 @@ impl WebGLThread {
10061008
/// Helper struct to store cached WebGLContext information.
10071009
struct WebGLContextInfo {
10081010
/// Currently used WebRender image key.
1009-
image_key: webrender_api::ImageKey,
1011+
image_key: ImageKey,
10101012
}
10111013

10121014
// TODO(pcwalton): Add `GL_TEXTURE_EXTERNAL_OES`?
1013-
fn current_wr_texture_target(device: &Device) -> webrender_api::TextureTarget {
1015+
fn current_wr_texture_target(device: &Device) -> TextureTarget {
10141016
match device.surface_gl_texture_target() {
1015-
gl::TEXTURE_RECTANGLE => webrender_api::TextureTarget::Rect,
1016-
_ => webrender_api::TextureTarget::Default,
1017+
gl::TEXTURE_RECTANGLE => TextureTarget::Rect,
1018+
_ => TextureTarget::Default,
10171019
}
10181020
}
10191021

components/canvas_traits/canvas.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use serde_bytes::ByteBuf;
99
use std::default::Default;
1010
use std::str::FromStr;
1111
use style::properties::style_structs::Font as FontStyleStruct;
12+
use webrender_api::ImageKey;
1213

1314
#[derive(Clone, Debug, Deserialize, Serialize)]
1415
pub enum FillRule {
@@ -30,7 +31,7 @@ pub enum CanvasMsg {
3031

3132
#[derive(Clone, Debug, Deserialize, Serialize)]
3233
pub struct CanvasImageData {
33-
pub image_key: webrender_api::ImageKey,
34+
pub image_key: ImageKey,
3435
}
3536

3637
#[derive(Debug, Deserialize, Serialize)]

0 commit comments

Comments
 (0)